aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore16
-rw-r--r--Makefile.am2
-rw-r--r--README19
-rw-r--r--configure.ac23
-rw-r--r--docs/amps.html4
-rw-r--r--docs/b-netz.html4
-rw-r--r--docs/c-netz.html6
-rw-r--r--docs/datenklo.html64
-rw-r--r--docs/datenklo.jpgbin0 -> 574654 bytes
-rw-r--r--docs/datenklo2.jpgbin0 -> 574506 bytes
-rw-r--r--docs/datenklo_small.jpgbin0 -> 38527 bytes
-rw-r--r--docs/eurosignal.html290
-rw-r--r--docs/eurosignal.jpgbin0 -> 481661 bytes
-rw-r--r--docs/eurosignal.wavbin0 -> 2387980 bytes
-rw-r--r--docs/eurosignal_e299.txt106
-rwxr-xr-xdocs/eurosignal_es1.tiffbin0 -> 80811 bytes
-rw-r--r--docs/eurosignal_fre3.txt100
-rw-r--r--docs/eurosignal_fu20.txt124
-rw-r--r--docs/eurosignal_rom.jpgbin0 -> 312342 bytes
-rw-r--r--docs/eurosignal_small.jpgbin0 -> 178130 bytes
-rw-r--r--docs/imts-attache.jpgbin0 -> 107716 bytes
-rw-r--r--docs/imts.html758
-rw-r--r--docs/imts.jpgbin0 -> 143649 bytes
-rw-r--r--docs/imts_small.jpgbin0 -> 50328 bytes
-rw-r--r--docs/index.html21
-rw-r--r--docs/install.html2
-rw-r--r--docs/radiocom2000.html2
-rw-r--r--docs/sdr.html6
-rw-r--r--docs/sim-attiny85.jpgbin0 -> 435292 bytes
-rw-r--r--docs/sim-contacts.jpgbin0 -> 113969 bytes
-rw-r--r--docs/sim-rs232.jpgbin0 -> 337362 bytes
-rw-r--r--docs/sim.html472
-rw-r--r--docs/sim.jpgbin0 -> 176303 bytes
-rw-r--r--docs/sim_layout.pngbin0 -> 6553 bytes
-rw-r--r--docs/software.html4
-rw-r--r--docs/style.css24
-rw-r--r--docs/tv.html5
-rw-r--r--docs/zeitansage.mp3bin0 -> 133704 bytes
-rw-r--r--extra/Makefile.am12
-rw-r--r--extra/README58
-rw-r--r--extra/main.c257
-rw-r--r--extra/programmer/programmer.ino (renamed from sim/simcard.ino)0
-rw-r--r--extra/simulator/simulator.ino126
-rwxr-xr-xlayout/telekarte.brd1786
-rwxr-xr-xlayout/telekarte.pdfbin0 -> 18567 bytes
-rwxr-xr-xlayout/telekarte.sch4796
-rw-r--r--sim/Makefile.am10
-rw-r--r--sim/README15
-rw-r--r--sim/sim.c144
-rw-r--r--src/Makefile.am21
-rw-r--r--src/amps/Makefile.am4
-rw-r--r--src/amps/amps.c35
-rw-r--r--src/amps/amps.h19
-rw-r--r--src/amps/amps_tacs_main.c8
-rw-r--r--src/amps/dsp.c24
-rw-r--r--src/amps/frame.c8
-rw-r--r--src/amps/main.c2
-rw-r--r--src/amps/main.h2
-rw-r--r--src/amps/sysinfo.c10
-rw-r--r--src/amps/sysinfo.h4
-rw-r--r--src/amps/transaction.c13
-rw-r--r--src/amps/transaction.h5
-rw-r--r--src/anetz/Makefile.am4
-rw-r--r--src/anetz/anetz.c24
-rw-r--r--src/anetz/anetz.h2
-rw-r--r--src/anetz/dsp.c20
-rw-r--r--src/anetz/main.c4
-rw-r--r--src/bnetz/Makefile.am5
-rw-r--r--src/bnetz/bnetz.c23
-rw-r--r--src/bnetz/bnetz.h9
-rw-r--r--src/bnetz/dialer.c17
-rw-r--r--src/bnetz/dsp.c49
-rw-r--r--src/bnetz/main.c4
-rw-r--r--src/cnetz/Makefile.am12
-rw-r--r--src/cnetz/cnetz.c278
-rw-r--r--src/cnetz/cnetz.h23
-rw-r--r--src/cnetz/database.c2
-rw-r--r--src/cnetz/dsp.c152
-rw-r--r--src/cnetz/dsp.h4
-rw-r--r--src/cnetz/fsk_demod.c100
-rw-r--r--src/cnetz/fsk_demod.h6
-rw-r--r--src/cnetz/main.c99
-rw-r--r--src/cnetz/stations.c2408
-rw-r--r--src/cnetz/stations.h6
-rw-r--r--src/cnetz/sysinfo.c54
-rw-r--r--src/cnetz/sysinfo.h6
-rw-r--r--src/cnetz/telegramm.c94
-rw-r--r--src/cnetz/telegramm.h4
-rw-r--r--src/cnetz/transaction.c10
-rw-r--r--src/cnetz/transaction.h2
-rw-r--r--src/datenklo/Makefile.am35
-rw-r--r--src/datenklo/am791x.c1266
-rw-r--r--src/datenklo/am791x.h107
-rw-r--r--src/datenklo/datenklo.c1696
-rw-r--r--src/datenklo/datenklo.h92
-rw-r--r--src/datenklo/device.c559
-rw-r--r--src/datenklo/device.h7
-rw-r--r--src/datenklo/fioc.h32
-rw-r--r--src/datenklo/main.c320
-rw-r--r--src/datenklo/uart.c166
-rw-r--r--src/datenklo/uart.h34
-rw-r--r--src/eurosignal/Makefile.am54
-rw-r--r--src/eurosignal/dsp.c319
-rw-r--r--src/eurosignal/dsp.h5
-rw-r--r--src/eurosignal/es_ges.c1669
-rw-r--r--src/eurosignal/es_ges.h3
-rw-r--r--src/eurosignal/es_kaudn.c2202
-rw-r--r--src/eurosignal/es_kaudn.h3
-rw-r--r--src/eurosignal/es_mitte.c1703
-rw-r--r--src/eurosignal/es_mitte.h3
-rw-r--r--src/eurosignal/es_teilges.c2261
-rw-r--r--src/eurosignal/es_teilges.h3
-rw-r--r--src/eurosignal/eurosignal.c802
-rw-r--r--src/eurosignal/eurosignal.h89
-rw-r--r--src/eurosignal/image.c99
-rw-r--r--src/eurosignal/main.c255
-rw-r--r--src/fuvst/Makefile.am82
-rwxr-xr-xsrc/fuvst/fuvst.c1451
-rwxr-xr-xsrc/fuvst/fuvst.h30
-rw-r--r--src/fuvst/image.c82
-rwxr-xr-xsrc/fuvst/main.c281
-rwxr-xr-xsrc/fuvst/mup.c1136
-rwxr-xr-xsrc/fuvst/mup.h145
-rw-r--r--src/fuvst/sniffer.c272
-rw-r--r--src/fuvst/systemmeldungen.c21901
-rw-r--r--src/fuvst/systemmeldungen.h3
-rw-r--r--src/imts/Makefile.am4
-rw-r--r--src/imts/dialer.c5
-rw-r--r--src/imts/dsp.c26
-rw-r--r--src/imts/imts.c43
-rw-r--r--src/imts/imts.h2
-rw-r--r--src/imts/main.c12
-rw-r--r--src/jolly/Makefile.am4
-rw-r--r--src/jolly/dsp.c24
-rw-r--r--src/jolly/jolly.c26
-rw-r--r--src/jolly/jolly.h2
-rw-r--r--src/jolly/main.c5
-rw-r--r--src/jtacs/Makefile.am4
-rw-r--r--src/jtacs/main.c2
-rw-r--r--src/libam/am.c11
-rw-r--r--src/libam/am.h2
-rwxr-xr-x[-rw-r--r--]src/libdebug/debug.c45
-rw-r--r--src/libdebug/debug.h39
-rw-r--r--src/libdisplay/display_iq.c4
-rw-r--r--src/libdisplay/display_measurements.c10
-rw-r--r--src/libdisplay/display_spectrum.c6
-rw-r--r--src/libdisplay/display_status.c2
-rw-r--r--src/libdisplay/display_wave.c4
-rw-r--r--src/libdtmf/dtmf_decode.c38
-rw-r--r--src/libdtmf/dtmf_decode.h2
-rw-r--r--src/libemphasis/emphasis.c2
-rw-r--r--src/libfilter/Makefile.am4
-rw-r--r--src/libfilter/fir_filter.c197
-rw-r--r--src/libfilter/fir_filter.h21
-rw-r--r--src/libfm/fm.c4
-rw-r--r--src/libfsk/fsk.c277
-rw-r--r--src/libfsk/fsk.h35
-rw-r--r--src/libg711/Makefile.am7
-rw-r--r--src/libg711/g711.c537
-rw-r--r--src/libg711/g711.h17
-rw-r--r--src/libjitter/jitter.c12
-rw-r--r--src/libjitter/jitter.h1
-rw-r--r--src/libmncc/Makefile.am15
-rw-r--r--src/libmncc/mncc.h347
-rw-r--r--src/libmncc/mncc_console.c505
-rw-r--r--src/libmncc/mncc_cross.c240
-rw-r--r--src/libmncc/mncc_cross.h5
-rw-r--r--src/libmncc/mncc_sock.c239
-rw-r--r--src/libmncc/mncc_sock.h7
-rw-r--r--src/libmobile/Makefile.am3
-rw-r--r--src/libmobile/call.c643
-rw-r--r--src/libmobile/call.h11
-rw-r--r--src/libmobile/cause.c (renamed from src/libmncc/cause.c)6
-rw-r--r--src/libmobile/cause.h (renamed from src/libmncc/cause.h)1
-rw-r--r--src/libmobile/console.c605
-rw-r--r--src/libmobile/console.h (renamed from src/libmncc/mncc_console.h)3
-rw-r--r--src/libmobile/main_mobile.c190
-rw-r--r--src/libmobile/main_mobile.h6
-rw-r--r--src/libmobile/sender.c59
-rw-r--r--src/libmobile/sender.h20
-rw-r--r--src/libmobile/testton.c (renamed from src/libmncc/testton.c)0
-rw-r--r--src/libmobile/testton.h (renamed from src/libmncc/testton.h)0
-rw-r--r--src/libmtp/Makefile.am10
-rw-r--r--src/libmtp/crc16.c38
-rw-r--r--src/libmtp/crc16.h3
-rwxr-xr-xsrc/libmtp/layer2.c1348
-rw-r--r--src/libmtp/layer3.c103
-rw-r--r--src/libmtp/mtp.c107
-rw-r--r--src/libmtp/mtp.h142
-rw-r--r--src/liboptions/options.c86
-rw-r--r--src/libosmocc/Makefile.am15
-rw-r--r--src/libosmocc/cause.c252
-rw-r--r--src/libosmocc/cause.h5
-rw-r--r--src/libosmocc/endpoint.c1476
-rw-r--r--src/libosmocc/endpoint.h128
-rw-r--r--src/libosmocc/helper.c171
-rw-r--r--src/libosmocc/helper.h13
-rw-r--r--src/libosmocc/message.c879
-rw-r--r--src/libosmocc/message.h437
-rw-r--r--src/libosmocc/rtp.c399
-rw-r--r--src/libosmocc/rtp.h8
-rw-r--r--src/libosmocc/screen.c684
-rw-r--r--src/libosmocc/screen.h7
-rw-r--r--src/libosmocc/sdp.c539
-rw-r--r--src/libosmocc/sdp.h6
-rw-r--r--src/libosmocc/session.c639
-rw-r--r--src/libosmocc/session.h119
-rw-r--r--src/libosmocc/socket.c583
-rw-r--r--src/libosmocc/socket.h44
-rw-r--r--src/libsamplerate/samplerate.c4
-rw-r--r--src/libsdr/sdr.c97
-rw-r--r--src/libsdr/sdr.h2
-rw-r--r--src/libsdr/sdr_config.c2
-rw-r--r--src/libsdr/uhd.c10
-rw-r--r--src/libsendevolumenregler/sendevolumenregler.c22
-rw-r--r--src/libsendevolumenregler/sendevolumenregler.h4
-rw-r--r--src/libserial/Makefile.am6
-rwxr-xr-xsrc/libserial/serial.c460
-rwxr-xr-xsrc/libserial/serial.h38
-rw-r--r--src/libsound/sound.h2
-rw-r--r--src/libsound/sound_alsa.c121
-rw-r--r--src/libsquelch/squelch.c1
-rw-r--r--src/libv27/Makefile.am9
-rw-r--r--src/libv27/modem.c89
-rw-r--r--src/libv27/modem.h18
-rw-r--r--src/libv27/psk.c459
-rw-r--r--src/libv27/psk.h48
-rw-r--r--src/libv27/scrambler.c163
-rw-r--r--src/libv27/scrambler.h13
-rw-r--r--src/libwave/wave.c6
-rw-r--r--src/nmt/Makefile.am4
-rw-r--r--src/nmt/countries.c8
-rw-r--r--src/nmt/dms.c14
-rw-r--r--src/nmt/dms.h1
-rw-r--r--src/nmt/dsp.c31
-rw-r--r--src/nmt/frame.c6
-rw-r--r--src/nmt/main.c6
-rw-r--r--src/nmt/nmt.c25
-rw-r--r--src/nmt/nmt.h10
-rw-r--r--src/nmt/sms.c4
-rw-r--r--src/r2000/Makefile.am4
-rw-r--r--src/r2000/dsp.c42
-rw-r--r--src/r2000/frame.c2
-rw-r--r--src/r2000/main.c6
-rw-r--r--src/r2000/r2000.c32
-rw-r--r--src/r2000/r2000.h14
-rw-r--r--src/radio/main.c21
-rw-r--r--src/radio/radio.c98
-rw-r--r--src/radio/radio.h11
-rw-r--r--src/sim/Makefile.am18
-rw-r--r--src/sim/eeprom.h33
-rw-r--r--src/sim/image.c97
-rw-r--r--src/sim/main.c497
-rw-r--r--src/sim/sim.c1444
-rw-r--r--src/sim/sim.h148
-rw-r--r--src/sim/sim.ino287
-rw-r--r--src/sim/sniffer.c798
-rw-r--r--src/sim/sniffer.h26
-rw-r--r--src/tacs/Makefile.am4
-rw-r--r--src/tacs/main.c2
-rw-r--r--src/test/Makefile.am18
-rw-r--r--src/test/test_dms.c2
-rw-r--r--src/test/test_filter.c42
-rw-r--r--src/test/test_sms.c2
-rw-r--r--src/test/test_v27scrambler.c133
-rw-r--r--src/tv/Makefile.am3
-rw-r--r--src/tv/channels.c178
-rw-r--r--src/tv/channels.h2
-rw-r--r--src/tv/main.c13
-rw-r--r--src/zeitansage/Makefile.am49
-rw-r--r--src/zeitansage/image.c91
-rw-r--r--src/zeitansage/main.c105
-rw-r--r--src/zeitansage/samples.c129283
-rw-r--r--src/zeitansage/samples.h3
-rw-r--r--src/zeitansage/zeitansage.c406
-rw-r--r--src/zeitansage/zeitansage.h29
276 files changed, 197117 insertions, 3090 deletions
diff --git a/.gitignore b/.gitignore
index 8dc08ca..6d30200 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,16 +41,21 @@ src/libfm/libfm.a
src/libfilter/libfilter.a
src/libwave/libwave.a
src/libfft/libfft.a
-src/libmncc/libmncc.a
src/libsound/libsound.a
src/libsdr/libsdr.a
src/libsample/libsample.a
src/libam/libam.a
src/libclipper/libclipper.a
+src/libserial/libserial.a
+src/libv27/libv27.a
+src/libmtp/libmtp.a
+src/libosmocc/libosmocc.a
+src/libg711/libg711.a
src/anetz/libgermanton.a
src/anetz/anetz
src/bnetz/bnetz
src/bnetz/bnetz-dialer
+src/cnetz/libcnetztones.a
src/cnetz/cnetz
src/nmt/libdmssms.a
src/nmt/nmt
@@ -63,9 +68,15 @@ src/r2000/radiocom2000
src/imts/imts
src/imts/imts-dialer
src/jolly/jollycom
+src/eurosignal/eurosignal
src/tv/osmotv
src/radio/osmoradio
-sim/cnetz_sim
+src/datenklo/datenklo
+src/zeitansage/zeitansage
+src/sim/cnetz_sim
+src/fuvst/fuvst
+src/fuvst/fuvst_sniffer
+extra/cnetz_memory_card_generator
src/test/test_filter
src/test/test_sendevolumenregler
src/test/test_compandor
@@ -75,3 +86,4 @@ src/test/test_dms
src/test/test_sms
src/test/test_performance
src/test/test_hagelbarger
+src/test/test_v27scrambler
diff --git a/Makefile.am b/Makefile.am
index 1073c14..18f4894 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src sim
+SUBDIRS = src extra
diff --git a/README b/README
index 96372fc..66777d1 100644
--- a/README
+++ b/README
@@ -14,7 +14,15 @@ generated simultaniously using SDR. Currently supported networks:
* JTACS (Japanese version of TACS)
* Radiocom 2000 (French network)
* IMTS / MTS ((Improved) Mobile Telephone Service)
+ * Eurosignal (ERuRD paging service)
* JollyCom (Unofficial network, invented by the author)
+ * C-Netz BSC (Connecting to a C-Netz Base Station)
+
+Additionally the following communication services are implemented:
+
+ * TV Transmitter with test Images
+ * Radio transmitter / receiver
+ * Analog Modem Emulation (AM7911)
USE AT YOUR OWN RISK!
@@ -29,18 +37,18 @@ a BSA44 (magnetic card C-Netz hackable phone) back in the 90's.
Andy Zauner for providing signaling specification of C-Netz back in the 90's.
-Hans Wigger for providing valuable informations about A-Netz and B-Netz and
+Hans Wigger for providing valuable information about A-Netz and B-Netz and
helping me to get an A-Netz phone.
-Stephan Hessberger for his work on oebl.de, that provides valuable informations
-about A-Netz, B-Netz and C-Netz.
+Stephan Hessberger for his work on oebl.de, that provides valuable information
+about A-Netz, B-Netz, C-Netz, Eurosignal and much more.
Friedhelm Hillebrand for providing complete specification of the mobile phone
of C-Netz.
Mikko Ristila for providing newer NMT specs (with DMS/SMS specifications).
-Dieter Spaar and Mark Atherton for prividing AMPS informations and recordings
+Dieter Spaar and Mark Atherton for providing AMPS information and recordings
to verify and debug AMPS support.
See http://www.idesignz.org/AMPS/AMPS_BS.html for first base station
implementation of AMPS.
@@ -57,3 +65,6 @@ Dieter Spaar providing TACS recordings to verify and debug TACS support.
Hans Wigger providing Radiocom 2000 recordings, to reverse-enigeer the standard,
which seems not to exist anymore...
+Peter, Peter and Friedhelm and Stephan for providing documentation and hardware
+for C-Netz Base Station and other C-Netz documents.
+
diff --git a/configure.ac b/configure.ac
index ed78ff0..239f453 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,21 +32,29 @@ AC_ARG_WITH([alsa], [AS_HELP_STRING([--with-alsa], [compile with Alsa driver @<:
AC_ARG_WITH([uhd], [AS_HELP_STRING([--with-uhd], [compile with UHD driver @<:@default=check@:>@]) ], [], [with_uhd="check"])
AC_ARG_WITH([soapy], [AS_HELP_STRING([--with-soapy], [compile with SoapySDR driver @<:@default=check@:>@]) ], [], [with_soapy="check"])
AC_ARG_WITH([imagemagick], [AS_HELP_STRING([--with-imagemagick], [compile with ImageMagick support @<:@default=check@:>@]) ], [], [with_imagemagick="check"])
+AC_ARG_WITH([fuse], [AS_HELP_STRING([--with-fuse], [compile with FUSE support @<:@default=check@:>@]) ], [], [with_fuse="check"])
AS_IF([test "x$with_alsa" != xno], [PKG_CHECK_MODULES(ALSA, alsa >= 1.0, with_alsa=yes, with_alsa=no)])
AS_IF([test "x$with_uhd" != xno], [PKG_CHECK_MODULES(UHD, uhd >= 3.0.0, with_sdr=yes with_uhd=yes, with_uhd=no)])
AS_IF([test "x$with_soapy" != xno], [PKG_CHECK_MODULES(SOAPY, SoapySDR >= 0.5.0, with_sdr=yes with_soapy=yes, with_soapy=no)])
AS_IF([test "x$with_imagemagick" != xno], [PKG_CHECK_MODULES(IMAGEMAGICK, ImageMagick >= 7.0.0, with_imagemagick=yes, with_imagemagick=no)])
+AS_IF([test "x$with_fuse" != xno], with_fuse=check)
+AS_IF([test "x$with_fuse" == xcheck], [PKG_CHECK_MODULES(FUSE, fuse3 >= 0.30.0, with_fuse=yes, with_fuse=check)])
+AS_IF([test "x$with_fuse" == xcheck], [PKG_CHECK_MODULES(FUSE, fuse2 >= 0.29.0, with_fuse=yes, with_fuse=check)])
+AS_IF([test "x$with_fuse" == xcheck], [PKG_CHECK_MODULES(FUSE, fuse >= 0.29.0, with_fuse=yes, with_fuse=check)])
+AS_IF([test "x$with_fuse" == xcheck], with_fuse=no)
AM_CONDITIONAL(HAVE_ALSA, test "x$with_alsa" == "xyes" )
AM_CONDITIONAL(HAVE_UHD, test "x$with_uhd" == "xyes" )
AM_CONDITIONAL(HAVE_SOAPY, test "x$with_soapy" == "xyes" )
AM_CONDITIONAL(HAVE_SDR, test "x$with_sdr" == "xyes" )
AM_CONDITIONAL(HAVE_MAGICK, test "x$with_imagemagick" == "xyes" )
+AM_CONDITIONAL(HAVE_FUSE, test "x$with_fuse" == "xyes" )
AS_IF([test "x$with_alsa" == "xyes"],[AC_MSG_NOTICE( Compiling with Alsa support )], [AC_MSG_NOTICE( Alsa sound card not supported. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. )])
AS_IF([test "x$with_uhd" == "xyes"],[AC_MSG_NOTICE( Compiling with UHD SDR support )], [AC_MSG_NOTICE( UHD SDR not supported. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. )])
AS_IF([test "x$with_soapy" == "xyes"],[AC_MSG_NOTICE( Compiling with SoapySDR support )], [AC_MSG_NOTICE( SoapySDR not supported. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. )])
AS_IF([test "x$with_imagemagick" == "xyes"],[AC_MSG_NOTICE( Compiling with ImageMagick )],[AC_MSG_NOTICE( ImageMagick not supported. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. )])
+AS_IF([test "x$with_fuse" == "xyes"],[AC_MSG_NOTICE( Compiling with FUSE )],[AC_MSG_NOTICE( FUSE not supported. There will be no analog modem support. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. )])
-AS_IF([test "x$with_alsa" != "xyes" -a "x$with_sdr" != "xyes"],[AC_MSG_FAILURE( Without sound nor SDR support this project does not make sense. Please support sound card for analog transceivers or better SDR!" )],[])
+AS_IF([test "x$with_alsa" != "xyes" -a "x$with_sdr" != "xyes"],[AC_MSG_NOTICE( Without sound nor SDR support this project does not make sense. Please support sound card for analog transceivers or better SDR!" )],[])
AC_OUTPUT(
src/liboptions/Makefile
@@ -71,11 +79,15 @@ AC_OUTPUT(
src/libfilter/Makefile
src/libwave/Makefile
src/libfft/Makefile
- src/libmncc/Makefile
src/libsound/Makefile
src/libsdr/Makefile
src/libsample/Makefile
src/libclipper/Makefile
+ src/libserial/Makefile
+ src/libv27/Makefile
+ src/libmtp/Makefile
+ src/libosmocc/Makefile
+ src/libg711/Makefile
src/anetz/Makefile
src/bnetz/Makefile
src/cnetz/Makefile
@@ -86,11 +98,16 @@ AC_OUTPUT(
src/r2000/Makefile
src/imts/Makefile
src/jolly/Makefile
+ src/eurosignal/Makefile
src/tv/Makefile
src/radio/Makefile
+ src/datenklo/Makefile
+ src/zeitansage/Makefile
+ src/sim/Makefile
+ src/fuvst/Makefile
src/test/Makefile
src/Makefile
- sim/Makefile
+ extra/Makefile
Makefile)
diff --git a/docs/amps.html b/docs/amps.html
index e1bc88c..d0b34df 100644
--- a/docs/amps.html
+++ b/docs/amps.html
@@ -163,7 +163,7 @@ Setup of a base station
</p>
<p>
-<font color="red">Importaint: We need to connect to PLL and discriminator!</font>
+<font color="red">Important: We need to connect to PLL and discriminator!</font>
</p>
<p>
@@ -190,7 +190,7 @@ The transmitter will now shift frequency according the the level of the sound ca
</p>
<p>
-<font color="red">Importaint: We need to transmit correct polarity!</font>
+<font color="red">Important: We need to transmit correct polarity!</font>
</p>
<p>
diff --git a/docs/b-netz.html b/docs/b-netz.html
index 859537a..e16fd91 100644
--- a/docs/b-netz.html
+++ b/docs/b-netz.html
@@ -417,7 +417,7 @@ The transceiver of the base station switches to channel 19 and sends a paging se
Then the base station returns to the ordered channel and waits 700 ms to 2.1 seconds for the mobile station to send the call acknowledge signal ("Rufbest&auml;tigung").
If it is not received, the base station repeats the paging sequence again.
If there is still no call acknowledge signal, it sends a clear signal ("Trennsignal") for at lease 350 ms and returns to idle state and indicates announcement to the calling party that the mobile station is (currently) not available.
-(German announcement sais: "Dieser Anschlu&szlig; ist vorr&uuml;bergehend nicht erreichbar!")
+(German announcement says: "Dieser Anschlu&szlig; ist vorr&uuml;bergehend nicht erreichbar!")
</p>
<p>
@@ -710,7 +710,7 @@ Detecting loss of carrier signal:
<p>
This works with SDR only, because we do not have any RSSI (Received Signal Strength Indicator) signal from a radio connected to the sound card.
-With SDR we know the RX level, so we can define a threashold value for a lost signal.
+With SDR we know the RX level, so we can define a threshold value for a lost signal.
Use '-S &lt;db&gt;' or '--squelch &lt;db&gt;' to define the squelch threshold level.
To measure the noise floor, use the 'm' key to get a bar graph of the current RSSI. (RF level)
Add some dB to the noise floor for the squelch threshold value.
diff --git a/docs/c-netz.html b/docs/c-netz.html
index 4a7bef2..5a77acc 100644
--- a/docs/c-netz.html
+++ b/docs/c-netz.html
@@ -226,7 +226,7 @@ We need to calibrate the speed of our transmit signal (and receive signal as wel
</p>
<p>
-<font color="red">Importaint: We need calibrate the signal processing clock!</font>
+<font color="red">Important: We need calibrate the signal processing clock!</font>
<br><br>
You can skip this parts, if you use SDR, because they have more accurate crystals than sound cards.
</p>
@@ -318,7 +318,7 @@ Let it run again for one hour and you will see that clock deviation of the signa
</p>
<p>
-<font color="red">Importaint: We need to connect to PLL and discriminator!</font>
+<font color="red">Important: We need to connect to PLL and discriminator!</font>
</p>
<p>
@@ -345,7 +345,7 @@ The transmitter will now shift frequency according the the level of the sound ca
</p>
<p>
-<font color="red">Importaint: We need to transmit correct polarity! Always use 'auto' (default) to automatically detect the correct polarity.</font>
+<font color="red">Important: We need to transmit correct polarity! Always use 'auto' (default) to automatically detect the correct polarity.</font>
</p>
<center><img src="c-netz-burst_part.png"/></center>
diff --git a/docs/datenklo.html b/docs/datenklo.html
new file mode 100644
index 0000000..6b8d428
--- /dev/null
+++ b/docs/datenklo.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+<link href="style.css" rel="stylesheet" type="text/css" />
+<title>osmocom-analog</title>
+</head>
+<body>
+<center><table><tr><td>
+
+<h2><center>Das Datenklo</center></h2>
+
+<center><img src="datenklo.jpg"/></center>
+
+<ul>
+ <li><a href="#history">History</a>
+ <li><a href="#howitworks">How it works</a>
+ <li><a href="#terminal">Setup of a terminal</a>
+</ul>
+
+<p class="toppic">
+<a name="history"></a>
+History
+</p>
+
+<p>
+geschichte
+name
+was kann der chip
+TBD
+</p>
+
+<center><img src="datenklo2.jpg"/></center>
+
+<p class="toppic">
+<a name="howitworks"></a>
+How it works
+</p>
+
+<p>
+The program 'datenklo' is an emulator for the original "CCC modem", a building instruction released by the Chaos Computer Club in 1985.
+The heart of this software is the AM7911 modem chip emulation.
+It modulates digital levels to FSK tones and demodulates FSK tones to digital levels.
+A software UART (serial transceiver) converts characters (bytes) into levels and leves into bytes.
+The modem chip emulation is linked to sound card via ALSA driver.
+The UART is linked to a tty emulation.
+The tty emulation uses FUSE, so that the linux kernel provides a virtual serial interface. (/dev/ttyDATENKLO0 by default)
+</p>
+
+<p>
+* TBD *
+</p>
+
+<p class="toppic">
+<a name="terminal"></a>
+Setup of a terminal
+</p>
+
+<p>
+* TBD *
+</p>
+
+<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
+</td></tr></table></center>
+</body>
+</html>
diff --git a/docs/datenklo.jpg b/docs/datenklo.jpg
new file mode 100644
index 0000000..c2e6376
--- /dev/null
+++ b/docs/datenklo.jpg
Binary files differ
diff --git a/docs/datenklo2.jpg b/docs/datenklo2.jpg
new file mode 100644
index 0000000..c960444
--- /dev/null
+++ b/docs/datenklo2.jpg
Binary files differ
diff --git a/docs/datenklo_small.jpg b/docs/datenklo_small.jpg
new file mode 100644
index 0000000..c01568c
--- /dev/null
+++ b/docs/datenklo_small.jpg
Binary files differ
diff --git a/docs/eurosignal.html b/docs/eurosignal.html
new file mode 100644
index 0000000..ac37cca
--- /dev/null
+++ b/docs/eurosignal.html
@@ -0,0 +1,290 @@
+<html>
+<head>
+<link href="style.css" rel="stylesheet" type="text/css" />
+<title>osmocom-analog</title>
+</head>
+<body>
+<center><table><tr><td>
+
+<h2><center>Eurosignal</center></h2>
+
+<center><img src="eurosignal.jpg"/></center>
+
+<ul>
+ <li><a href="#history">History</a>
+ <li><a href="#howitworks">How it works</a>
+ <li><a href="#basestation">Setup of a base station</a>
+ <li><a href="#hacking">Make your own station ID ROM</a>
+</ul>
+
+<p class="toppic">
+<a name="history"></a>
+History
+</p>
+
+<p>
+Eurosignal (a.k.a Europäischer Funkrufdienst EFuRD) was a paging service in Europe.
+It was introduced in 1974 in Germany, 1975 in France and 1985 in Switzerland.
+The system was shut down in France and Switzerland in 31. December 1997, in Germany on 1. April 1998.
+It did not support any message forwarding.
+An incoming call was indicated as a beep (and/or vibration) by the pager.
+But up to 4 paging IDs could be assigned to one single device.
+The device showed which ID was paged.
+</p>
+
+<p>
+Paging a subscriber was done via telephone dial up.
+The prefix was assigned to large areas having multiple transmitters with the same frequency/channel.
+(In Germany were three areas: North, Middle, South)
+The suffix (the pager ID) was then encoded into tones and transmitted with up to 2 KW of power.
+The pager device decoded the tones and checked if they match with the assigned ID.
+Inside the pager were jumpers and later a chip with diodes to match the received tone sequence with the assigned ID.
+Up to four numbers were assigned to one pager.
+</p>
+
+<p>
+One may remember the sound at the beginning of the FM broadcast band:
+</p>
+
+<center>Listen to the base station's paging sequences:<br>
+<audio src="eurosignal.wav" controls></audio></center>
+
+<p>
+Check out <a href="http://www.oebl.de">oebl.de</a> for much more detailed description in German.
+</p>
+
+<p class="toppic">
+<a name="howitworks"></a>
+How it works
+</p>
+
+<p>
+4 frequencies were used by the system:
+</p>
+
+<ul>
+ <li>Channel A: 87,340 MHz
+ <li>Channel B: 87,365 MHz
+ <li>Channel C: 87,390 MHz
+ <li>Channel D: 87,415 MHz
+</ul>
+
+<p>
+The caller calls a prefix followed by a 6 digits number.
+The system puts the number into a queue, so that simultaneous calls can be handled and paging is performed in series.
+</p>
+
+<p>
+A train of paging messages are transmitted without interruption.
+There are two types of messages: A paging message and an idle message.
+Each message is 0.82 seconds long, divided into a sequence of tones.
+</p>
+
+<p>
+This is how a paging message looks like:
+</p>
+
+<pre class="list">
++---------------+-------+-------+-------+-------+-------+-------+
+| Idle | Digit | Digit | Digit | Digit | Digit | Digit |
+| Tone | 1 | 2 | 3 | 4 | 5 | 6 |
++---------------+-------+-------+-------+-------+-------+-------+
+ 220 ms 100 ms 100 ms 100 ms 100 ms 100 ms 100 ms
+</pre>
+
+<p>
+The digit clock is retrieved from the change of tones.
+If two subsequent digits are the same, the second digit was replaced by a 'Repeat' digit, so that there is always a change of tone between digits.
+The Idle tone indicates a new message and resets the receiver's register to start over receiving a message.
+A pager ID '122233' would be transmitted as 1-2-R-2-3-R.
+A message is repeated multiple times, depending on the load of the system. (2-5 times ???)
+If there is no message to be transmitted, the following idle message is sent.
+</p>
+
+<p>
+This is how an idle message looks like:
+</p>
+
+<pre class="list">
+
++---------------+-------+---------------------------------------+
+| Idle | Digit | Idle |
+| Tone | R | Tone |
++---------------+-------+---------------------------------------+
+ 220 ms 100 ms 500 ms
+
+</pre>
+
+<p>
+Here is a list of all frequencies used.
+The distances between frequencies increase on higher frequencies (proportional to the frequency), allowing simple RC filters to be used to detect the tones.
+</p>
+
+<pre class="list">
+
+ Digit / Tone | Frequency
+--------------+----------------
+ Idle | 1153.1 Hz
+ Repeat | 1062.9 Hz
+ 0 | 979.8 Hz
+ 1 | 903.1 Hz
+ 2 | 832.5 Hz
+ 3 | 767.4 Hz
+ 4 | 707.4 Hz
+ 5 | 652.0 Hz
+ 6 | 601.0 Hz
+ 7 | 554.0 Hz
+ 8 | 510.7 Hz
+ 9 | 470.8 Hz
+ Spare 1 | 433.9 Hz
+ Spare 2 | 400.0 Hz
+ Spare 3 | 368.7 Hz
+ Spare 4 | 339.9 Hz
+ Spare 5 | 313.3 Hz
+
+</pre>
+
+<p>
+The message is amplitude modulated.
+The modulation index is 92 %.
+</p>
+
+<p>
+Alternatively the signal can be transmitted frequency modulated, to reduce interference with TV stations.
+The frequency is shifted by 7.5 KHz above or below the actual channel frequency.
+The frequency deviation causes a change of amplitude in the demodulator of the pager, so it works as well.
+</p>
+
+<p class="toppic">
+<a name="basestation"></a>
+Setup of a base station
+</p>
+
+<p>
+Find out what channel your pager can receive and select the same channel on the transmitting side.
+Assume that your pager is set to channel B, select channel B:
+</p>
+
+<pre>
+
+# src/eurosignal/eurosignal -k B
+
+...
+eurosignal.c:290 notice : Created 'Kanal' B
+Base station for channel B ready, please tune transmitter and/or receiver to 87.3650 MHz
+...
+
+</pre>
+
+<p>
+If you have an FM transmitter instead of an AM transmitter, tune it 7.5 KHz below or above the indicated channel.
+Use narrow band deviation up to 5 kHz without pre-emphasis, if possible.
+I suggest to use SDR, so check out the SDR page.
+Then enter the ID of your pager. You will find it printed on the device and/or on the 18 pin chip inside.
+If your pager's ID is 123456, enter it and press 'd' to start paging:
+</p>
+
+<pre>
+
+on-hook: 123456 (press d=dial)
+mncc_console.c:358 info : Outgoing call to '123456'
+call.c:699 info : Received MNCC call from fixed network '' to mobile '123456'
+call.c:706 info : Indicate MNCC call confirm towards fixed network
+call.c:717 info : Outgoing call from '' to '123456'
+eurosignal.c:318 info : Creating call instance to page ID '123456'.
+call.c:478 info : Call has been answered by '123456'
+call.c:466 info : Indicate MNCC answer towards fixed network
+mncc_console.c:206 info : Call connected to '123456'
+eurosignal.c:605 info : Station acknowledges, playing announcement.
+eurosignal.c:387 notice : Transmitting ID '123456'.
+eurosignal.c:387 notice : Transmitting ID '123456'.
+eurosignal.c:387 notice : Transmitting ID '123456'.
+eurosignal.c:387 notice : Transmitting ID '123456'.
+mncc_console.c:388 info : Call hangup
+call.c:774 info : Received MNCC release from fixed network with cause 16
+call.c:778 info : Call released toward mobile network
+eurosignal.c:760 info : Call has been disconnected by network.
+
+</pre>
+
+<p>
+In order to receive a paging message, use -R (--rx).
+Then the software will decode the received IDs and display them.
+You may also use both -R -T to allow the software to decode while it is encoding.
+</p>
+
+<p>
+You may append a station ID as command line option, so it is pre-selected and must not be typed in.
+You can also use digits like 'A', 'B', 'C', 'D' and 'E' to define Spare digits 1..5.
+I guess that these extension digis were never used, but it is supported by most pagers.
+Using a "Spare 2" as third digit looks like this:
+</p>
+
+<pre>
+
+# src/eurosignal/eurosignal -k B 12B456
+
+</pre>
+
+<p class="toppic">
+<a name="hacking"></a>
+Make your own station ID ROM
+</p>
+
+<center><img src="eurosignal_rom.jpg"/></center>
+
+<p>
+Sometimes you find a pager but the internal ROM with the station ID is missing.
+This is because there was no database (in the first place) to block unallocated / unsubcribed station IDs.
+Instead the ROM was removed from the pager when the subscriber unsubscribed the service.
+Learn how to build your own ROM from a few diodes:
+</p>
+
+<p>
+<a href="eurosignal_fre3.txt">
+<ul>
+<li>TeKaDe E 13-1</li>
+<li>Bosch FRE 3</li>
+<li>BBC ES-E1</li>
+<li>Telefunken ES-5</li>
+<li>ANT D 200 E</li>
+</ul>
+</a>
+
+<p>
+<a href="eurosignal_e299.txt">
+<ul>
+<li>SEL E299</li>
+<li>Bosch FRE 2</li>
+</ul>
+</a>
+</p>
+
+<p>
+<a href="eurosignal_fu20.txt">
+<ul>
+<li>Gundig FU 20</li>
+<li>Storno CRP 3000</li>
+<li>Dantronik DT 400</li>
+<li>Grundig FU20.1</li>
+<li>Storno CRP 3000.1</li>
+<li>Dantronik DT 400.1</li>
+<li>Multitone RPR 390</li>
+</ul>
+</a>
+</p>
+
+
+<p>
+<a href="eurosignal_es1.tiff">
+<ul>
+<li>Telefunken ES 1/2</li>
+</ul>
+</a>
+</p>
+
+
+<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
+</td></tr></table></center>
+</body>
+</html>
diff --git a/docs/eurosignal.jpg b/docs/eurosignal.jpg
new file mode 100644
index 0000000..9d5788d
--- /dev/null
+++ b/docs/eurosignal.jpg
Binary files differ
diff --git a/docs/eurosignal.wav b/docs/eurosignal.wav
new file mode 100644
index 0000000..d7cc8cb
--- /dev/null
+++ b/docs/eurosignal.wav
Binary files differ
diff --git a/docs/eurosignal_e299.txt b/docs/eurosignal_e299.txt
new file mode 100644
index 0000000..ef293a5
--- /dev/null
+++ b/docs/eurosignal_e299.txt
@@ -0,0 +1,106 @@
+Kennungsspeicher SEL E299 oder Bosch FRE 2
+
+
+Chip mit den Pins:
+------------------
+
+K = Kathode, A = Anode
+ ___ ___
+A 1 o U o A 14
+K 2 o o A 13
+K 3 o o K 12
+K 4 o o K 11
+K 5 o o K 10
+K 6 o o A 9
+A 7 o_______o A 8
+
+
+Kathoden 2,3,11,12:
+-------------------
+
+Die Kathoden werden jeweils mit Dioden zu einer Anode verbunden und stellen somit eine Ziffer dar.
+
+K 2 : Bit 0 (Wertigkeit 1)
+K 12: Bit 1 (Wertigkeit 2)
+K 3 : Bit 2 (Wertigkeit 4)
+K 11: Bit 3 (Wertigkeit 8)
+
+Ziffer 1: Verbunden mit A 1
+Ziffer 2: Verbunden mit A 7
+Ziffer 3: Verbunden mit A 14
+Ziffer 5: Verbunden mit A 8
+Ziffer 6: Verbunden mit A 9
+Ziffer 6: Verbunden mit A 13 (weitere Ziffer 6)
+
+
+Kathoden 4,5,6,10:
+------------------
+
+Die Kathoden werden jeweils mit Dioden zu einer Anode verbunden und stellen somit eine Ziffer dar.
+
+K 4 : Bit 0 (Wertigkeit 1)
+K 10: Bit 1 (Wertigkeit 2)
+K 5 : Bit 2 (Wertigkeit 4)
+K 6 : Bit 3 (Wertigkeit 8)
+
+Ziffer 1: Verbunden mit A 1 (weitere Ziffer 1)
+Ziffer 4: Verbunden mit A 14
+Ziffer 6: Verbunden mit A 9 (weitere Ziffer 6)
+Ziffer 6: Verbunden mit A 13 (weitere Ziffer 6)
+
+Hinweis: Es gibt 2x die Ziffer 1 und 4x die Ziffer 6, Damit ist es moeglich 4 verschiedene Kennungen zu kodieren, die sich in der 6. Ziffer unterscheiden. Zudem koennen sich jeweils zwei Kennungen in der 1. Ziffer unterscheiden.
+(Habe mir nicht gemerkt, welche Ziffer welches der 4 Rufzeichen ist.)
+
+
+Ziffern:
+--------
+W: Wert 0 (alle 4 Bits ohne Diode)
+0: Wert 1 (Diode nach Bit 0)
+1: Wert 2 (Diode nach Bit 1)
+2: Wert 3 (Diode nach Bits 1,0)
+3: Wert 4 (Diode nach Bit 2)
+4: Wert 5 (Diode nach Bits 2,0)
+5: Wert 6 (Diode nach Bits 2,1)
+6: Wert 7 (Diode nach Bits 2,1,0)
+7: Wert 8 (Diode nach Bit 3)
+8: Wert 9 (Diode nach Bits 3,0)
+9: Wert 10 (Diode nach Bits 3,1)
+W ist die Widerholziffer
+
+
+Beispiel:
+
+Rufnummer: 162475
+
+ A1 A7 A8 A9 A13 A14
+K 2 * * *
+K 3 * * *
+K 4 * * * *
+K 5 * * * * *
+K 6 * * * *
+K 10 * * * * *
+K 11 * *
+K 12 * * * * *
+
+
+Beispiel:
+
+Rufnummer: 773003
+
+A1 ->|- K11
+A14 ->|- K3
+A14 ->|- K4
+A9 ->|- K5
+
+
+Beispiel: (minimale Diodenzahl)
+
+Rufnummer: 113377
+
+A1 ->|- K12
+A14 ->|- K3
+A8 ->|- K11
+
+
+
+
diff --git a/docs/eurosignal_es1.tiff b/docs/eurosignal_es1.tiff
new file mode 100755
index 0000000..8269116
--- /dev/null
+++ b/docs/eurosignal_es1.tiff
Binary files differ
diff --git a/docs/eurosignal_fre3.txt b/docs/eurosignal_fre3.txt
new file mode 100644
index 0000000..4d0b9dd
--- /dev/null
+++ b/docs/eurosignal_fre3.txt
@@ -0,0 +1,100 @@
+Kennungsspeicher fuer folgende Geraete:
+
+E 13-1 TeKaDe
+FRE 3 Bosch
+ES-E1 BBC
+ES-5 Telefunken
+D 200 E ANT
+
+
+Chip mit den Pins:
+------------------
+
+K = Kathode, A = Anode
+ ___ ___
+K 1 o U o A 18
+K 2 o o A 17
+K 3 o o A 16
+K 4 o o A 15
+A 5 o o K 14
+A 6 o o K 13
+A 7 o o K 12
+A 8 o o K 11
+A 9 o_______o K 10
+
+
+Jede Ziffer besteht aus 4 Bit.
+In Klammern steht der Speicherplatz, da ja bis zu 4 Kennungen gespeichert werden koennen.
+Wenn nichts in Klammern steht, gilt die Ziffer fuer alle 4 Kennungen.
+
+
+ Anoden 15-18 Anoden 6-9
+--------------------------------------------
+Kathode 14 Ziffer 1(1) Ziffer 1(2)
+Kathode 1 Ziffer 1(3) Ziffer 1(4)
+Kathode 2 Ziffer 2 Ziffer 3
+Kathode 4 Ziffer 4
+Kathode 13 Ziffer 5(1) Ziffer 5(2)
+Kathode 12 Ziffer 5(3) Ziffer 5(4)
+Kathode 11 Ziffer 6(1) Ziffer 6(2)
+Kathode 10 Ziffer 6(3) Ziffer 6(4)
+
+
+Kathode 3 ist nicht belegt, sowie die Annoden 6-9 an Kathode 4.
+
+
+Die Ziffern sind wie folgt kodiert. Immer wenn ein Stern in der Tabelle steht, muss die jeweilige Kathode mit der Anode verbunden werden.
+Da immer 2 Ziffern pro Kathode kodiert werden, sind beide Anoden angegeben.
+
+ Anoden:
+Ziffer 16/6 15/7 18/8 17/9
+------------------------------------------------
+0 * * * *
+1 * * *
+2 * * *
+3 * *
+4 * * *
+5 * *
+6 * *
+7 *
+8 * * *
+9 * *
+W *
+
+Die Ziffer 'W' ist die Widerholzuffer.
+
+
+Um eine Kennung nicht zu verwenden, kann man einfach die Dioden weglassen.
+
+
+
+Beispiel:
+
+773002
+773003
+773004
+773005
+
+Kathode 14 mit Anode 17, 9
+Kathode 1 mit Anode 17, 9
+Kathode 2 mit Anode 16, 8, 9
+Kathode 4 mit Anode 6, 7, 8, 9
+Kathode 13 mit Anode 16, 6
+Kathode 12 mit Anode 16, 6
+Kathode 11 mit Anode 16, 18, 17, 8, 9
+Kathode 10 mit Anode 16, 15, 17, 7, 9
+(ungetestet)
+
+
+Beispiel mit so wenig Dioden, wie möglich:
+
+777777
+
+Kathode 14 -|<- Anode 17
+Kathode 2 -|<- Anode 16, 9
+Kathode 2 -|<- Anode 9
+Kathode 4 -|<- Anode 6
+Kathode 13 -|<- Anode 17
+Kathode 11 -|<- Anode 16
+(getestet)
+
diff --git a/docs/eurosignal_fu20.txt b/docs/eurosignal_fu20.txt
new file mode 100644
index 0000000..9f81590
--- /dev/null
+++ b/docs/eurosignal_fu20.txt
@@ -0,0 +1,124 @@
+Kennungsspeicher Grundig FU20 oder Baugleiche
+
+Gundig FU 20
+Storno CRP 3000
+Dantronik DT 400
+Grundig FU20.1
+Storno CRP 3000.1
+Dantronik DT 400.1
+Multitone RPR 390
+
+
+Chip mit den Pins:
+------------------
+
+K = Kathode, A = Anode
+ ___ ___
+K 1 o U o A 18
+K 2 o o A 17
+K 3 o o A 16
+K 4 o o A 15
+A 5 o o K 14
+A 6 o o K 13
+A 7 o o K 12
+A 8 o o K 11
+A 9 o_______o K 10
+
+
+Kathoden 1-4:
+-------------
+
+Die Kathoden werden jeweils mit Dioden zu einer Anode verbunden und stellen somit eine Ziffer dar.
+Z.B.: A9 mit K3 und A9 mit K2 ergibt den Wert 6 für die 5. Ziffer.
+
+K 1 : Bit 0 (Wertigkeit 1)
+K 2 : Bit 1 (Wertigkeit 2)
+K 3 : Bit 2 (Wertigkeit 4)
+K 4 : Bit 3 (Wertigkeit 8)
+
+Ziffer 3: Verbunden mit A 8
+Ziffer 5: Verbunden mit A 9
+Ziffer 6: Verbunden mit A 16
+Weitere Ziffern nicht geprüft
+
+
+Kathoden 13-10:
+---------------
+
+Die Kathoden werden jeweils mit Dioden zu einer Anode verbunden und stellen somit eine Ziffer dar.
+
+K 13: Bit 0 (Wertigkeit 1)
+K 12: Bit 1 (Wertigkeit 2)
+K 11: Bit 2 (Wertigkeit 4)
+K 10: Bit 3 (Wertigkeit 8)
+
+Ziffer 1: Verbunden mit A 6
+Ziffer 2: Verbunden mit A 8
+Ziffer 4: Verbunden mit A 9
+Weitere Ziffern nicht geprüft
+
+
+Kathode K14:
+------------
+
+Die Kathode 14 wird jeweils mit Dioden zu den Anoden verbunden und stellen somit die Checksumme dar.
+
+A 6 : Bit 0 (Wertigkeit 1)
+A 7 : Bit 1 (Wertigkeit 2)
+A 8 : Bit 2 (Wertigkeit 4)
+A 9 : Bit 3 (Wertigkeit 8)
+A 15: Bit 4 (Wertigkeit 16)
+A 16: Bit 4 (Wertigkeit 32)
+A 17: Bit 4 (Wertigkeit 64)
+A 18: Bit 4 (Wertigkeit 128)
+A 5 wird nicht verwendet!
+
+Fuer die Checksumme ist K14 jeweils mit A6..A9,A15..A18 verbunden.
+Die Checksumme ist die Summe der Werigkeiten aller Ziffern.
+
+
+Ziffern:
+--------
+0: Wert 0 (alle 4 Bits ohne Diode)
+1: Wert 1 (Diode nach Bit 0)
+2: Wert 2 (Diode nach Bit 1)
+3: Wert 3 (Diode nach Bits 1,0)
+4: Wert 4 (Diode nach Bit 2)
+5: Wert 5 (Diode nach Bits 2,0)
+6: Wert 6 (Diode nach Bits 2,1)
+7: Wert 7 (Diode nach Bits 2,1,0)
+8: Wert 8 (Diode nach Bit 3)
+9: Wert 9 (Diode nach Bits 3,0)
+Spare1: Wert 10 (Diode nach Bits 3,1)
+Spare2: Wert 11 (Diode nach Bits 3,1,0)
+Spare5: Wert 12 (Diode nach Bits 3,2)
+W: Wert 14 (Diode nach Bits 3,2,1)
+W ist die Widerholziffer
+
+
+Beispiel: (funktioniert mit FU20)
+---------
+
+010101
+
+Ziffer 1=0: Keine Diode
+Ziffer 2=1: A8 ->|- K13
+Ziffer 3=0: Keine Diode
+Ziffer 4=1: A9 ->|- K13
+Ziffer 5=0: Keine Diode
+Ziffer 6=1: A16 ->|- K1
+
+Checksumme 3 (0+1+0+1+0+1): A6 ->|- K14, A7 ->|- K14
+
+
+Beispiel: (mit nur 4 Dioden)
+---------
+
+010201
+
+A8 ->|- K13 (Ziffer 1)
+A9 ->|- K12 (Ziffer 2)
+A16 ->|- K1 (Ziffer 1)
+A8 ->|- K14 (Checksumme 4)
+
+
diff --git a/docs/eurosignal_rom.jpg b/docs/eurosignal_rom.jpg
new file mode 100644
index 0000000..30abdb3
--- /dev/null
+++ b/docs/eurosignal_rom.jpg
Binary files differ
diff --git a/docs/eurosignal_small.jpg b/docs/eurosignal_small.jpg
new file mode 100644
index 0000000..778ac8e
--- /dev/null
+++ b/docs/eurosignal_small.jpg
Binary files differ
diff --git a/docs/imts-attache.jpg b/docs/imts-attache.jpg
new file mode 100644
index 0000000..4d7e929
--- /dev/null
+++ b/docs/imts-attache.jpg
Binary files differ
diff --git a/docs/imts.html b/docs/imts.html
new file mode 100644
index 0000000..bec6b8f
--- /dev/null
+++ b/docs/imts.html
@@ -0,0 +1,758 @@
+<html>
+<head>
+<link href="style.css" rel="stylesheet" type="text/css" />
+<title>osmocom-analog</title>
+</head>
+<body>
+<center><table><tr><td>
+
+<h2><center>MTS &amp; IMTS</center></h2>
+
+<center><img src="imts.jpg"/></center>
+
+<ul>
+ <li><a href="#history">History</a>
+ <li><a href="#howitworks_imts">How IMTS works</a>
+ <li><a href="#howitworks_mts">How MTS works</a>
+ <li><a href="#basestation_imts">Setup of an IMTS base station</a>
+ <li><a href="#basestation_mts">Setup of an MTS base station</a>
+</ul>
+
+<p class="toppic">
+<a name="history"></a>
+History
+</p>
+
+<p>
+From Wikipedia, the free encyclopedia:
+<br><br>
+"The Improved Mobile Telephone Service (IMTS) was a pre-cellular VHF/UHF radio system which linked to the PSTN.
+IMTS was the radiotelephone equivalent of land dial phone service.
+Introduced in 1964, it replaced Mobile Telephone Service (MTS) and improved on most MTS systems by offering direct-dial rather than connections through a live operator."
+</p>
+
+<p>
+MTS and IMTS phone were assembled in large cases located in the trunk of cars.
+Early models used mechanical switches to encode and decode phone's identity.
+Later models were solid state and had duplexers to talk and listen simultaneously.
+Attach&eacute; case phones came available in the late 60's, so they could be used outside the car.
+Some models in the 80's were handheld.
+</p>
+
+<center><img src="imts-attache.jpg"/></center>
+
+<p>
+<ul>
+ <li>Frequency range VHF Low: 35.26 - 35.66 MHz (down-link); 43.26 - 43.66 MHz (up-link)
+ <li>Frequency range VHF High: 152.48 - 152.84 MHz (down-link); 157.74 - 158.10 MHz (up-link)
+ <li>Frequency range UHF: 454.375 - 454.65 MHz (down-link); 459.375 - 359.65 MHz (up-link)
+ <li>10 channels used for VHF Low Band in the US
+ <li>11 channels used for VHF High Band in the US
+ <li>13 channels used for VHF High Band in Canada
+ <li>12 channels used for UHF Band in the US
+ <li>Duplex distance: around 5 MHz (VHF High and UHF)
+ <li>Channel spacing: 30 KHz (VHF High) 25 KHz (UHF)
+ <li>Modulation: FM
+ <li>Frequency deviation: 5 KHz (signaling tones)
+ <li>Mobile station transmit power: Typically 25 Watts
+ <li>Base station transmit power: 100..250 Watts
+</ul>
+</p>
+
+<p class="toppic">
+<a name="howitworks_imts"></a>
+How IMTS works
+</p>
+
+<p>
+This description is not an original standard.
+It is based on my research.
+There are many unknown parameters.
+If you know more, please help to complete this documentation.
+</p>
+
+<p>
+Frequencies:
+</p>
+
+<p>
+<table class="imts">
+<tr><th colspan="3"> VHF Low Band </th></tr>
+<tr><th>Channel</th><th>Base (MHz)</th><th>Mobile (MHz)</th></tr>
+<tr><td>ZO</td><td>35.26</td><td>43.26</td></tr>
+<tr><td>ZF</td><td>35.30</td><td>43.30</td></tr>
+<tr><td>ZM</td><td>35.38</td><td>43.38</td></tr>
+<tr><td>ZH</td><td>35.34</td><td>43.34</td></tr>
+<tr><td>ZA</td><td>35.42</td><td>43.32</td></tr>
+<tr><td>ZY</td><td>35.46</td><td>43.46</td></tr>
+<tr><td>ZR</td><td>35.50</td><td>43.50</td></tr>
+<tr><td>ZB</td><td>35.54</td><td>43.54</td></tr>
+<tr><td>ZW</td><td>35.62</td><td>43.62</td></tr>
+<tr><td>ZL</td><td>35.66</td><td>43.66</td></tr>
+</table>
+<table class="imts">
+<tr><th colspan="3"> VHF High Band </th></tr>
+<tr><th>Channel</th><th>Base (MHz)</th><th>Mobile (MHz)</th></tr>
+<tr><td>JJ</td><td>152.48</td><td>157.74 (Canada only)</td></tr>
+<tr><td>JL</td><td>152.51</td><td>157.77</td></tr>
+<tr><td>YL</td><td>152.54</td><td>157.80</td></tr>
+<tr><td>JP</td><td>152.57</td><td>157.83</td></tr>
+<tr><td>YP</td><td>152.60</td><td>157.86</td></tr>
+<tr><td>YJ</td><td>152.63</td><td>157.89</td></tr>
+<tr><td>YK</td><td>152.66</td><td>157.92</td></tr>
+<tr><td>JS</td><td>152.69</td><td>157.95</td></tr>
+<tr><td>YS</td><td>152.72</td><td>157.98</td></tr>
+<tr><td>YR</td><td>152.75</td><td>158.01</td></tr>
+<tr><td>JK</td><td>152.78</td><td>158.04</td></tr>
+<tr><td>JR</td><td>152.81</td><td>158.07</td></tr>
+<tr><td>JW</td><td>152.84</td><td>158.10 (Canada only)</td></tr>
+</table>
+<table class="imts">
+<tr><th colspan="3"> UHF Band </th></tr>
+<tr><th>Channel</th><th>Base (MHz)</th><th>Mobile (MHz)</th></tr>
+<tr><td>QC</td><td>454.375</td><td>459.375</td></tr>
+<tr><td>QJ</td><td>454.40</td><td>459.40</td></tr>
+<tr><td>QD</td><td>454.425</td><td>459.425</td></tr>
+<tr><td>QA</td><td>454.45</td><td>459.45</td></tr>
+<tr><td>QE</td><td>454.475</td><td>459.475</td></tr>
+<tr><td>QP</td><td>454.50</td><td>459.50</td></tr>
+<tr><td>QK</td><td>454.525</td><td>459.525</td></tr>
+<tr><td>QB</td><td>454.55</td><td>459.55</td></tr>
+<tr><td>QO</td><td>454.575</td><td>459.575</td></tr>
+<tr><td>QR</td><td>454.60</td><td>459.60</td></tr>
+<tr><td>QY</td><td>454.625</td><td>459.625</td></tr>
+<tr><td>QF</td><td>454.65</td><td>459.65</td></tr>
+</table>
+</p>
+
+<p>
+The modulation is FM. The frequency deviation of speech is 2500 Hz ??? at 1000 Hz.
+Signaling tones have a frequency deviation of 5000 Hz.
+Pre-Emphasis is used for speech only.
+</p>
+
+<p>
+Tones used for signaling:
+</p>
+
+<p>
+<table class="imts">
+<tr><th colspan="2"> Base -&gt; Mobile </th></tr>
+<tr><td>Idle</td><td>2000 Hz</td></tr>
+<tr><td>Seize</td><td>1800 Hz</td></tr>
+</table>
+</p>
+
+<p>
+<table class="imts">
+<tr><th colspan="2"> Mobile -&gt; Base </th></tr>
+<tr><td>Guard</td><td>2150 Hz</td></tr>
+<tr><td>Connect</td><td>1633 Hz</td></tr>
+<tr><td>Disconnect</td><td>1336 Hz</td></tr>
+</table>
+</p>
+
+<p>
+Idle State:
+</p>
+
+<p>
+All transceivers of a base station that are not in use, are turned off, except for one channel, the idle channel.
+Only one channel being idle will transmit the 2000 Hz Idle tone and listens for the 2150 Hz Guard tone.
+If the (only) channel with the Idle tone is seized by a mobile phone or the public telephone exchange, another channel, that is turned off, is activated and sends the Idle tone and becomes the new idle channel.
+</p>
+
+<p>
+When a mobile phone is idle, it will search for a radio channel with Idle tone and suitable quality.
+The transmitter will be off while the phone listens to the Idle tone or an incoming call from the base station.
+When the Idle tone disappears, it will search for another idle channel after 300 ms.
+</p>
+
+<p>
+Call from mobile phone:
+</p>
+
+<p>
+When the user picks up the handset of the mobile phone, the phone will seize the channel, transmits ANI and receives dial tone.
+</p>
+
+<p>
+First, the mobile phone will turn on the transmitter and sends 350 ms of 2150 Hz Guard tone, followed by 50 ms of 1633 Hz Connect tone.
+As soon as the Guard tone, followed by Connect tone is detected by the base station, it will turn off 2000 Hz Idle tone and transmit silence.
+(Another channel that is turned off, will then transmit the 2000 Hz Idle tone.)
+Note that the base station has to respond even before the 50 ms of the Connect tone is over.
+The mobile phone must detect the silence from the base station before it is done sending the Connect tone.
+(There are special requirements on SDR/soundcard setup to respond fast enough.)
+The mobile phone then continues to send Guard tone and waits for the base station to respond with the 1800 Hz Seize tone.
+Note that there seems to be no timeout in the mobile phone, waiting for Seize tone.
+The base station sends 250 ms of the Seize tone.
+</p>
+
+<p>
+200 ms after the mobile phone has received the Seize tone, it will send the ANI sequence.
+The ANI sequence consists of 190 ms of Guard tone, followed by 7 pulsed digits.
+Each digit is formed by pulses consisting of 25 ms Mark tone and 25 ms of Space tone.
+After the last pulse of each digit the mobile phone sends 190 ms of Space tone.
+The Mark tone is transmitted as 1633 Hz Connect tone.
+The Space tone is transmitted as silence, if the pulse number was odd.
+The Space tone is transmitted as 2150 Hz Guard tone, if the pulse number was even.
+The pulse number is counted from the first pulse of the first digit through the last pulse of the last digit.
+The mobile phone will then through-connect speech path, the user awaits the dial tone.
+</p>
+
+<p>
+The base station verifies the received ANI and presents a dial tone or forwards the call to an operator.
+</p>
+
+<p>
+When a number is dialed from a mobile phone, Guard tone is sent continuously as soon a the dial goes off normal (when the dial is moved from its resting position).
+Each digit is formed by pulses consisting of 60 ms Mark tone and 40 ms of Space tone.
+The Mark tone is transmitted as 1633 Hz Connect tone.
+The Space tone is transmitted as 2150 Hz Guard tone.
+The Space tone continues until the dial returned to normal, which is about two steps of the rotary dial (200 ms).
+</p>
+
+<p>
+Call towards mobile phone:
+</p>
+
+<p>
+The land user dials the phone number of the mobile phone.
+It consists of the 3 digit area code and the 4 digit suffix.
+The 3 digit prefix (mobile exchange) is omitted when paging the mobile phone.
+</p>
+
+<p>
+First, the base station selects the idle channel that is transmitting the 2000 Hz Idle tone.
+(Another channel that is turned off, will then transmit the 2000 Hz Idle tone.)
+If there is no channel available, the land user receives a busy signal.
+The 7 digit number is transmitted towards the mobile phone via alternating tones.
+The base station transmits a 1800 Hz Seize tone and waits about 400 ms (???) before transmitting digits.
+Each digit is formed by pulses consisting of 50 ms Mark tone and 50 ms of Space tone.
+After each digit the base station continues sending 1800 Hz Seize tone.
+The interdigit delay is 225 ms.
+The Mark tone is transmitted as 2000 Hz Idle tone.
+The Space tone is transmitted as 1800 Hz Seize tone.
+The base station will start timer for 3 to 4 seconds waiting for the mobile phone to respond with a 2150 Hz Guard tone.
+</p>
+
+<p>
+If the mobile phone receives digits from base station, it compares the digits with its own number.
+If the number does not match, it will abort and scan for the idle channel.
+If the number matches the mobile phone will transmit the Guard tone up to 750 ms, waiting for the ringing sequence.
+After sending Guard tone, the mobile phone will ring and wait for answer.
+</p>
+
+<p>
+If the base station does not receive the Guard tone from the mobile phone, it will return to idle state.
+The land user will receive an announcement that the called phone is not available at this moment.
+If the base station receives the Guard tone from the mobile phone, it will send a ringing sequence up to 45 seconds.
+Ringing by the base station is composed of 1800 Hz Seize tone and 2000 Hz Idle tone, each alternating after 25 ms for 2 seconds, then 4 seconds of Seize tone.
+</p>
+
+<p>
+The mobile phone rings the bell using the tones received from the base station.
+If the 1800 Hz Seize tone disappears, the phone stops ringing and returns to idle channel.
+</p>
+
+<p>
+If the user of the mobile phone answers, the mobile phone transmits 1633 Hz Connect tone for 400 ms and through-connects speech path.
+</p>
+
+<p>
+If the base station receives the Connect tone, it will stop the ringing sequence, answers the call from the land user and through-connect the speech path.
+</p>
+
+
+<p>
+Release by the mobile phone:
+</p>
+
+<p>
+If the mobile user hangs up, the mobile phone starts the release sequence by sending alternating 1336 Hz Release tone and 2150 Hz Guard tone, 25 ms each.
+After 750 ms sending that sequence, the mobile phone turns off transmitter and searches for idle channel.
+</p>
+
+<p>
+When the base station receives the release sequence for 100 ms, it will return to idle state.
+</p>
+
+
+<p>
+Release by the base station:
+</p>
+
+<p>
+When the mobile phone is ringing, it will stop if the base station removes the ringing sequence.
+There is no release sequence to release an a active call towards mobile phone.
+</p>
+
+<p class="toppic">
+<a name="howitworks_mts"></a>
+How MTS works
+</p>
+
+<p>
+Base station in Idle state:
+</p>
+
+<p>
+The base station uses a 600 Hz tone to indicate an idle channel.
+Similarly to the IMTS, only one idle channel send the 600 Hz tone, the other channels are turned off.
+</p>
+
+<p>
+Call from mobile phone
+</p>
+
+<p>
+The mobile station does not send any signaling tone at all.
+The radio signal is used to start a call.
+Whenever the user picks up the phone and presses the push-to-talk button, a connection is made to an operator.
+The operation is half duplex, so there is no release by stopping transmission of the mobile phone.
+The operator has to terminate the call.
+</p>
+
+<p>
+Call from base station
+</p>
+
+<p>
+To page a mobile phone, the operator has to dial the 5 digits of the mobile phone.
+The operator has to add the digit '1' in front of the 5 digit subscriber ID.
+This digit is used to reset the paging detector inside mobile phone.
+Note that the subscriber ID must not have a digit '1'.
+Each pulse from the base station is a transition from 600 Hz to 1500 Hz or from 1500 Hz to 600 Hz.
+Two or more pulses are separated 100 ms.
+Each digit is separated 400 ms ???.
+After the last pulse of the last digit, the tone sustains until the caller hangs up.
+The mobile phone rings.
+To answer the call, the user presses the push-to-talk button.
+The ringing can be released by sending another transition pulse or by removing the tone for a short time. (This is for further study.)
+</p>
+
+<p class="toppic">
+<a name="basestation_imts"></a>
+Setup of an IMTS base station
+</p>
+
+<p>
+Find out what band and channels your phone supports. Then get a list of all available bands and channels:
+</p>
+
+<pre>
+
+# src/imts/imts -k list
+
+</pre>
+
+<p>
+Assume the phone supports VHF Low band, so we select channel 'YK' with the command line option '-k YK', or select any other channel your phone supports.
+In order to have a low latency, you must add '-b 5' to the command line option.
+Then tune the transmitter to the indicated channel and receiver to the other indicated channel.
+Transmit with a normal loud speech volume, but not too loud.
+The actual level is not yet relevant.
+</p>
+
+<pre>
+
+# src/imts/imts -k YK -b 5
+...
+imts.c:381 info : Entering IDLE state on channel YK, sending 2000 Hz tone.
+imts.c:336 notice : Created channel #YK
+Base station on channel YK ready, please tune transmitter to 152.660 MHz and receiver to 157.920 MHz. (-5.260 MHz offset)
+on-hook: ....... (enter digits 0..9)
+
+</pre>
+
+
+<p>
+If you receive permanent buffer underruns, see 'Fast Seize' below.
+Power on your phone.
+Be sure to use attenuator on the antenna, so it will not transmit full 25 Watts close to your receiver equipment.
+The phone should search and stop at the selected channel.
+If the phone does not support automatic channel selection, select channel YK manually.
+</p>
+
+<p>
+Now pick up the handset of your phone and it should transmit the Guard tone, followed by a short Connect tone.
+If the phone does not lock or does not transmit, check if your transmitter transmits the Idle tone.
+If the phone transmits, your base station should respond to the seize sequence by the phone and the phone transmits ANI towards your base station.
+</p>
+
+<pre>
+
+# src/imts/imts -k YK -b 5
+...
+imts.c:381 info : Entering IDLE state on channel YK, sending 2000 Hz tone.
+imts.c:336 notice : Created channel #YK
+Base station on channel YK ready, please tune transmitter to 152.660 MHz and receiver to 157.920 MHz. (-5.260 MHz offset)
+imts.c:886 notice : Received Guard tone, turning off IDLE tone
+imts.c:544 info : Received seize (Guard + Connect tone) from mobile phone.
+imts.c:545 info : -&gt; Guard tone duration: 350 ms (level 69%)
+imts.c:408 info : All channels are busy now, cannot activate any other channel.
+imts.c:907 notice : Sending Seize to mobile phone.
+imts.c:784 info : Received ANI digit '2' from mobile phone (level 71%).
+imts.c:784 info : Received ANI digit '1' from mobile phone (level 77%).
+imts.c:784 info : Received ANI digit '6' from mobile phone (level 77%).
+imts.c:784 info : Received ANI digit '2' from mobile phone (level 77%).
+imts.c:784 info : Received ANI digit '6' from mobile phone (level 77%).
+imts.c:784 info : Received ANI digit '3' from mobile phone (level 71%).
+imts.c:784 info : Received ANI digit '0' from mobile phone (level 71%).
+imts.c:790 info : ANI '2162630' complete, sending dial tone.
+
+</pre>
+
+<p>
+If the base station does not receive Guard tone or receives bad ANI digits, check the receiver and the receive level.
+To test the receiver side, tune the receiver to the frequency of the transmitter and check the loopback signal. Adjust your receiver (sound card input) to match about 100% level:
+</p>
+
+<pre>
+
+...
+imts.c:876 notice : Received idle tone (level of 97%), loopback?
+imts.c:876 notice : Received idle tone (level of 97%), loopback?
+imts.c:876 notice : Received idle tone (level of 97%), loopback?
+imts.c:876 notice : Received idle tone (level of 97%), loopback?
+...
+
+</pre>
+
+<p>
+Return your receiver to the uplink frequency and try to make a call again.
+If it works, use you dial pad (or rotary dial) to dial the number.
+</p>
+
+<p>
+To call towards mobile station, enter the 7 digit mobile station ID on your keyboard or add it to the command line.
+Use the same phone number you received with the ANI above, this is your mobile station ID.
+Then press 'd' to page and ring the phone:
+</p>
+
+<pre>
+
+...
+mncc_console.c:358 info : Outgoing call to '2162630'
+call.c:699 info : Received MNCC call from fixed network '' to mobile '2162630'
+call.c:706 info : Indicate MNCC call confirm towards fixed network
+call.c:717 info : Outgoing call from '' to '2162630'
+imts.c:1176 info : Call to mobile station, paging number: 2162630
+imts.c:445 info : Entering paging state, sending phone's ID '2162630'.
+imts.c:408 info : All channels are busy now, cannot activate any other channel.
+imts.c:942 info : Sending paging digit '2' as pulses.
+imts.c:942 info : Sending paging digit '1' as pulses.
+imts.c:942 info : Sending paging digit '6' as pulses.
+imts.c:942 info : Sending paging digit '2' as pulses.
+imts.c:942 info : Sending paging digit '6' as pulses.
+imts.c:942 info : Sending paging digit '3' as pulses.
+imts.c:942 info : Sending paging digit '0' as pulses.
+imts.c:755 info : Received acknowledge (Guard tone) from mobile phone (level 71%).
+call.c:440 info : Call is alerting
+call.c:428 info : Indicate MNCC alerting towards fixed network
+mncc_console.c:202 info : Call alerting
+imts.c:466 info : Received response from mobile phone, ringing.
+imts.c:1013 info : Sending ringing signal as pulses.
+imts.c:1022 info : Sending pause after ringing.
+imts.c:1013 info : Sending ringing signal as pulses.
+imts.c:1022 info : Sending pause after ringing.
+imts.c:763 info : Received answer (Connect tone) from mobile phone (level 75%).
+call.c:478 info : Call has been answered by '2162630'
+call.c:466 info : Indicate MNCC answer towards fixed network
+mncc_console.c:206 info : Call connected to '2162630'
+imts.c:476 info : Received answer from mobile phone, conversation started.
+
+</pre>
+
+<p>
+To disconnect a call, the phone must be hung up:
+</p>
+
+<pre>
+
+...
+imts.c:654 info : Received disconnect sequence from mobile phone (level 90%).
+imts.c:418 info : Turing transmitter off.
+imts.c:381 info : Entering IDLE state on channel YK, sending 2000 Hz tone.
+
+</pre>
+
+<p>
+Level adjustment:
+</p>
+
+<p>
+Don't care about it, if you use SDR, since levels are always correctly modulated.
+Now it is time to actually care about the correct transmit and received level.
+In the example above you see a level around 70..77%.
+Now tune your receiver to your transmitter frequency again.
+Adjust the level to something around 73% using a variable resistor on my soundcard's input. (+- 10% is good)
+</p>
+
+<pre>
+
+...
+imts.c:876 notice : Received idle tone (level of 88%), loopback?
+imts.c:876 notice : Received idle tone (level of 76%), loopback?
+imts.c:876 notice : Received idle tone (level of 73%), loopback?
+imts.c:876 notice : Received idle tone (level of 73%), loopback?
+imts.c:876 notice : Received idle tone (level of 73%), loopback?
+imts.c:876 notice : Received idle tone (level of 73%), loopback?
+...
+
+</pre>
+
+<p>
+Now, whatever frequency deviation the phone transmits for signaling, so does your base station. (Around 73% in this case.)
+Use the other variable resistor (connecting your receiver) to adjust the volume until the level matches about 100%. (+- 10% is good)
+Switch back the receiver to up-link frequency and see the result from your phone. (You should now receive the phone at around 100%.)
+</p>
+
+<p>
+Pre- and De-Emphasis:
+</p>
+
+<p>
+In order to have correct level of signaling tones, your transmitter and your receiver should not use pre- and de-emphasis.
+Let this software do that instead, then the signaling tones do not use pre-emphasis, just the voice.
+If possible, add command line option '-p' for pre-emphasis of the transmit signal and '-d' for de-ephasis of the received signal.
+Don't care about it, if you use SDR, since pre-emphasis and de-emphasis is automatically selected and used.
+</p>
+
+<p>
+Fast seize detection:
+</p>
+
+<p>
+Sometimes your sound device might not be fast enough to handle a small sound buffer.
+The maximum buffer of 5 ms (command line option '-b 5') might cause repeating trouble:
+</p>
+
+<pre>
+
+sound_alsa.c:458 error : Buffer underrun: Please use higher latency and enable real time scheduling
+sound_alsa.c:127 error : cannot prepare audio interface for use (Device or resource busy)
+sender.c:330 error : Failed to get number of samples in buffer (rc = -32)!
+sender.c:338 error : Trying to recover!
+
+</pre>
+
+<p>
+<font color="red">
+We must not increase buffer, because we would detect the Connect tone too late, so we would respond too late.
+We must respond before we detect the Connect tone, so that our response matches the time the Connect tone is actually transmitted by the phone.
+</font>
+</p>
+
+<p>
+To do this we must measure the length of the Guard tone.
+First pick up the phone and remember the Guard tone duration.
+It should be close to 350 ms.
+</p>
+
+<pre>
+
+imts.c:544 info : Received seize (Guard + Connect tone) from mobile phone.
+imts.c:545 info : -&gt; Guard tone duration: 349 ms (level 99%)
+
+</pre>
+
+<p>
+Now put the base station into loopback mode and tune receiver to transmitter or loop soundcard's output to input.
+</p>
+
+<pre>
+
+# src/imts/imts -k YK -l 2
+...
+imts.c:942 info : Sending paging digit '1' as pulses.
+imts.c:861 info : Received paging test digit '1' (level 103% delay 68 ms).
+imts.c:942 info : Sending paging digit '2' as pulses.
+imts.c:861 info : Received paging test digit '2' (level 103% delay 67 ms).
+imts.c:942 info : Sending paging digit '3' as pulses.
+imts.c:861 info : Received paging test digit '3' (level 103% delay 67 ms).
+
+</pre>
+
+<p>
+In this case the soundcard's round trip delay is 67 ms.
+Subtract 67 from 349 and you get 282.
+Add '-F 282' to command line option, instead of '-b 5'.
+Now we react about 282 ms after we detected the start of the Guard tone.
+The reaction now matches the time when the phone transmits the Connect tone.
+(Tested with a Limermore LAP-2000 phone.)
+</p>
+
+<p>
+Detecting loss of carrier signal:
+</p>
+
+<p>
+This works with SDR only, because we do not have any RSSI (Received Signal Strength Indicator) signal from a radio connected to the sound card.
+With SDR we know the RX level, so we can define a threshold value for a lost signal.
+Use '-S &lt;db&gt;' or '--squelch &lt;db&gt;' to define the squelch threshold level.
+To measure the noise floor, use the 'm' key to get a bar graph of the current RSSI. (RF level)
+Add some dB to the noise floor for the squelch threshold value.
+An easier way is to use '-S auto' or '--squelch auto' to automatically measure the noise floor level and then automatically use a threshold level that is some dB above this measured level.
+This level is then used to detect loss of carrier.
+Also this level is used to mute the audio path, whenever the signal gets lost for a short time.
+After about 12 seconds of signal loss, a call is released.
+</p>
+
+<pre>
+...
+squelch.c:94 info : RF signal measurement: -69.2 dB noise floor, using threshold of -63.2 dB
+...
+</pre>
+
+<p>
+In the following example I cut off the power of the phone being in a call and waited 12 seconds for the base station to time out:
+</p>
+
+<pre>
+...
+squelch.c:114 info : RF signal weak: Muting audio (RF -77.6 dB &lt; -70.7 db)
+imts.c:491 notice : Detected loss of signal after 12 seconds, releasing.
+...
+</pre>
+
+<p class="toppic">
+<a name="basestation_mts"></a>
+Setup of an MTS base station
+</p>
+
+<p>
+To detect an outgoing call or answer from a mobile phone, it is required to use squelch.
+Squelch is only available with SDR support.
+The command line option '-M' is used to switch to MTS mode.
+Also we use loopback mode '-l 2' to test RF loopback.
+Alternatively use '-l 1' to perform an internal loopback.
+The following example shows setup with LimeSDR (not LimeSDR mini!):
+</p>
+
+<pre>
+
+# src/imts/imts --limesdr -k JS -M -l 2
+...
+imts.c:443 info : Entering paging test state, sending digits 1234567890.
+imts.c:408 info : All channels are busy now, cannot activate any other channel.
+imts.c:336 notice : Created channel #JS
+Base station on channel JS ready, please tune transmitter to 152.690 MHz and receiver to 157.950 MHz. (-5.260 MHz offset)
+...
+imts.c:861 info : Received paging test digit '1' (level 98% delay 9139 ms).
+imts.c:992 info : Sending paging digit '1' as pulses.
+imts.c:861 info : Received paging test digit '1' (level 100% delay 80 ms).
+imts.c:992 info : Sending paging digit '2' as pulses.
+imts.c:861 info : Received paging test digit '2' (level 100% delay 78 ms).
+imts.c:992 info : Sending paging digit '3' as pulses.
+imts.c:861 info : Received paging test digit '3' (level 100% delay 77 ms).
+imts.c:992 info : Sending paging digit '4' as pulses.
+imts.c:861 info : Received paging test digit '4' (level 100% delay 78 ms).
+imts.c:992 info : Sending paging digit '5' as pulses.
+imts.c:861 info : Received paging test digit '5' (level 100% delay 77 ms).
+imts.c:992 info : Sending paging digit '6' as pulses.
+...
+
+</pre>
+
+<p>
+Now run the base station without loopback.
+Add "-S auto" to use squelch level with automatic level calibration.
+Be sure to have an attenuator, so you do not saturate your input of your SDR.
+Refer to the SDR help page for more information and input level display.
+The following example shows a call from mobile phone, just by transmitting toward base station:
+</p>
+
+<pre>
+
+# src/imts/imts --limesdr -k JS -M -S auto
+...
+squelch.c:61 info : RF signal squelch: Use automatic threshold
+imts.c:386 info : Entering IDLE state on channel JS, sending 600 Hz tone.
+imts.c:336 notice : Created channel #JS
+Base station on channel JS ready, please tune transmitter to 152.690 MHz and receiver to 157.950 MHz. (-5.260 MHz offset)
+...
+dsp.c:466 info : Low RF level, muting.
+squelch.c:99 info : RF signal measurement: -69.9 dB noise floor, using squelch threshold of -59.9 dB
+squelch.c:99 info : RF signal measurement: -70.2 dB noise floor, using squelch threshold of -60.2 dB
+squelch.c:112 info : RF signal strong: Unmuting audio (RF -54.2 &gt;= -60.2 dB)
+dsp.c:476 info : High RF level, unmuting; turning transmitter on.
+imts.c:506 info : Detects RF signal in IDLE mode, calling the opterator at '010'.
+call.c:405 info : Incoming call from 'unknown' to '010'
+call.c:407 info : -&gt; Call to Operator '010'
+call.c:385 info : Indicate MNCC setup towards fixed network
+mncc_console.c:165 info : Incoming call from ''
+mncc_console.c:196 info : Call automatically answered
+call.c:744 info : Received MNCC answer from fixed network
+call.c:746 info : Call answered
+call.c:748 info : Indicate MNCC setup complete towards fixed network
+
+</pre>
+
+<p>
+To terminate the call, press 'h':
+</p>
+
+<pre>
+
+mncc_console.c:388 info : Call hangup
+call.c:774 info : Received MNCC release from fixed network with cause 16
+call.c:778 info : Call released toward mobile network
+imts.c:1237 info : Call has been released by network, releasing call.
+imts.c:1254 notice : Outgoing release, during call, releasing!
+imts.c:418 info : Turing transmitter off.
+imts.c:386 info : Entering IDLE state on channel JS, sending 600 Hz tone.
+
+</pre>
+
+<p>
+To call the mobile phone, enter the number as command line parameter or after running the base station.
+Then press 'd' to dial the number.
+If the phone rings, answer by start transmitting:
+</p>
+
+<pre>
+
+on-hook: 23042 (press d=dial)
+mncc_console.c:358 info : Outgoing call to '23042'
+call.c:699 info : Received MNCC call from fixed network '' to mobile '23042'
+call.c:706 info : Indicate MNCC call confirm towards fixed network
+call.c:717 info : Outgoing call from '' to '23042'
+imts.c:1177 info : Call to mobile station, paging number: 23042
+imts.c:445 info : Entering paging state, sending phone's ID '23042'.
+imts.c:408 info : All channels are busy now, cannot activate any other channel.
+imts.c:992 info : Sending paging digit '2' as pulses.
+imts.c:992 info : Sending paging digit '3' as pulses.
+imts.c:992 info : Sending paging digit '0' as pulses.
+imts.c:992 info : Sending paging digit '4' as pulses.
+imts.c:992 info : Sending paging digit '2' as pulses.
+imts.c:975 info : Digits complete, assuming the phone is ringing.
+call.c:440 info : Call is alerting
+call.c:428 info : Indicate MNCC alerting towards fixed network
+mncc_console.c:202 info : Call alerting
+...
+squelch.c:112 info : RF signal strong: Unmuting audio (RF -66.5 &g6;= -67.7 dB)
+dsp.c:476 info : High RF level, unmuting.
+imts.c:520 info : Detected RF signal, mobile is now transmitting.
+call.c:478 info : Call has been answered by '23042'
+call.c:466 info : Indicate MNCC answer towards fixed network
+mncc_console.c:206 info : Call connected to '23042'
+imts.c:476 info : Received answer from mobile phone, conversation started.
+
+</pre>
+
+<p>
+Use MTS with 7 digit ID or IMTS with 5 digit ID:
+</p>
+
+<p>
+Some later phone allow to operate in IMTS and MTS networks.
+In order to roam, the caller ID length can be different.
+Use command line option '-5' to use IMTS mode with 5 digit IDs.
+Use command line option '-7' to use MTS mode with 7 digit IDs.
+</p>
+
+<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
+</td></tr></table></center>
+</body>
+</html>
diff --git a/docs/imts.jpg b/docs/imts.jpg
new file mode 100644
index 0000000..cd9db3e
--- /dev/null
+++ b/docs/imts.jpg
Binary files differ
diff --git a/docs/imts_small.jpg b/docs/imts_small.jpg
new file mode 100644
index 0000000..dadccfc
--- /dev/null
+++ b/docs/imts_small.jpg
Binary files differ
diff --git a/docs/index.html b/docs/index.html
index 568749b..3261b57 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -31,20 +31,28 @@
<th>NMT (Nordic Mobile Telephone)</th>
</tr>
<tr>
+ <td><img src="imts_small.jpg" title="(Improved) Mobile Telephone Service"/></td>
<td><img src="amps_small.jpg" title="Advanced Mobile Phone Service"/></td>
- <td><img src="tv_small.jpg" title="TV signal generator and transmitter"/></td>
</tr>
<tr>
+ <th>MTS / IMTS (USA / Canada)</th>
<th>AMPS (USA) / TACS (UK / Ireland / Italy)</th>
- <th>Transmit TV test image signals</th>
</tr>
<tr>
+ <td><img src="eurosignal_small.jpg" title="Eurosignal paging service"/></td>
+ <td><img src="datenklo_small.jpg" title="The Chaos Computer Club Modem"/></td>
+</tr>
+<tr>
+ <th>Eurosignal paging service</th>
+ <th>The Chaos Computer Club Modem</th>
+</tr>
+<tr>
+ <td><img src="tv_small.jpg" title="TV signal generator and transmitter"/></td>
<td><img src="setup_small.jpg"/></td>
- <td></td>
</tr>
<tr>
+ <th>Transmit TV test image signals</th>
<th>my early radio setup</th>
- <th></th>
</tr>
</table>
</center>
@@ -88,9 +96,11 @@ Implemented networks:
<li><a href="b-netz.html">B-Netz</a> (Germany) ATF-1 (Netherlands)</li>
<li><a href="c-netz.html">C-Netz</a> (Germany)</li>
<li><a href="nmt.html">NMT 450 / 900 - Nordic Mobile Telephone</a> (Scandinavia)</li>
+ <li><a href="imts.html">MTS / IMTS - (Improved) Mobile Telephone Service</a> (USA / Canada)</li>
<li><a href="amps.html">AMPS - Advanced Mobile Phone Service</a> (USA)</li>
<li><a href="tacs.html">TACS / JTACS - Total Access Communication System</a> (UK/Italy/Japan)</li>
<li><a href="radiocom2000.html">Radiocom 2000</a> (France)</li>
+ <li><a href="eurosignal.html">Eurosignal</a> (Europe)</li>
</ul>
</center>
@@ -100,7 +110,10 @@ Additional features:
<center>
<ul>
+ <li><a href="datenklo.html">Das Datenklo</a></li>
<li><a href="tv.html">Osmo TV</a></li>
+ <li><a href="sim.html">C-Netz Sim Card</a></li>
+ <li>C-Netz FuVSt (BSC to control a real base station)</li>
</ul>
</center>
diff --git a/docs/install.html b/docs/install.html
index 43deb7d..8cc280d 100644
--- a/docs/install.html
+++ b/docs/install.html
@@ -11,7 +11,7 @@
<p>
To run this software, you need a Linux PC with development environment (gcc compiler).
At least one Alsa sound interfaces is required.
-Two sound interfaces are required to talk and listen trough the base station using a headset with microphone.
+Two sound interfaces are required to talk and listen through the base station using a headset with microphone.
</p>
<p>
diff --git a/docs/radiocom2000.html b/docs/radiocom2000.html
index 29af0bd..22856ea 100644
--- a/docs/radiocom2000.html
+++ b/docs/radiocom2000.html
@@ -43,7 +43,7 @@ The network was closed for the exclusive benefit of the standard GSM in July 28t
<li>Frequency range UHF (Band 1): 424.800 - 427.9875 MHz (down-link); 414.800 - 417.9875 MHz (up-link)
<li>Frequency range VHF (Band 3): 169.800 - 172.9875 MHz (down-link); 165.200 - 168.3875 MHz (up-link)
<li>See software option "-B list" for other bands
- <li>256 voice or contol channels
+ <li>256 voice or control channels
<li>Duplex distance: 10 MHz
<li>Channel spacing: 12.5 KHz
<li>Voice modulation: FM
diff --git a/docs/sdr.html b/docs/sdr.html
index 0552bdc..4b462d9 100644
--- a/docs/sdr.html
+++ b/docs/sdr.html
@@ -131,7 +131,7 @@ As above, you can have these options pre-set by just a single option: <b>--limes
</pre>
<p>
-<font color="red">Importaint: Select your RX antenna input!</font>
+<font color="red">Important: Select your RX antenna input!</font>
</p>
<p>
@@ -141,7 +141,7 @@ Different versions of LimeSuite have different default antenna inputs, so be sur
</p>
<p>
-<font color="red">Importaint: Always use two or more channels, to avoid one channel being at the center of the spectrum!</font>
+<font color="red">Important: Always use two or more channels, to avoid one channel being at the center of the spectrum!</font>
</p>
<p>
@@ -223,7 +223,7 @@ I suggest to stay below 60% for each threads.
<p>
<b>Example: C-Netz</b><br>
-Two channes are created, one the OgK (control channel) and one SpK (speech channel).
+Two channels are created, one the OgK (control channel) and one SpK (speech channel).
The distance between channels is 20 KHz (two channels).
Because C-Netz uses only odd channel numbers for 10 KHz spacing, we use channel 131 (OgK) and 135 (SpK).
</p>
diff --git a/docs/sim-attiny85.jpg b/docs/sim-attiny85.jpg
new file mode 100644
index 0000000..1ee9950
--- /dev/null
+++ b/docs/sim-attiny85.jpg
Binary files differ
diff --git a/docs/sim-contacts.jpg b/docs/sim-contacts.jpg
new file mode 100644
index 0000000..3c447e4
--- /dev/null
+++ b/docs/sim-contacts.jpg
Binary files differ
diff --git a/docs/sim-rs232.jpg b/docs/sim-rs232.jpg
new file mode 100644
index 0000000..6b244d6
--- /dev/null
+++ b/docs/sim-rs232.jpg
Binary files differ
diff --git a/docs/sim.html b/docs/sim.html
new file mode 100644
index 0000000..248a37c
--- /dev/null
+++ b/docs/sim.html
@@ -0,0 +1,472 @@
+<html>
+<head>
+<link href="style.css" rel="stylesheet" type="text/css" />
+<title>osmocom-analog</title>
+</head>
+<body>
+<center><table><tr><td>
+
+<h2><center>C-Netz SIM Emulator</center></h2>
+
+<center><img src="sim.jpg"/></center>
+
+<p>
+Why emulating a SIM card?
+Maybe you got an a C-Netz phone from the attic, friend or Ebay?
+But the SIM card is missing. Without SIM card you cannot use your C-Netz phone at all.
+Then you buy a high price on Ebay to get a used SIM card.
+You find out that the SIM card requires a PIN that you don't know.
+Even if you find a SIM card with no PIN enabled, it may not work with newer phones.
+The emulator can help you in this case.
+</p>
+
+<p>
+Also the emulator can be used to emulate service cards or special cards that enable cell monitoring.
+With this emulator you can modify all subscriber data without restrictions.
+</p>
+
+<ul>
+ <li><a href="#emu">Emulating SIM Card</a>
+ <li><a href="#sniff">Sniffing SIM Card</a>
+ <li><a href="#byo">Build Your Own SIM Card</a>
+ <li><a href="#usage">Using the SIM Card</a>
+ <li><a href="#service">Service Cards</a>
+</ul>
+
+
+<p class="toppic">
+<a name="emu"></a>
+Emulating SIM Card
+</p>
+
+<center><img src="sim-rs232.jpg"/></center>
+
+<p>
+The easiest way to emulate a C-Netz SIM card is to use your Linux PC with a serial interface connected to the card reader of the phone.
+Connection can be made directly via wires or via ISO card PCB.
+You may also use an old ISO card an drill away the chip inside. Then solder thin wires close to the pads and connect them to a serial interface.
+</p>
+
+<p>
+In order to connect the card to your Linux PC, you need a serial-to-USB interface.
+Don't use the 9 pin SUB-D type of interface, because they have level shifters and will brick your phone.
+Use TTL level interface as shown in the image above.
+</p>
+
+<p>
+Because the SIM cards uses TTL level, we can connect a CP2102 controller directly to the card reader of a phone.
+Don't worry about 5 Volts level from the card reader. The CP2102 can handle it.
+In order to connect TX and RX together on one pad of the SIM card, we need to add a diode between the I/O pad and the TX output.
+The cathode must point towards the TX output, so that TX can only pull the I/O line low (0).
+Use a diode with a low forward voltage drop, like a Schottky diode. I use a simple 1n4148 Silicon diode and it works too.
+</p>
+
+<p>
+<font color="red">Important: Some serial interfaces have wrong signal labels.
+TX and RX might be reversed, so that TX is actually an input and RX an output.
+You will find out when you connect an Milliamp meter between signal and ground.
+The output will have several Milliamps, but the input doesn't.
+</font>
+</p>
+
+<p>
+<font color="red">Important: Be sure to run your phone on battery and not via gounded power supply.
+If the output of the power supply is grounded, the ground of your power line is also connected to the phone's card reader.
+Voltage spikes on the power line's ground between your PC and your phone may kill the card reader or the USB port.
+Use an isolating transformer!
+</font>
+</p>
+
+<p>
+<font color="red">Important: The serial interface must support 8e2. (8 data bits, even parity, two stop bits)
+I suggest to use the CP2102. If you know other serial interfaces that work, let me know.
+</font>
+</p>
+
+<table><tr>
+<td><img src="sim-contacts.jpg"/></td>
+<td><p>
+Connect Ground to GND.
+<br>
+Connect CTS input to RESET.
+<br>
+Connect RX input to I/O.
+<br>
+Connect TX output via diode to I/O.
+<br>
+(Place cathode towards TX output)
+</p></td>
+</tr></table>
+
+<p>
+To run the emulator, use the "sim" keyword at the end of the command line.
+Use the '-s' option to give the correct serial interface:
+</p>
+
+<pre>
+
+# src/sim/cnetz_sim -s /dev/ttyUSB0 sim
+
+...
+FUTLN=23100001, Sicherungscode=3103, Kartekennung=3, Sonderheitenschluessel=0, Wartungsschluessel=65535
+Telephone directory has 80 entries.
+SIM emulator ready, please start the phone!
+sim.c:1352 info : Reset signal on (low)
+sim.c:1352 info : Reset signal off (high)
+sim.c:1371 info : Card has disabled PIN (system PIN '0000') Selecting card #1.
+sim.c:1374 info : Sending ATR
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=0 N(R)=0
+sim.c: 473 info : SL-APPL app 3
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=0 N(R)=1
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=1 N(R)=1
+sim.c: 558 info : RD-EBDT
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=1 N(R)=2
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=2 N(R)=2
+sim.c: 473 info : SL-APPL app 4
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=2 N(R)=3
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=3 N(R)=3
+sim.c: 473 info : SL-APPL app 3
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=3 N(R)=4
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=4 N(R)=4
+sim.c: 558 info : RD-EBDT
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=4 N(R)=5
+sim.c:1125 info : RX message
+sim.c:1135 info : control I: N(S)=5 N(R)=5
+sim.c: 599 info : RD-RUFN (loc=0)
+sim.c: 655 info : 80 numbers can be stored in EEPROM
+sim.c:1222 info : TX response
+sim.c:1228 info : control I: N(S)=5 N(R)=6
+sim.c:1352 info : Reset signal on (low)
+
+</pre>
+
+<p>
+Use '-h' command line option to get a list of all options.
+</p>
+
+
+<p class="toppic">
+<a name="sniff"></a>
+Sniffing SIM Card
+</p>
+
+<p>
+To run the sniffer, use the "sniff" keyword at the end of the command line.
+You only need to connect I/O line to the RX line of your serial interface. (And ground of course!)
+Use the '-s' option to give the correct serial interface:
+</p>
+
+
+<pre>
+
+# src/sim/cnetz_sim -s /dev/ttyUSB0 sniff
+
+sniffer.c: 602 info : ----------------------------------------
+sniffer.c: 609 info : Reading ATR normal bit order:
+sniffer.c: 547 info : TD1 T=14: Refers to transmission protocols not standardized by ISO/IEC JTC 1/SC 17.
+sniffer.c: 590 info : ----------------------------------------
+sniffer.c: 547 info : TD2 T=14: Refers to transmission protocols not standardized by ISO/IEC JTC 1/SC 17.
+sniffer.c: 590 info : ----------------------------------------
+sniffer.c: 418 info : TA3 fsmin = 3 MHz
+sniffer.c: 433 info : TA3 fsmax = 5 MHz (Default)
+sniffer.c: 470 info : TB3 Maximum block size = 42
+sniffer.c: 516 info : TC3 Character Waiting Time = 3
+sniffer.c: 547 info : TD3 T=14: Refers to transmission protocols not standardized by ISO/IEC JTC 1/SC 17.
+sniffer.c: 590 info : ----------------------------------------
+sniffer.c: 440 info : TA4 Block Waiting Time = 4
+sniffer.c: 590 info : ----------------------------------------
+sniffer.c: 595 info : History byte #1: 0x92
+sniffer.c: 595 info : History byte #2: 0x80
+sniffer.c: 595 info : History byte #3: 0x00
+sniffer.c: 595 info : History byte #4: 0x41
+sniffer.c: 595 info : History byte #5: 0x32
+sniffer.c: 595 info : History byte #6: 0x36
+sniffer.c: 595 info : History byte #7: 0x01
+sniffer.c: 595 info : History byte #8: 0x11
+sniffer.c: 690 info : Checksum 0xe4 ok.
+sniffer.c: 697 info : ATR done!
+sniffer.c: 715 info : ----------------------------------------
+sniffer.c: 734 info : Layer 2:
+sniffer.c: 735 info : source 3 -&gt; to 1
+sniffer.c: 737 info : control I: N(S)=0 N(R)=0
+sniffer.c: 744 info : length 15
+sniffer.c: 203 info : Interface control layer ICB1:
+sniffer.c: 207 info : ON-LINE-BIT: 0 = Off-line data
+sniffer.c: 211 info : CONFIRM-BIT: 0 = No meaning
+sniffer.c: 213 info : MASTER/SLAVE-BIT: 1 = Sender is master
+sniffer.c: 219 info : WT-EXTENSION-BIT: 0 = No request for WT-Extension
+sniffer.c: 223 info : ABORT/TERMINATE-BIT: 0 = No meaning
+sniffer.c: 227 info : ERROR-BIT: 0 = No meaning
+sniffer.c: 231 info : CHAINING-BIT: 0 = No more ICL data follows
+sniffer.c: 235 info : ICB-EXTENSION-BIT: 0 = no ICB follows
+sniffer.c: 48 info : Layer 7:
+sniffer.c: 50 info : I = Command
+sniffer.c: 51 info : CLA = 0x02
+sniffer.c: 54 info : -&gt; CNTR (Control Class)
+sniffer.c: 75 info : INS = 0xf1
+sniffer.c: 80 info : -&gt; SL-APPL (Select Application)
+sniffer.c: 180 info : DLNG = 11
+sniffer.c: 187 info : DATA(0) = 0x38 '8' 56
+sniffer.c: 187 info : DATA(1) = 0x39 '9' 57
+sniffer.c: 187 info : DATA(2) = 0x34 '4' 52
+sniffer.c: 187 info : DATA(3) = 0x39 '9' 57
+sniffer.c: 187 info : DATA(4) = 0x30 '0' 48
+sniffer.c: 187 info : DATA(5) = 0x31 '1' 49
+sniffer.c: 187 info : DATA(6) = 0x30 '0' 48
+sniffer.c: 187 info : DATA(7) = 0x30 '0' 48
+sniffer.c: 187 info : DATA(8) = 0x33 '3' 51
+sniffer.c: 187 info : DATA(9) = 0x30 '0' 48
+sniffer.c: 187 info : DATA(10) = 0x31 '1' 49
+sniffer.c: 715 info : ----------------------------------------
+sniffer.c: 734 info : Layer 2:
+sniffer.c: 735 info : source 1 -&gt; to 3
+sniffer.c: 737 info : control I: N(S)=0 N(R)=1
+sniffer.c: 744 info : length 4
+sniffer.c: 203 info : Interface control layer ICB1:
+sniffer.c: 207 info : ON-LINE-BIT: 0 = Off-line data
+sniffer.c: 211 info : CONFIRM-BIT: 0 = No meaning
+sniffer.c: 215 info : MASTER/SLAVE-BIT: 0 = Sender is slave
+sniffer.c: 219 info : WT-EXTENSION-BIT: 0 = No request for WT-Extension
+sniffer.c: 223 info : ABORT/TERMINATE-BIT: 0 = No meaning
+sniffer.c: 227 info : ERROR-BIT: 0 = No meaning
+sniffer.c: 231 info : CHAINING-BIT: 0 = No more ICL data follows
+sniffer.c: 235 info : ICB-EXTENSION-BIT: 0 = no ICB follows
+sniffer.c: 48 info : Layer 7:
+sniffer.c: 142 info : I = Response
+sniffer.c: 143 info : CCRC = 0x05
+sniffer.c: 145 info : -&gt; PIN-NOT-OK
+sniffer.c: 149 info : -&gt; APRC valid
+sniffer.c: 158 info : APRC = 0x02
+sniffer.c: 160 info : -&gt; Bit 2 = 1:PIN-Check required
+sniffer.c: 166 info : -&gt; Bit 3 = 0:Application unlocked
+sniffer.c: 170 info : -&gt; Bit 5 = 0:GEBZ/RUFN unlocked
+sniffer.c: 174 info : -&gt; Bit 6 = 0:GEBZ not full
+sniffer.c: 180 info : DLNG = 0
+sniffer.c: 302 info : Resetting sniffer
+
+</pre>
+
+<p>
+When the phone is switched on, the SIM card is powered up and outputs the ATR sequence (Answer To Reset).
+</p>
+
+<p>
+The first message is a command message that is transmitted from the phone towards the SIM card.
+The layer 2 header indicates the direction and the length of 15 bytes.
+The ICR layer has no meaning with the C-Netz.
+Except for the MASTER/SLAVE-BIT, no other bit is used.
+The layer 7 (application) header indicates the command and the message type and length, followed by 11 bytes of data.
+This command tells the SIM card to select C-Netz application.
+</p>
+
+<p>
+The second message is a response message that is transmitted from the SIM card towards the phone.
+The layer 2 header indicates the direction and the length of 4 bytes.
+The layer 7 header indicates the response and status bits and length, followed by 0 bytes of data.
+The response tells the SIM card that a PIN is required to complete the command.
+The user is prompted to enter the pin.
+</p>
+
+<p>
+To read more about the protocol, and the meaning of messages, refer to <a href="http://download.eversberg.eu/mobilfunk/C-Netz-Dokus/FTZ%20171%20TR%2060%20-%20Anhang%201%20Berechtigungskarte%20als%20Prozessorkarte.pdf">FTZ 171 TR 60 - Anhang 1 Berechtigungskarte als Prozessorkarte.pdf</a>
+</p>
+
+
+<p class="toppic">
+<a name="byo"></a>
+Build Your Own SIM Card
+</p>
+
+<center><img src="sim_layout.png"/></center>
+
+<p>
+You find the PCB drawings inside the "layout" directory of the git repository.
+Be sure to print it without scaling!
+Check if the printed size matches an ISO card.
+Also there is the source files for the 'Eagle' layout program, if you like to change it.
+</p>
+
+<p>
+You may use an "Arduino UNO" or "ATTINY85" to emulate a SIM card without a PC.
+In case of the Arduino, you still need wires to connect it to the card reader of the phone.
+If you use an ATTINY85, you can put the micro controller directly on a PCB card, as shown on top of this page.
+</p>
+
+<p>
+To compile and run with Arduino, you need to open "src/sim/sim.ino" with Arduino software and select the "Arduino UNO" board.
+The RESET input is at pin 6 and the I/O line at pin 7.
+Connect these two lines together with ground line to the card reader or ISO card PCB.
+You don't need a diode this time, since pin 7 is automatically switched between input and output.
+The serial protocol is emulated in software.
+The status LED (pin 13) will flash whenever a message is received from the card reader.
+</p>
+
+<p>
+To compile and run with ATTINY85, you need to open "src/sim/sim.ino" with Arduino software and select the "ATiny25/45/85" board and the "ATiny85" chip.
+Refer to the internet on how to compile and flash the ATTINY85 without boot-loader.
+It is beyond the scope of this documentation.
+This time you need 5 wires to connect (VCC and Clock also).
+</p>
+
+<p>
+<font color="red">Important: After flashing you need to wait 10 seconds before removing power.
+During that time the EEPROM is initialized.
+If you would read out the EEPROM, you will notice the letter 'C' at address 0.
+Then you would know that the init process was finished with success.
+</font>
+</p>
+
+<p>
+If you use the DIP version of the ATTINY85, you cannot put it on the card itself.
+The PCB in the picture on top of this page shows the DIP socket next to the actual card area.
+Be sure to put the chip on the back side of the SIM card.
+This works only if the phone does not completely enclose the card.
+</p>
+
+<p>
+If you use the SOIC version of the ATTINY85, you need to make it flat, so it fits into your phone.
+You may use the full size SIM or just the mini SIM.
+I prefer the mini SIM and use an adapter card for larger phones.
+</p>
+
+<center><img src="sim-attiny85.jpg"/></center>
+
+<p>
+The original ATTINY85 (1) is shown upside down.
+Bend the legs straight and shorten them, so they still fit into a programmer's socket. (2)
+Use P400 sand paper to sand off the bottom of the chip's case, until you reach the copper plate. (3)
+Make a hole into the PBC and solder the chip upside down into that hole.
+Pin 1 is marked on the PCB.
+</p>
+
+<p>
+<font color="red">Important: You need to change clock source to pin 1.
+</font>
+</p>
+
+<p>
+Change lower fuse of 0xc0.
+Note that you will not be able to do any further programming unless you apply clock signal to pin 1.
+Use a crystal oscillator connected to pin 1 when you like to update the firmware in the future.
+You may also use other type of clock signal.
+Try something between 1 and 8 MHz.
+I recommend to use the USBasp or a clone of that. It is cheap and easy and works with USB.
+To set the fuses using "avrdude" in conjunction with "usbasp" flash tool, use:<br>
+<br>
+avrdude -c usbasp-clone -p t85 -U lfuse:w:0xc0:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m<br>
+<br>
+If you run it again, you might notice that there is no response without a clock applied.
+Apply a clock to pin 1 and see if you get a response again.
+</p>
+
+<p class="toppic">
+<a name="usage"></a>
+Using the SIM Card
+</p>
+
+<p>
+After powering up the phone with SIM adapter/emulator attached, the phone should show the default subscriber number (FUTLN) on the display.
+(Not all phones do. Read the manual to get the key code on how to show the subscriber number.)
+There is no PIN enabled by default, so the SIM card is ready after inserting or poweing up the phone.
+Now you can make calls, add telephone numbers or change PIN.
+</p>
+
+<p>
+The SIM card can emulate 8 different cards.
+They share the same telephone directory, but have different subscriber data.
+Subscriber data can be changed to anything you like.
+This way it is possible to even emulate service cards ("Wartungskarten"), to put phones into service mode or special cell monitor mode.
+</p>
+
+<p>
+If the PIN is disabled (default), the first card with first subscriber data is emulates.
+To select different card with dfferent subscriber data, change the PIN to 0001 .. 0008.
+Refer to the phone's manual on how to change the PIN.
+E.g. if you store the PIN 0000 or 0001, the first card with the first subscriber data is emulated.
+E.g. if you store the PIN 0005, the fifth card with the fifth subscriber data is emulated.
+In all cases, there is no PIN required when you turn on the phone.
+</p>
+
+<p>
+<table class="sim">
+<tr><th>PIN</th><th>FUTLN =<br>Subscriber</th><th>Sicherungs-<br>code</th><th>Karten-<br>kennung</th><th>Sonderheiten-<br>schl&uuml;ssel</th><th>Wartungs-<br>schl&uuml;ssel</th></tr>
+<tr><td>0000 or 0001</td><td>2222001</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0002</td><td>2222002</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0003</td><td>2222003</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0004</td><td>2222004</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0005</td><td>2222005</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0006</td><td>2222006</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0007</td><td>2222007</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+<tr><td>0008</td><td>2222008</td><td>3103</td><td>3</td><td>0</td><td>65535</td></tr>
+</table>
+</p>
+
+<p>
+You may want to use a PIN to select the card whenever you turn on the phone.
+Use the phone to enable a PIN that does not start with "000".
+When you restart your phone, you may enter that PIN, to select the first card.
+Alternatively you may enter the PIN 0000 or 0001, to select the first card, no matter what the PIN was.
+Or you may enter the PIN 0002 .. 0008, to select second to eighth card.
+</p>
+
+<p>
+You may also alter each of the 8 different subscriber data store on the SIM.
+In order to do that, you need to set a PIN, so the phone will ask for a PIN whenever it is turned on.
+Choose any PIN you like, but not a PIN stat starts with 000.
+Turn on the phone and you will be asked for a PIN.
+Enter the PIN 9991 to alter the first subscriber data.
+Enter the PIN 9992 .. 9998 to alter second to eighth subscriber data.
+The subscriber data is shown in the telephone directory and can be altered by changing the numbers in that directory.
+</p>
+
+<p>
+The default subscriber data and where to change them in the telephone directory:
+<br><br>
+<table class="sim">
+<tr><th>Entry</th><th>Name</th><th>Number</th></tr>
+<tr><td>01</td><td>FUTLN</td><td>2222001 *</td></tr>
+<tr><td>02</td><td>Sicherungscode</td><td>3103</td></tr>
+<tr><td>03</td><td>Kartenkennung</td><td>3</td></tr>
+<tr><td>04</td><td>Sonderheitsschl.</td><td>0</td></tr>
+<tr><td>05</td><td>Wartungsschl.</td><td>65535</td></tr>
+</table>
+<br>
+(*) When PIN 9991 was entered.
+</p>
+
+
+<p class="toppic">
+<a name="service"></a>
+Service Cards
+</p>
+
+<p>
+To program one of the following service cards, change the subscriber data to the indicated values.
+</p>
+
+<p>
+<table class="sim">
+<tr><th>Type</th><th>FUTLN =<br>Subscriber</th><th>Sicherungs-<br>code</th><th>Karten-<br>kennung</th><th>Sonderheiten-<br>schl&uuml;ssel</th><th>Wartungs-<br>schl&uuml;ssel</th></tr>
+<tr><td>Siemens C5<br>service mode</td><td>-</td><td>-</td><td>-</td><td>900</td><td>1000</td></tr>
+<tr><td>Philips Miniporty<br>service mode</td><td>-</td><td>-</td><td>-</td><td>900</td><td>1000</td></tr>
+<tr><td>Philips Miniporty<br>cell monitor</td><td>-</td><td>-</td><td>-</td><td>900</td><td>1728 or<br>2729</td></tr>
+<tr><td>Philips Porty<br>service mode</td><td>0</td><td>0</td><td>0</td><td>2304</td><td>-</td></tr>
+<tr><td>Philips Porty<br>cell monitor</td><td>-</td><td>-</td><td>-</td><td>898</td><td>-</td></tr>
+</table>
+</p>
+
+
+<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
+</td></tr></table></center>
+</body>
+</html>
diff --git a/docs/sim.jpg b/docs/sim.jpg
new file mode 100644
index 0000000..1f2a037
--- /dev/null
+++ b/docs/sim.jpg
Binary files differ
diff --git a/docs/sim_layout.png b/docs/sim_layout.png
new file mode 100644
index 0000000..f81e9f7
--- /dev/null
+++ b/docs/sim_layout.png
Binary files differ
diff --git a/docs/software.html b/docs/software.html
index 4991a66..b5acc0c 100644
--- a/docs/software.html
+++ b/docs/software.html
@@ -270,7 +270,7 @@ Press 'w' again to turn off this view.
<p>
To check measurements like input level and quality, press the 'm' key.
-You will get an ASCII art plot of differen bar graphs.
+You will get an ASCII art plot of different bar graphs.
They show tone / frame level and quality.
The green bar shows the current level.
The yellow marker shows the last/peak/average level.
@@ -339,7 +339,7 @@ nmt -k 1 -k 4 -a hw:0,0 -a hw:0,0 -T CC/TC -T TC -0 1 -0 2 -Y se,1 -x
</pre>
<p>
-This example will run a base station with two channel (1 and 4) via two radios connectd to a stereo sound card.
+This example will run a base station with two channel (1 and 4) via two radios connected to a stereo sound card.
The sound card is accessed via '-a hw:0,0'.
Because the sound card is stereo, the '-a' option can be given for two channels.
The first channel is a combined control+traffic channel and the second a traffic channel.
diff --git a/docs/style.css b/docs/style.css
index 248c72d..8232fb6 100644
--- a/docs/style.css
+++ b/docs/style.css
@@ -74,12 +74,30 @@ td {
table.nmt {
width: 400px;
border-spacing: 0px;
- border:4px solid black;
- border-collapse:collapse;
+ border: 4px solid black;
+ border-collapse: collapse;
}
td.nmt {
padding: 3px;
- border:4px solid black
+ border: 4px solid black;
+}
+
+table.imts {
+ width: 600px;
+ text-align: center;
+ table-layout: fixed;
+ border-spacing: 0px;
+ border: none;
+ border-collapse: collapse;
+}
+
+table.sim {
+ width: 816;
+ text-align: left;
+ table-layout: fixed;
+ border-spacing: 0px;
+ border: none;
+ border-collapse: collapse;
}
li {
diff --git a/docs/tv.html b/docs/tv.html
index 3aa48d2..38f3747 100644
--- a/docs/tv.html
+++ b/docs/tv.html
@@ -26,6 +26,11 @@ The following test signals are supported:
</ul>
</p>
+<p>
+<font color="red">Important: SDR is required! It must be capable of about 15 Mega samples per second.</font>
+<br><br>
+If you use LimeSDR, you MUST use USB 3.0 to have enough bandwidth!
+</p>
<hr><center>[<a href="index.html">Back to main page</a>]</center><hr>
</td></tr></table></center>
diff --git a/docs/zeitansage.mp3 b/docs/zeitansage.mp3
new file mode 100644
index 0000000..b74e1de
--- /dev/null
+++ b/docs/zeitansage.mp3
Binary files differ
diff --git a/extra/Makefile.am b/extra/Makefile.am
new file mode 100644
index 0000000..5cf7c2f
--- /dev/null
+++ b/extra/Makefile.am
@@ -0,0 +1,12 @@
+AM_CPPFLAGS = -Wall -Wextra -g $(all_includes)
+
+bin_PROGRAMS = \
+ cnetz_memory_card_generator
+
+cnetz_memory_card_generator_SOURCES = \
+ main.c
+cnetz_memory_card_generator_LDADD = \
+ $(COMMON_LA) \
+ $(top_builddir)/src/libdebug/libdebug.a \
+ $(top_builddir)/src/liboptions/liboptions.a
+
diff --git a/extra/README b/extra/README
new file mode 100644
index 0000000..60e06c0
--- /dev/null
+++ b/extra/README
@@ -0,0 +1,58 @@
+This is a generator for the C-Netz Sim Card
+"Berechtigungskarte als Speicherkarte". (memory card)
+
+In the sub directory "simulator" you find an Arduino Sketch to simulate a memory card.
+
+In the sub directory "programmer" you find an Arduino Sketch to program an SLE4428 card.
+
+NOTE:
+This will only work with old phones that were released before the CPU SIM was released.
+The Smart Card "Berechtigungskarte als Prozessorkarte" is implemented at src/sim.
+
+
+Run cnetz_memory_card_generator:
+
+# ./extra/cnetz_memory_card_generator
+Usage: ./cnetz_memory_card_generator <futln_nat> <futln_fuvst> <futln_rest> <sicherungscode> <sonderheitsschluessel>
+
+# ./extra/cnetz_memory_card_generator 2222002
+
+Magic Data 011..015 = 30 (0x1e)
+Magic Data 018..020 = 7
+Magic Data 021..023 = 2
+FUTLN NAT = 2
+FUTLN FUVST = 2
+FUTLN REST = 22002
+Sicherungscode=12345
+Sonderheitenschluessel=0 (0x0000)
+Wartungsschluessel=65535 (0xffff)
+
+Binary data: (LSB first)
+0xff, 0xf7, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4b, 0x90,
+0x5f, 0x25, 0x07, 0x0c, 0x00, 0x00, 0xfe, 0xfd,
+0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+
+
+After generation, the hex data can be copied to the data array of programmer/programmer.ino or simulator/simulator.ino
+
+If you use the programmer, connect an SLE4428 or compatible as inicated at the pin definition of programmer.ino.
+
+Note: The SLE card must not have protected serial number area. (ATR area)
+Also the card must show all 416 written bits via ATR, not only 32 bits.
+
+If you use the Arduino as emulator, connect the card reader as indicated at the pin definition of simulator.ino
+
+Tested:
+Works with BSA 51
+Does not work with all other phones I have.
+
+Test cards and monitor cards for BSA 51:
+# ./extra/cnetz_memory_card_generator --special-key 898 2222002
+# ./extra/cnetz_memory_card_generator --special-key 899 2222002
+# ./extra/cnetz_memory_card_generator --magic1 0x1d --special-key 0x900 --maintenance-key 0xa139 2222002
+# ./extra/cnetz_memory_card_generator --magic1 0x1d --special-key 0x901 --maintenance-key 0xa139 2222002
+
diff --git a/extra/main.c b/extra/main.c
new file mode 100644
index 0000000..1a7b0b7
--- /dev/null
+++ b/extra/main.c
@@ -0,0 +1,257 @@
+/* SIM Card for C-Netz "Berechtigungskarte als Speicherkarte"
+ *
+ * (C) 2016 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 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/>.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <errno.h>
+#include <../src/libdebug/debug.h>
+#include <../src/liboptions/options.h>
+
+int num_kanal = 1;
+static uint8_t magic1 = 0x1e;
+static uint8_t magic2 = 0x7;
+static uint8_t magic3 = 0x2;
+static const char *futln;
+static uint8_t futln_nat;
+static uint8_t futln_fuvst;
+static uint16_t futln_rest;
+static uint16_t sicherungscode = 12345;
+static uint16_t sonderheitenschluessel = 0;
+static uint16_t wartungsschluessel = 0xffff;
+
+/* return 1, if 1-bits are odd, so parity becomes even */
+static int gen_parity(uint8_t *bits)
+{
+ int i;
+ uint8_t parity = 0;
+
+ for (i = 0; i < 8; i++)
+ parity ^= (bits[i] & 1);
+
+ return parity;
+}
+
+static uint8_t *gen_memory(uint8_t magic1, uint8_t magic2, uint8_t magic3, uint8_t futln_nat, uint8_t futln_fuvst, uint16_t futln_rest, uint16_t sicherungscode, uint16_t sonderheitenschluessel, uint16_t wartungsschluessel)
+{
+ static uint8_t memory[416];
+ int i;
+
+ /* meaningless data */
+ for (i = 0; i <= 10; i++)
+ memory[i] = 1;
+
+ /* magic data */
+ for (i = 11; i <= 15; i++)
+ memory[i] = (magic1 >> (i - 11)) & 1;
+
+ /* meaningless data */
+ for (i = 16; i <= 17; i++)
+ memory[i] = 0;
+
+ /* magic data */
+ for (i = 18; i <= 20; i++)
+ memory[i] = (magic2 >> (i - 18)) & 1;
+
+ /* magic data */
+ for (i = 21; i <= 23; i++)
+ memory[i] = (magic3 >> (i - 21)) & 1;
+
+ /* meaningless data */
+ for (i = 24; i <= 113; i++)
+ memory[i] = 1;
+
+ /* number */
+ for (i = 114; i <= 116; i++)
+ memory[i] = (futln_nat >> (i - 114)) & 1;
+ for (i = 117; i <= 121; i++)
+ memory[i] = (futln_fuvst >> (i - 117)) & 1;
+ memory[122] = gen_parity(memory + 114);
+ for (i = 123; i <= 130; i++)
+ memory[i] = (futln_rest >> (i - 123)) & 1;
+ memory[131] = gen_parity(memory + 123);
+ for (i = 132; i <= 139; i++)
+ memory[i] = (futln_rest >> (i - 132 + 8)) & 1;
+ memory[140] = gen_parity(memory + 132);
+
+ /* sicherungscode */
+ for (i = 141; i <= 148; i++)
+ memory[i] = (sicherungscode >> (i - 141)) & 1;
+ memory[149] = gen_parity(memory + 141);
+ for (i = 150; i <= 157; i++)
+ memory[i] = (sicherungscode >> (i - 150 + 8)) & 1;
+ memory[158] = gen_parity(memory + 150);
+
+ /* sonderheitenschluessel */
+ for (i = 159; i <= 166; i++)
+ memory[i] = (sonderheitenschluessel >> (i - 159)) & 1;
+ memory[167] = gen_parity(memory + 159);
+ for (i = 168; i <= 175; i++)
+ memory[i] = (sonderheitenschluessel >> (i - 168 + 8)) & 1;
+ memory[176] = gen_parity(memory + 168);
+
+ /* wartungschluessel */
+ for (i = 177; i <= 184; i++)
+ memory[i] = (wartungsschluessel >> (i - 177)) & 1;
+ memory[185] = gen_parity(memory + 177);
+ for (i = 186; i <= 193; i++)
+ memory[i] = (wartungsschluessel >> (i - 186 + 8)) & 1;
+ memory[194] = gen_parity(memory + 186);
+
+ /* meaningless data */
+ for (i = 195; i <= 351; i++)
+ memory[i] = 1;
+
+ /* all zero */
+ for (i = 352; i <= 415; i++)
+ memory[i] = 0;
+
+ return memory;
+}
+
+void print_help(const char *arg0)
+{
+ printf("Usage: %s [options] <subscriber number>\n", arg0);
+ /* - - */
+ printf("General options:\n");
+ printf(" -h --help\n");
+ printf(" This help\n");
+ printf(" -1 --magic1 <value>\n");
+ printf(" Magic value for bits 011-015 (default = 0x%02x)\n", magic1);
+ printf(" -2 --magic2 <value>\n");
+ printf(" Magic value for bits 018-021 (default = 0x%x)\n", magic2);
+ printf(" -3 --magic3 <value>\n");
+ printf(" Magic value for bits 022-024 (default = 0x%x)\n", magic3);
+ printf(" -C --security-code \n");
+ printf(" Security code (\"Sicherungscode\") (default = %d)\n", sicherungscode);
+ printf(" -S --special-key \n");
+ printf(" Special key (\"Sonderheitenschluessel\") (default = %d)\n", sonderheitenschluessel);
+ printf(" -W --maintenance-key \n");
+ printf(" Maintenance key (\"Wartungsschluessel\") (default = %d)\n", wartungsschluessel);
+ printf("\nSubscriber number:\n");
+ printf(" Give 7 (8) digits of C-Netz subscriber number (FUTLN) without prefix.\n");
+}
+
+void add_options(void)
+{
+ option_add('h', "help", 0);
+ option_add('1', "magic1", 1);
+ option_add('2', "magic2", 2);
+ option_add('3', "magic3", 3);
+ option_add('C', "security-code", 1);
+ option_add('S', "special-key", 1);
+ option_add('W', "maintenance-key", 1);
+};
+
+int handle_options(int short_option, int argi, char **argv)
+{
+ switch (short_option) {
+ case 'h':
+ print_help(argv[0]);
+ return 0;
+ case '1':
+ magic1 = strtoul(argv[argi], NULL, 0);
+ break;
+ case '2':
+ magic2 = strtoul(argv[argi], NULL, 0);
+ break;
+ case '3':
+ magic3 = strtoul(argv[argi], NULL, 0);
+ break;
+ case 'C':
+ sicherungscode = strtoul(argv[argi], NULL, 0);
+ break;
+ case 'S':
+ sonderheitenschluessel = strtoul(argv[argi], NULL, 0);
+ break;
+ case 'W':
+ wartungsschluessel = strtoul(argv[argi], NULL, 0);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return 1;
+}
+
+int main(int argc, char *argv[])
+{
+ int argi;
+ int i;
+
+ debuglevel = DEBUG_INFO;
+
+ add_options();
+
+ /* parse command line */
+ argi = options_command_line(argc, argv, handle_options);
+ if (argi <= 0)
+ return argi;
+
+ /* get subscriber number */
+ if (argi >= argc) {
+ fprintf(stderr, "Expecting subscriber number, use '-h' for help!\n");
+ return 0;
+ }
+ futln = argv[argi];
+ if (strlen(futln) == 7) {
+ futln_nat = *futln++ - '0';
+ futln_fuvst = *futln++ - '0';
+ } else if (strlen(futln) == 8) {
+ futln_nat = *futln++ - '0';
+ futln_fuvst = (*futln++ - '0') * 10;
+ futln_fuvst += *futln++ - '0';
+ } else {
+inval_sub:
+ fprintf(stderr, "Invalid subscriber number, use '-h' for help!\n");
+ return 0;
+ }
+ futln_rest = (*futln++ - '0') * 10000;
+ futln_rest += (*futln++ - '0') * 1000;
+ futln_rest += (*futln++ - '0') * 100;
+ futln_rest += (*futln++ - '0') * 10;
+ futln_rest += *futln++ - '0';
+ if (futln_nat > 7 || futln_fuvst > 31)
+ goto inval_sub;
+
+ printf("\n");
+ printf("Magic Data 011..015 = %d (0x%02x)\n", magic1, magic1);
+ printf("Magic Data 018..020 = %d\n", magic2);
+ printf("Magic Data 021..023 = %d\n", magic3);
+ printf("FUTLN NAT = %d\n", futln_nat);
+ printf("FUTLN FUVST = %d\n", futln_fuvst);
+ printf("FUTLN REST = %d\n", futln_rest);
+ printf("Sicherungscode=%d\n", sicherungscode);
+ printf("Sonderheitenschluessel=%d (0x%04x)\n", sonderheitenschluessel, sonderheitenschluessel);
+ printf("Wartungsschluessel=%d (0x%04x)\n", wartungsschluessel, wartungsschluessel);
+ printf("\nBinary data: (LSB first)\n");
+
+ uint8_t *bits = gen_memory(magic1, magic2, magic3, futln_nat, futln_fuvst, futln_rest, sicherungscode, sonderheitenschluessel, wartungsschluessel);
+ for (i = 0; i < 52; i++) {
+ printf("0x%02x, ", bits[0] + (bits[1] << 1) + (bits[2] << 2) + (bits[3] << 3) + (bits[4] << 4) + (bits[5] << 5) + (bits[6] << 6) + (bits[7] << 7));
+ bits += 8;
+ if ((i & 7) == 7)
+ printf("\n");
+ }
+ printf("\n");
+
+ return 0;
+}
+
diff --git a/sim/simcard.ino b/extra/programmer/programmer.ino
index 0bb01d6..0bb01d6 100644
--- a/sim/simcard.ino
+++ b/extra/programmer/programmer.ino
diff --git a/extra/simulator/simulator.ino b/extra/simulator/simulator.ino
new file mode 100644
index 0000000..06b3af1
--- /dev/null
+++ b/extra/simulator/simulator.ino
@@ -0,0 +1,126 @@
+/* SIM card for ATMEL
+ *
+ * (C) 2020 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 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/>.
+ */
+
+#if defined(__AVR_ATtiny85__)
+#define RST_PIN 2
+#define CLK_PIN 3
+#define DATA_PIN 4
+#error UNTESTED!
+#else
+#define CLK_PIN 5
+#define RST_PIN 6
+#define DATA_PIN 7
+#endif
+
+uint8_t card_data[] = {
+
+0xff, 0xf7, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4b, 0x90,
+0x5f, 0x25, 0x07, 0x0c, 0x00, 0x00, 0xfe, 0xfd,
+0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00,
+
+};
+
+volatile uint8_t *rst_in, *clk_in, *data_in, *data_out, *data_mode;
+uint8_t rst_bit, clk_bit, data_bit;
+
+void setup()
+{
+ volatile uint8_t *out, *mode;
+ uint8_t port;
+
+ rst_bit = digitalPinToBitMask(RST_PIN);
+ port = digitalPinToPort(RST_PIN);
+ mode = portModeRegister(port);
+ out = portOutputRegister(port);
+ rst_in = portInputRegister(port);
+ *mode &= ~rst_bit; /* input */
+ *out |= rst_bit; /* pullup */
+
+ clk_bit = digitalPinToBitMask(CLK_PIN);
+ port = digitalPinToPort(CLK_PIN);
+ mode = portModeRegister(port);
+ out = portOutputRegister(port);
+ clk_in = portInputRegister(port);
+ *mode &= ~clk_bit; /* input */
+ *out |= clk_bit; /* pullup */
+
+ data_bit = digitalPinToBitMask(DATA_PIN);
+ port = digitalPinToPort(DATA_PIN);
+ data_mode = portModeRegister(port);
+ data_out = portOutputRegister(port);
+ data_in = portInputRegister(port);
+ *data_mode |= data_bit; /* output */
+}
+
+uint8_t byte_count;
+uint8_t bit_count;
+
+void loop()
+{
+reset:
+ byte_count = 0;
+ bit_count = 0;
+
+ /* wait for reset pulse */
+ while (!(*rst_in & rst_bit));
+ /* now we have reset, so we wait for clock pulse */
+ while (!(*clk_in & clk_bit)) {
+ /* if we lost reset, go to start */
+ if (!(*rst_in & rst_bit))
+ goto reset;
+ }
+ while ((*clk_in & clk_bit)) {
+ /* if we lost reset, go to start */
+ if (!(*rst_in & rst_bit))
+ goto reset;
+ }
+ while ((*rst_in & rst_bit));
+
+next_bit:
+ /* present bit */
+ if ((card_data[byte_count] >> bit_count) & 1)
+ *data_out |= data_bit; /* high */
+ else
+ *data_out &= ~data_bit; /* low */
+ if (++bit_count == 8) {
+ bit_count = 0;
+ if (++byte_count == sizeof(card_data)) {
+ goto reset;
+ }
+ }
+
+ /* wait for clock pulse */
+ while (!(*clk_in & clk_bit)) {
+ /* reset counter if reset was detected */
+ if ((*rst_in & rst_bit)) {
+ goto reset;
+ }
+ }
+ while ((*clk_in & clk_bit)) {
+ /* reset counter if reset was detected */
+ if ((*rst_in & rst_bit)) {
+ goto reset;
+ }
+ }
+ goto next_bit;
+}
diff --git a/layout/telekarte.brd b/layout/telekarte.brd
new file mode 100755
index 0000000..3704e09
--- /dev/null
+++ b/layout/telekarte.brd
@@ -0,0 +1,1786 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE eagle SYSTEM "eagle.dtd">
+<eagle version="6.3">
+<drawing>
+<settings>
+<setting alwaysvectorfont="no"/>
+<setting verticaltext="up"/>
+</settings>
+<grid distance="0.0125" unitdist="inch" unit="inch" style="dots" multiple="1" display="yes" altdistance="0.0125" altunitdist="inch" altunit="inch"/>
+<layers>
+<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
+<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
+<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
+<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
+<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
+<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
+<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
+<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
+<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
+<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
+<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
+<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
+<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
+<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
+<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
+<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
+<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
+<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
+<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
+<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
+<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
+<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
+<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
+<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
+<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
+<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
+<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
+<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
+<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
+<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
+<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
+<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
+<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="yes"/>
+<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>
+<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="yes"/>
+<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="yes"/>
+<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>
+<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
+<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
+<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="yes"/>
+<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="yes"/>
+<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
+<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
+<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
+<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
+<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
+<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
+<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
+<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
+<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="no"/>
+</layers>
+<board>
+<plain>
+<wire x1="0" y1="0" x2="85.6" y2="0" width="0" layer="20"/>
+<wire x1="85.6" y1="0" x2="85.6" y2="54" width="0" layer="20"/>
+<wire x1="85.6" y1="54" x2="0" y2="54" width="0" layer="20"/>
+<wire x1="0" y1="54" x2="0" y2="0" width="0" layer="20"/>
+<text x="26.035" y="42.2275" size="6.4516" layer="1" font="vector">Jolly's</text>
+<text x="19.05" y="5.715" size="6.4516" layer="1" font="vector">TeleKarte</text>
+<text x="29.845" y="25.7175" size="1.778" layer="1" font="vector">1</text>
+<text x="88.265" y="23.8125" size="1.778" layer="1" font="vector" rot="SR270">1</text>
+<dimension x1="0" y1="54" x2="85.6" y2="54" x3="42.8" y3="58.1025" layer="1"/>
+<dimension x1="0" y1="0" x2="0" y2="54" x3="-4.1275" y3="27" layer="1"/>
+<text x="0.9525" y="33.02" size="1.778" layer="1" font="vector">VCC</text>
+<text x="32.0675" y="33.02" size="1.778" layer="1" font="vector">GND</text>
+<text x="0.9525" y="30.48" size="1.778" layer="1" font="vector">RES</text>
+<text x="0.9525" y="27.94" size="1.778" layer="1" font="vector">CLK</text>
+<text x="32.385" y="24.765" size="1.778" layer="1" font="vector">I/O</text>
+</plain>
+<libraries>
+<library name="con-chipcard-iso7816">
+<description>&lt;b&gt;ISO 7816 Chipcard (Package)&lt;/b&gt;&lt;p&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="ISO-7816">
+<description>&lt;b&gt;ISO7816-1 Standard&lt;/b&gt; Chip Card&lt;p&gt;
+Source: http://www.didya.com/iso-7816.asp</description>
+<wire x1="7.25" y1="-16.5" x2="30.25" y2="-16.5" width="0.0002" layer="21"/>
+<wire x1="7.25" y1="-31.5" x2="27.95" y2="-31.5" width="0.0002" layer="21"/>
+<wire x1="6.25" y1="-17.5" x2="6.25" y2="-30.5" width="0.0002" layer="21"/>
+<wire x1="31.25" y1="-28.1" x2="31.25" y2="-17.5" width="0.0002" layer="21"/>
+<wire x1="0" y1="-46.5" x2="0" y2="-2.25" width="0.0002" layer="21"/>
+<wire x1="2.25" y1="0" x2="36.25" y2="0" width="0.0002" layer="21"/>
+<wire x1="0" y1="-2.25" x2="2.25" y2="0" width="0.0002" layer="21" curve="-90"/>
+<wire x1="28.55" y1="-31.2" x2="31.05" y2="-28.7" width="0.0002" layer="21"/>
+<wire x1="6.25" y1="-30.5" x2="7.25" y2="-31.5" width="0.0002" layer="21" curve="90"/>
+<wire x1="30.25" y1="-16.5" x2="31.25" y2="-17.5" width="0.0002" layer="21" curve="-90"/>
+<wire x1="31.05" y1="-28.7" x2="31.25" y2="-28.1" width="0.0002" layer="21" curve="36.869898"/>
+<wire x1="27.95" y1="-31.5" x2="28.55" y2="-31.2" width="0.0002" layer="21" curve="38.88007"/>
+<wire x1="6.25" y1="-17.5" x2="7.25" y2="-16.5" width="0.0002" layer="21" curve="-90"/>
+<wire x1="12.3841" y1="-21.7197" x2="13.5779" y2="-22.9135" width="0.4064" layer="51"/>
+<wire x1="13.5779" y1="-22.9135" x2="13.4128" y2="-23.231" width="0.4064" layer="51"/>
+<wire x1="13.4128" y1="-23.231" x2="13.3366" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="13.3366" y1="-23.5485" x2="12.3587" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="12.3714" y1="-23.1675" x2="13.1715" y2="-23.1675" width="0.4064" layer="51"/>
+<wire x1="13.1715" y1="-23.1675" x2="13.1715" y2="-23.0532" width="0.4064" layer="51"/>
+<wire x1="13.1715" y1="-23.0532" x2="12.3587" y2="-22.2404" width="0.4064" layer="51"/>
+<wire x1="12.6381" y1="-22.9897" x2="12.4349" y2="-22.7865" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-21.2625" x2="14.7209" y2="-22.1515" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-22.1515" x2="14.3907" y2="-22.2531" width="0.4064" layer="51"/>
+<wire x1="14.3907" y1="-22.2531" x2="14.0859" y2="-22.4182" width="0.4064" layer="51"/>
+<wire x1="14.0859" y1="-22.4182" x2="12.727" y2="-21.0593" width="0.4064" layer="51"/>
+<wire x1="14.3399" y1="-21.199" x2="14.3399" y2="-21.9483" width="0.4064" layer="51"/>
+<wire x1="14.3399" y1="-21.9483" x2="14.2383" y2="-22.0499" width="0.4064" layer="51"/>
+<wire x1="14.2383" y1="-22.0499" x2="13.3366" y2="-21.1482" width="0.4064" layer="51"/>
+<wire x1="14.2383" y1="-21.5165" x2="13.8446" y2="-21.1228" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-21.1609" x2="15.4321" y2="-22.85" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-22.85" x2="15.6226" y2="-22.85" width="0.4064" layer="51"/>
+<wire x1="15.6226" y1="-22.85" x2="17.4133" y2="-21.0593" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-21.1609" x2="15.8131" y2="-22.1261" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-22.1261" x2="15.5972" y2="-22.342" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-22.1261" x2="16.8545" y2="-21.0847" width="0.4064" layer="51"/>
+<wire x1="15.9274" y1="-21.4784" x2="16.2957" y2="-21.1101" width="0.4064" layer="51"/>
+<wire x1="17.68" y1="-23.5485" x2="16.8291" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="16.8291" y1="-23.5485" x2="16.7148" y2="-23.1929" width="0.4064" layer="51"/>
+<wire x1="16.7148" y1="-23.1929" x2="16.5624" y2="-22.9262" width="0.4064" layer="51"/>
+<wire x1="16.5624" y1="-22.9262" x2="17.7689" y2="-21.7197" width="0.4064" layer="51"/>
+<wire x1="17.7181" y1="-23.1675" x2="17.045" y2="-23.1675" width="0.4064" layer="51"/>
+<wire x1="17.045" y1="-23.1675" x2="16.9434" y2="-23.0659" width="0.4064" layer="51"/>
+<wire x1="16.9434" y1="-23.0659" x2="17.7816" y2="-22.2277" width="0.4064" layer="51"/>
+<wire x1="17.4387" y1="-23.0278" x2="17.6927" y2="-22.7738" width="0.4064" layer="51"/>
+<wire x1="17.68" y1="-24.2597" x2="16.8291" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="16.8291" y1="-24.2597" x2="16.7402" y2="-24.5645" width="0.4064" layer="51"/>
+<wire x1="16.7402" y1="-24.5645" x2="16.5624" y2="-24.882" width="0.4064" layer="51"/>
+<wire x1="16.5624" y1="-24.882" x2="17.7689" y2="-26.0885" width="0.4064" layer="51"/>
+<wire x1="17.7181" y1="-24.6407" x2="17.0196" y2="-24.6407" width="0.4064" layer="51"/>
+<wire x1="17.0196" y1="-24.6407" x2="16.9307" y2="-24.7296" width="0.4064" layer="51"/>
+<wire x1="16.9307" y1="-24.7296" x2="17.7562" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="17.7816" y1="-25.0471" x2="17.4895" y2="-24.755" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-26.5965" x2="15.4321" y2="-25.6567" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-25.6567" x2="15.7496" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="15.7496" y1="-25.5551" x2="16.0544" y2="-25.39" width="0.4064" layer="51"/>
+<wire x1="16.0544" y1="-25.39" x2="17.4133" y2="-26.7489" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-26.6219" x2="15.8131" y2="-25.8472" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-25.8472" x2="15.902" y2="-25.7583" width="0.4064" layer="51"/>
+<wire x1="15.902" y1="-25.7583" x2="16.791" y2="-26.6473" width="0.4064" layer="51"/>
+<wire x1="16.3211" y1="-26.7108" x2="15.9147" y2="-26.3044" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-26.6092" x2="14.7209" y2="-25.6567" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-25.6567" x2="14.3907" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="14.3907" y1="-25.5551" x2="14.0986" y2="-25.39" width="0.4064" layer="51"/>
+<wire x1="14.0986" y1="-25.39" x2="12.7524" y2="-26.7362" width="0.4064" layer="51"/>
+<wire x1="14.3526" y1="-26.6346" x2="14.3526" y2="-25.8345" width="0.4064" layer="51"/>
+<wire x1="14.3526" y1="-25.8345" x2="14.2637" y2="-25.7456" width="0.4064" layer="51"/>
+<wire x1="14.2637" y1="-25.7456" x2="13.2985" y2="-26.7108" width="0.4064" layer="51"/>
+<wire x1="13.8573" y1="-26.6854" x2="14.251" y2="-26.2917" width="0.4064" layer="51"/>
+<wire x1="12.3841" y1="-26.0885" x2="13.5779" y2="-24.8947" width="0.4064" layer="51"/>
+<wire x1="13.5779" y1="-24.8947" x2="13.4255" y2="-24.5772" width="0.4064" layer="51"/>
+<wire x1="13.4255" y1="-24.5772" x2="13.3366" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="13.3366" y1="-24.2597" x2="12.4222" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="12.3968" y1="-24.628" x2="13.1207" y2="-24.628" width="0.4064" layer="51"/>
+<wire x1="13.1207" y1="-24.628" x2="13.2223" y2="-24.7296" width="0.4064" layer="51"/>
+<wire x1="13.2223" y1="-24.7296" x2="12.3968" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="12.3587" y1="-25.0852" x2="12.6889" y2="-24.755" width="0.4064" layer="51"/>
+<wire x1="12.6889" y1="-24.755" x2="12.6889" y2="-24.7296" width="0.4064" layer="51"/>
+<circle x="15.0765" y="-23.9041" radius="1.27" width="0" layer="51"/>
+<smd name="C1" x="11.249" y="-20.099" dx="2" dy="1.7" layer="1"/>
+<smd name="C2" x="11.249" y="-22.638" dx="2" dy="1.7" layer="1"/>
+<smd name="C3" x="11.249" y="-25.183" dx="2" dy="1.7" layer="1"/>
+<smd name="C4" x="11.249" y="-27.722" dx="2" dy="1.7" layer="1"/>
+<smd name="C8" x="18.872" y="-27.722" dx="2" dy="1.7" layer="1"/>
+<smd name="C7" x="18.872" y="-25.18" dx="2" dy="1.7" layer="1"/>
+<smd name="C6" x="18.872" y="-22.64" dx="2" dy="1.7" layer="1"/>
+<smd name="C5" x="18.872" y="-20.1" dx="2" dy="1.7" layer="1"/>
+<text x="5.934" y="-20.6" size="1.016" layer="51">VCC</text>
+<text x="5.934" y="-23.1" size="1.016" layer="51">RST</text>
+<text x="5.934" y="-25.7" size="1.016" layer="51">CLK</text>
+<text x="5.934" y="-28.2" size="1.016" layer="51">NC</text>
+<text x="21.539" y="-25.7" size="1.016" layer="51">I/O</text>
+<text x="21.539" y="-20.6" size="1.016" layer="51">GND</text>
+<text x="10.06" y="-15.23" size="1.27" layer="25">&gt;NAME</text>
+<text x="10.06" y="-34.28" size="1.27" layer="27">&gt;VALUE</text>
+<text x="21.539" y="-28.2" size="1.016" layer="51">NC </text>
+<text x="21.539" y="-23.1" size="1.016" layer="51">NC </text>
+<rectangle x1="9.1202" y1="-23.7517" x2="12.473" y2="-21.5165" layer="51"/>
+<rectangle x1="17.68" y1="-23.7517" x2="21.0328" y2="-21.5165" layer="51"/>
+<rectangle x1="9.1202" y1="-26.2917" x2="12.473" y2="-24.0565" layer="51"/>
+<rectangle x1="17.68" y1="-26.2917" x2="21.0328" y2="-24.0565" layer="51"/>
+<rectangle x1="9.1202" y1="-21.199" x2="14.9241" y2="-18.659" layer="51"/>
+<rectangle x1="9.1202" y1="-29.1365" x2="14.9241" y2="-26.5965" layer="51"/>
+<rectangle x1="15.2289" y1="-29.1365" x2="21.0328" y2="-26.5965" layer="51"/>
+<rectangle x1="15.2289" y1="-21.2117" x2="21.0328" y2="-18.6717" layer="51"/>
+</package>
+</packages>
+</library>
+<library name="atmel">
+<description>&lt;b&gt;AVR Devices&lt;/b&gt;&lt;p&gt;
+Configurable logic, microcontrollers, nonvolatile memories&lt;p&gt;
+Based on the following sources:&lt;p&gt;
+&lt;ul&gt;
+&lt;li&gt;www.atmel.com
+&lt;li&gt;CD-ROM : Configurable Logic Microcontroller Nonvolatile Memory
+&lt;li&gt;CadSoft download site, www.cadsoft.de or www.cadsoftusa.com , file at90smcu_v400.zip
+&lt;/ul&gt;
+&lt;author&gt;Revised by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="SO08">
+<description>&lt;b&gt;SMALL OUTLINE INTEGRATED CIRCUIT&lt;/b&gt;&lt;p&gt;
+body 3.9 mm/JEDEC MS-012AA</description>
+<wire x1="-2.9" y1="3.9" x2="2.9" y2="3.9" width="0.1998" layer="39"/>
+<wire x1="2.9" y1="3.9" x2="2.9" y2="-3.9" width="0.1998" layer="39"/>
+<wire x1="2.9" y1="-3.9" x2="-2.9" y2="-3.9" width="0.1998" layer="39"/>
+<wire x1="-2.9" y1="-3.9" x2="-2.9" y2="3.9" width="0.1998" layer="39"/>
+<wire x1="2.4" y1="1.9" x2="2.4" y2="-1.4" width="0.1778" layer="21"/>
+<wire x1="2.4" y1="-1.4" x2="2.4" y2="-1.9" width="0.1778" layer="21"/>
+<wire x1="2.4" y1="-1.9" x2="-2.4" y2="-1.9" width="0.1778" layer="51"/>
+<wire x1="-2.4" y1="-1.9" x2="-2.4" y2="-1.4" width="0.1778" layer="21"/>
+<wire x1="-2.4" y1="-1.4" x2="-2.4" y2="1.9" width="0.1778" layer="21"/>
+<wire x1="-2.4" y1="1.9" x2="2.4" y2="1.9" width="0.1778" layer="51"/>
+<wire x1="2.4" y1="-1.4" x2="-2.4" y2="-1.4" width="0.0508" layer="51"/>
+<circle x="-1.905" y="-0.9525" radius="0.2245" width="0" layer="21"/>
+<smd name="2" x="-0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="7" x="-0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="1" x="-1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="3" x="0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="4" x="1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="8" x="-1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="6" x="0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="5" x="1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<text x="-3.175" y="-1.905" size="1.27" layer="25" ratio="10" rot="R90">&gt;NAME</text>
+<text x="4.445" y="-1.905" size="1.27" layer="27" ratio="10" rot="R90">&gt;VALUE</text>
+<rectangle x1="-2.1501" y1="-3.1001" x2="-1.6599" y2="-2" layer="51"/>
+<rectangle x1="-0.8801" y1="-3.1001" x2="-0.3899" y2="-2" layer="51"/>
+<rectangle x1="0.3899" y1="-3.1001" x2="0.8801" y2="-2" layer="51"/>
+<rectangle x1="1.6599" y1="-3.1001" x2="2.1501" y2="-2" layer="51"/>
+<rectangle x1="1.6599" y1="2" x2="2.1501" y2="3.1001" layer="51"/>
+<rectangle x1="0.3899" y1="2" x2="0.8801" y2="3.1001" layer="51"/>
+<rectangle x1="-0.8801" y1="2" x2="-0.3899" y2="3.1001" layer="51"/>
+<rectangle x1="-2.1501" y1="2" x2="-1.6599" y2="3.1001" layer="51"/>
+</package>
+<package name="DIL08">
+<description>&lt;b&gt;Dual In Line Package&lt;/b&gt;</description>
+<wire x1="5.08" y1="2.921" x2="-5.08" y2="2.921" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="-2.921" x2="5.08" y2="-2.921" width="0.1778" layer="21"/>
+<wire x1="5.08" y1="2.921" x2="5.08" y2="-2.921" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="2.921" x2="-5.08" y2="0.6985" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="-2.921" x2="-5.08" y2="-0.6985" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="0.6985" x2="-5.08" y2="-0.6985" width="0.1778" layer="21" curve="-180"/>
+<pad name="1" x="-3.81" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="2" x="-1.27" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="7" x="-1.27" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="8" x="-3.81" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="3" x="1.27" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="4" x="3.81" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="6" x="1.27" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="5" x="3.81" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<text x="-5.715" y="-2.54" size="1.27" layer="25" ratio="10" rot="R90">&gt;NAME</text>
+<text x="-3.4925" y="-0.635" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+</packages>
+</library>
+<library name="testpad">
+<description>&lt;b&gt;Test Pins/Pads&lt;/b&gt;&lt;p&gt;
+Cream on SMD OFF.&lt;br&gt;
+new: Attribute TP_SIGNAL_NAME&lt;br&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="TP10SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1" dy="1" layer="1" cream="no"/>
+<text x="-0.5001" y="0.5499" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+</packages>
+</library>
+<library name="resistor">
+<description>&lt;b&gt;Resistors, Capacitors, Inductors&lt;/b&gt;&lt;p&gt;
+Based on the previous libraries:
+&lt;ul&gt;
+&lt;li&gt;r.lbr
+&lt;li&gt;cap.lbr
+&lt;li&gt;cap-fe.lbr
+&lt;li&gt;captant.lbr
+&lt;li&gt;polcap.lbr
+&lt;li&gt;ipc-smd.lbr
+&lt;/ul&gt;
+All SMD packages are defined according to the IPC specifications and CECC&lt;p&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;&lt;p&gt;
+&lt;p&gt;
+for Electrolyt Capacitors see also :&lt;p&gt;
+www.bccomponents.com &lt;p&gt;
+www.panasonic.com&lt;p&gt;
+www.kemet.com&lt;p&gt;
+&lt;p&gt;
+for trimmer reference see : &lt;u&gt;www.electrospec-inc.com/cross_references/trimpotcrossref.asp&lt;/u&gt;&lt;p&gt;
+
+&lt;map name="nav_main"&gt;
+&lt;area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title=""&gt;
+&lt;area shape="rect" coords="0,24,140,51" href="../about.asp" title=""&gt;
+&lt;area shape="rect" coords="1,52,140,77" href="../rfq.asp" title=""&gt;
+&lt;area shape="rect" coords="0,78,139,103" href="../products.asp" title=""&gt;
+&lt;area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title=""&gt;
+&lt;area shape="rect" coords="1,129,138,150" href="../edge.asp" title=""&gt;
+&lt;area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title=""&gt;
+&lt;area shape="rect" coords="0,179,139,201" href="../comments.asp" title=""&gt;
+&lt;area shape="rect" coords="1,203,138,231" href="../directory.asp" title=""&gt;
+&lt;area shape="default" nohref&gt;
+&lt;/map&gt;
+
+&lt;html&gt;
+
+&lt;title&gt;&lt;/title&gt;
+
+ &lt;LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css"&gt;
+
+&lt;body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0"&gt;
+&lt;table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%"&gt;
+&lt;tr valign="top"&gt;
+
+&lt;/td&gt;
+&lt;! &lt;td width="10"&gt;&amp;nbsp;&lt;/td&gt;
+&lt;td width="90%"&gt;
+
+&lt;b&gt;&lt;font color="#0000FF" size="4"&gt;TRIM-POT CROSS REFERENCE&lt;/font&gt;&lt;/b&gt;
+&lt;P&gt;
+&lt;TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;RECTANGULAR MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;BOURNS&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;BI&amp;nbsp;TECH&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;DALE-VISHAY&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;PHILIPS/MEPCO&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;MURATA&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;PANASONIC&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;SPECTROL&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;MILSPEC&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3 &gt;
+ 3005P&lt;BR&gt;
+ 3006P&lt;BR&gt;
+ 3006W&lt;BR&gt;
+ 3006Y&lt;BR&gt;
+ 3009P&lt;BR&gt;
+ 3009W&lt;BR&gt;
+ 3009Y&lt;BR&gt;
+ 3057J&lt;BR&gt;
+ 3057L&lt;BR&gt;
+ 3057P&lt;BR&gt;
+ 3057Y&lt;BR&gt;
+ 3059J&lt;BR&gt;
+ 3059L&lt;BR&gt;
+ 3059P&lt;BR&gt;
+ 3059Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 89P&lt;BR&gt;
+ 89W&lt;BR&gt;
+ 89X&lt;BR&gt;
+ 89PH&lt;BR&gt;
+ 76P&lt;BR&gt;
+ 89XH&lt;BR&gt;
+ 78SLT&lt;BR&gt;
+ 78L&amp;nbsp;ALT&lt;BR&gt;
+ 56P&amp;nbsp;ALT&lt;BR&gt;
+ 78P&amp;nbsp;ALT&lt;BR&gt;
+ T8S&lt;BR&gt;
+ 78L&lt;BR&gt;
+ 56P&lt;BR&gt;
+ 78P&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ T18/784&lt;BR&gt;
+ 783&lt;BR&gt;
+ 781&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 2199&lt;BR&gt;
+ 1697/1897&lt;BR&gt;
+ 1680/1880&lt;BR&gt;
+ 2187&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 8035EKP/CT20/RJ-20P&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ-20X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 1211L&lt;BR&gt;
+ 8012EKQ&amp;nbsp;ALT&lt;BR&gt;
+ 8012EKR&amp;nbsp;ALT&lt;BR&gt;
+ 1211P&lt;BR&gt;
+ 8012EKJ&lt;BR&gt;
+ 8012EKL&lt;BR&gt;
+ 8012EKQ&lt;BR&gt;
+ 8012EKR&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 2101P&lt;BR&gt;
+ 2101W&lt;BR&gt;
+ 2101Y&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 2102L&lt;BR&gt;
+ 2102S&lt;BR&gt;
+ 2102Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ EVMCOG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 43P&lt;BR&gt;
+ 43W&lt;BR&gt;
+ 43Y&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 40L&lt;BR&gt;
+ 40P&lt;BR&gt;
+ 40Y&lt;BR&gt;
+ 70Y-T602&lt;BR&gt;
+ 70L&lt;BR&gt;
+ 70P&lt;BR&gt;
+ 70Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SQUARE MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MURATA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;SPECTROL&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MILSPEC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3250L&lt;BR&gt;
+ 3250P&lt;BR&gt;
+ 3250W&lt;BR&gt;
+ 3250X&lt;BR&gt;
+ 3252P&lt;BR&gt;
+ 3252W&lt;BR&gt;
+ 3252X&lt;BR&gt;
+ 3260P&lt;BR&gt;
+ 3260W&lt;BR&gt;
+ 3260X&lt;BR&gt;
+ 3262P&lt;BR&gt;
+ 3262W&lt;BR&gt;
+ 3262X&lt;BR&gt;
+ 3266P&lt;BR&gt;
+ 3266W&lt;BR&gt;
+ 3266X&lt;BR&gt;
+ 3290H&lt;BR&gt;
+ 3290P&lt;BR&gt;
+ 3290W&lt;BR&gt;
+ 3292P&lt;BR&gt;
+ 3292W&lt;BR&gt;
+ 3292X&lt;BR&gt;
+ 3296P&lt;BR&gt;
+ 3296W&lt;BR&gt;
+ 3296X&lt;BR&gt;
+ 3296Y&lt;BR&gt;
+ 3296Z&lt;BR&gt;
+ 3299P&lt;BR&gt;
+ 3299W&lt;BR&gt;
+ 3299X&lt;BR&gt;
+ 3299Y&lt;BR&gt;
+ 3299Z&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ -&lt;BR&gt;
+ 64W&amp;nbsp;ALT&lt;BR&gt;
+ -&lt;BR&gt;
+ 64P&amp;nbsp;ALT&lt;BR&gt;
+ 64W&amp;nbsp;ALT&lt;BR&gt;
+ 64X&amp;nbsp;ALT&lt;BR&gt;
+ 64P&lt;BR&gt;
+ 64W&lt;BR&gt;
+ 64X&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66P&lt;BR&gt;
+ 66W&lt;BR&gt;
+ 66X&lt;BR&gt;
+ 67P&lt;BR&gt;
+ 67W&lt;BR&gt;
+ 67X&lt;BR&gt;
+ 67Y&lt;BR&gt;
+ 67Z&lt;BR&gt;
+ 68P&lt;BR&gt;
+ 68W&lt;BR&gt;
+ 68X&lt;BR&gt;
+ 67Y&amp;nbsp;ALT&lt;BR&gt;
+ 67Z&amp;nbsp;ALT&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 5050&lt;BR&gt;
+ 5091&lt;BR&gt;
+ 5080&lt;BR&gt;
+ 5087&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T63YB&lt;BR&gt;
+ T63XB&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 5887&lt;BR&gt;
+ 5891&lt;BR&gt;
+ 5880&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T93Z&lt;BR&gt;
+ T93YA&lt;BR&gt;
+ T93XA&lt;BR&gt;
+ T93YB&lt;BR&gt;
+ T93XB&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8026EKP&lt;BR&gt;
+ 8026EKW&lt;BR&gt;
+ 8026EKM&lt;BR&gt;
+ 8026EKP&lt;BR&gt;
+ 8026EKB&lt;BR&gt;
+ 8026EKM&lt;BR&gt;
+ 1309X&lt;BR&gt;
+ 1309P&lt;BR&gt;
+ 1309W&lt;BR&gt;
+ 8024EKP&lt;BR&gt;
+ 8024EKW&lt;BR&gt;
+ 8024EKN&lt;BR&gt;
+ RJ-9P/CT9P&lt;BR&gt;
+ RJ-9W&lt;BR&gt;
+ RJ-9X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3103P&lt;BR&gt;
+ 3103Y&lt;BR&gt;
+ 3103Z&lt;BR&gt;
+ 3103P&lt;BR&gt;
+ 3103Y&lt;BR&gt;
+ 3103Z&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3105P/3106P&lt;BR&gt;
+ 3105W/3106W&lt;BR&gt;
+ 3105X/3106X&lt;BR&gt;
+ 3105Y/3106Y&lt;BR&gt;
+ 3105Z/3105Z&lt;BR&gt;
+ 3102P&lt;BR&gt;
+ 3102W&lt;BR&gt;
+ 3102X&lt;BR&gt;
+ 3102Y&lt;BR&gt;
+ 3102Z&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMCBG&lt;BR&gt;
+ EVMCCG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 55-1-X&lt;BR&gt;
+ 55-4-X&lt;BR&gt;
+ 55-3-X&lt;BR&gt;
+ 55-2-X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 50-2-X&lt;BR&gt;
+ 50-4-X&lt;BR&gt;
+ 50-3-X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 64P&lt;BR&gt;
+ 64W&lt;BR&gt;
+ 64X&lt;BR&gt;
+ 64Y&lt;BR&gt;
+ 64Z&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SINGLE TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MURATA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;SPECTROL&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MILSPEC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3323P&lt;BR&gt;
+ 3323S&lt;BR&gt;
+ 3323W&lt;BR&gt;
+ 3329H&lt;BR&gt;
+ 3329P&lt;BR&gt;
+ 3329W&lt;BR&gt;
+ 3339H&lt;BR&gt;
+ 3339P&lt;BR&gt;
+ 3339W&lt;BR&gt;
+ 3352E&lt;BR&gt;
+ 3352H&lt;BR&gt;
+ 3352K&lt;BR&gt;
+ 3352P&lt;BR&gt;
+ 3352T&lt;BR&gt;
+ 3352V&lt;BR&gt;
+ 3352W&lt;BR&gt;
+ 3362H&lt;BR&gt;
+ 3362M&lt;BR&gt;
+ 3362P&lt;BR&gt;
+ 3362R&lt;BR&gt;
+ 3362S&lt;BR&gt;
+ 3362U&lt;BR&gt;
+ 3362W&lt;BR&gt;
+ 3362X&lt;BR&gt;
+ 3386B&lt;BR&gt;
+ 3386C&lt;BR&gt;
+ 3386F&lt;BR&gt;
+ 3386H&lt;BR&gt;
+ 3386K&lt;BR&gt;
+ 3386M&lt;BR&gt;
+ 3386P&lt;BR&gt;
+ 3386S&lt;BR&gt;
+ 3386W&lt;BR&gt;
+ 3386X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 25P&lt;BR&gt;
+ 25S&lt;BR&gt;
+ 25RX&lt;BR&gt;
+ 82P&lt;BR&gt;
+ 82M&lt;BR&gt;
+ 82PA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 91E&lt;BR&gt;
+ 91X&lt;BR&gt;
+ 91T&lt;BR&gt;
+ 91B&lt;BR&gt;
+ 91A&lt;BR&gt;
+ 91V&lt;BR&gt;
+ 91W&lt;BR&gt;
+ 25W&lt;BR&gt;
+ 25V&lt;BR&gt;
+ 25P&lt;BR&gt;
+ -&lt;BR&gt;
+ 25S&lt;BR&gt;
+ 25U&lt;BR&gt;
+ 25RX&lt;BR&gt;
+ 25X&lt;BR&gt;
+ 72XW&lt;BR&gt;
+ 72XL&lt;BR&gt;
+ 72PM&lt;BR&gt;
+ 72RX&lt;BR&gt;
+ -&lt;BR&gt;
+ 72PX&lt;BR&gt;
+ 72P&lt;BR&gt;
+ 72RXW&lt;BR&gt;
+ 72RXL&lt;BR&gt;
+ 72X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T7YB&lt;BR&gt;
+ T7YA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ TXD&lt;BR&gt;
+ TYA&lt;BR&gt;
+ TYP&lt;BR&gt;
+ -&lt;BR&gt;
+ TYD&lt;BR&gt;
+ TX&lt;BR&gt;
+ -&lt;BR&gt;
+ 150SX&lt;BR&gt;
+ 100SX&lt;BR&gt;
+ 102T&lt;BR&gt;
+ 101S&lt;BR&gt;
+ 190T&lt;BR&gt;
+ 150TX&lt;BR&gt;
+ 101&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 101SX&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ET6P&lt;BR&gt;
+ ET6S&lt;BR&gt;
+ ET6X&lt;BR&gt;
+ RJ-6W/8014EMW&lt;BR&gt;
+ RJ-6P/8014EMP&lt;BR&gt;
+ RJ-6X/8014EMX&lt;BR&gt;
+ TM7W&lt;BR&gt;
+ TM7P&lt;BR&gt;
+ TM7X&lt;BR&gt;
+ -&lt;BR&gt;
+ 8017SMS&lt;BR&gt;
+ -&lt;BR&gt;
+ 8017SMB&lt;BR&gt;
+ 8017SMA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ CT-6W&lt;BR&gt;
+ CT-6H&lt;BR&gt;
+ CT-6P&lt;BR&gt;
+ CT-6R&lt;BR&gt;
+ -&lt;BR&gt;
+ CT-6V&lt;BR&gt;
+ CT-6X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKV&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKX&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKP&lt;BR&gt;
+ 8038EKZ&lt;BR&gt;
+ 8038EKW&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3321H&lt;BR&gt;
+ 3321P&lt;BR&gt;
+ 3321N&lt;BR&gt;
+ 1102H&lt;BR&gt;
+ 1102P&lt;BR&gt;
+ 1102T&lt;BR&gt;
+ RVA0911V304A&lt;BR&gt;
+ -&lt;BR&gt;
+ RVA0911H413A&lt;BR&gt;
+ RVG0707V100A&lt;BR&gt;
+ RVA0607V(H)306A&lt;BR&gt;
+ RVA1214H213A&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3104B&lt;BR&gt;
+ 3104C&lt;BR&gt;
+ 3104F&lt;BR&gt;
+ 3104H&lt;BR&gt;
+ -&lt;BR&gt;
+ 3104M&lt;BR&gt;
+ 3104P&lt;BR&gt;
+ 3104S&lt;BR&gt;
+ 3104W&lt;BR&gt;
+ 3104X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ EVMQ0G&lt;BR&gt;
+ EVMQIG&lt;BR&gt;
+ EVMQ3G&lt;BR&gt;
+ EVMS0G&lt;BR&gt;
+ EVMQ0G&lt;BR&gt;
+ EVMG0G&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMK4GA00B&lt;BR&gt;
+ EVM30GA00B&lt;BR&gt;
+ EVMK0GA00B&lt;BR&gt;
+ EVM38GA00B&lt;BR&gt;
+ EVMB6&lt;BR&gt;
+ EVLQ0&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMMSG&lt;BR&gt;
+ EVMMBG&lt;BR&gt;
+ EVMMAG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMMCS&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM1&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM0&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM3&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 62-3-1&lt;BR&gt;
+ 62-1-2&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 67R&lt;BR&gt;
+ -&lt;BR&gt;
+ 67P&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 67X&lt;BR&gt;
+ 63V&lt;BR&gt;
+ 63S&lt;BR&gt;
+ 63M&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 63H&lt;BR&gt;
+ 63P&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 63X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+&lt;/TABLE&gt;
+&lt;P&gt;&amp;nbsp;&lt;P&gt;
+&lt;TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;
+ &lt;FONT color="#0000FF" SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SMD TRIM-POT CROSS REFERENCE&lt;/B&gt;&lt;/FONT&gt;
+ &lt;P&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURNS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;TOCOS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;AUX/KYOCERA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3224G&lt;BR&gt;
+ 3224J&lt;BR&gt;
+ 3224W&lt;BR&gt;
+ 3269P&lt;BR&gt;
+ 3269W&lt;BR&gt;
+ 3269X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 44G&lt;BR&gt;
+ 44J&lt;BR&gt;
+ 44W&lt;BR&gt;
+ 84P&lt;BR&gt;
+ 84W&lt;BR&gt;
+ 84X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST63Z&lt;BR&gt;
+ ST63Y&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST5P&lt;BR&gt;
+ ST5W&lt;BR&gt;
+ ST5X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SINGLE TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURNS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;TOCOS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;AUX/KYOCERA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3314G&lt;BR&gt;
+ 3314J&lt;BR&gt;
+ 3364A/B&lt;BR&gt;
+ 3364C/D&lt;BR&gt;
+ 3364W/X&lt;BR&gt;
+ 3313G&lt;BR&gt;
+ 3313J&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 23B&lt;BR&gt;
+ 23A&lt;BR&gt;
+ 21X&lt;BR&gt;
+ 21W&lt;BR&gt;
+ -&lt;BR&gt;
+ 22B&lt;BR&gt;
+ 22A&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ST5YL/ST53YL&lt;BR&gt;
+ ST5YJ/5T53YJ&lt;BR&gt;
+ ST-23A&lt;BR&gt;
+ ST-22B&lt;BR&gt;
+ ST-22&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ST-4B&lt;BR&gt;
+ ST-4A&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST-3B&lt;BR&gt;
+ ST-3A&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ EVM-6YS&lt;BR&gt;
+ EVM-1E&lt;BR&gt;
+ EVM-1G&lt;BR&gt;
+ EVM-1D&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ G4B&lt;BR&gt;
+ G4A&lt;BR&gt;
+ TR04-3S1&lt;BR&gt;
+ TRG04-2S1&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ DVR-43A&lt;BR&gt;
+ CVR-42C&lt;BR&gt;
+ CVR-42A/C&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+&lt;/TABLE&gt;
+&lt;P&gt;
+&lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;ALT =&amp;nbsp;ALTERNATE&lt;/B&gt;&lt;/FONT&gt;
+&lt;P&gt;
+
+&amp;nbsp;
+&lt;P&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/BODY&gt;&lt;/HTML&gt;</description>
+<packages>
+<package name="C0805">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.381" y1="0.66" x2="0.381" y2="0.66" width="0.1016" layer="51"/>
+<wire x1="-0.356" y1="-0.66" x2="0.381" y2="-0.66" width="0.1016" layer="51"/>
+<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
+<smd name="1" x="-0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<smd name="2" x="0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<text x="-0.889" y="1.016" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-2.286" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.0922" y1="-0.7239" x2="-0.3421" y2="0.7262" layer="51"/>
+<rectangle x1="0.3556" y1="-0.7239" x2="1.1057" y2="0.7262" layer="51"/>
+<rectangle x1="-0.1001" y1="-0.4001" x2="0.1001" y2="0.4001" layer="35"/>
+</package>
+</packages>
+</library>
+</libraries>
+<attributes>
+</attributes>
+<variantdefs>
+</variantdefs>
+<classes>
+<class number="0" name="default" width="0" drill="0">
+</class>
+</classes>
+<designrules name="default">
+<description language="de">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
+&lt;p&gt;
+Die Standard-Design-Rules sind so gewählt, dass sie für
+die meisten Anwendungen passen. Sollte ihre Platine
+besondere Anforderungen haben, treffen Sie die erforderlichen
+Einstellungen hier und speichern die Design Rules unter
+einem neuen Namen ab.</description>
+<description language="en">&lt;b&gt;EAGLE Design Rules&lt;/b&gt;
+&lt;p&gt;
+The default Design Rules have been set to cover
+a wide range of applications. Your particular design
+may have different requirements, so please make the
+necessary adjustments and save your customized
+design rules under a new name.</description>
+<param name="layerSetup" value="(1*16)"/>
+<param name="mtCopper" value="0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm 0.035mm"/>
+<param name="mtIsolate" value="1.5mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm 0.15mm 0.2mm"/>
+<param name="mdWireWire" value="8mil"/>
+<param name="mdWirePad" value="8mil"/>
+<param name="mdWireVia" value="8mil"/>
+<param name="mdPadPad" value="8mil"/>
+<param name="mdPadVia" value="8mil"/>
+<param name="mdViaVia" value="8mil"/>
+<param name="mdSmdPad" value="8mil"/>
+<param name="mdSmdVia" value="8mil"/>
+<param name="mdSmdSmd" value="8mil"/>
+<param name="mdViaViaSameLayer" value="8mil"/>
+<param name="mnLayersViaInSmd" value="2"/>
+<param name="mdCopperDimension" value="40mil"/>
+<param name="mdDrill" value="8mil"/>
+<param name="mdSmdStop" value="0mil"/>
+<param name="msWidth" value="10mil"/>
+<param name="msDrill" value="24mil"/>
+<param name="msMicroVia" value="9.99mm"/>
+<param name="msBlindViaRatio" value="0.5"/>
+<param name="rvPadTop" value="0.25"/>
+<param name="rvPadInner" value="0.25"/>
+<param name="rvPadBottom" value="0.25"/>
+<param name="rvViaOuter" value="0.25"/>
+<param name="rvViaInner" value="0.25"/>
+<param name="rvMicroViaOuter" value="0.25"/>
+<param name="rvMicroViaInner" value="0.25"/>
+<param name="rlMinPadTop" value="10mil"/>
+<param name="rlMaxPadTop" value="20mil"/>
+<param name="rlMinPadInner" value="10mil"/>
+<param name="rlMaxPadInner" value="20mil"/>
+<param name="rlMinPadBottom" value="10mil"/>
+<param name="rlMaxPadBottom" value="20mil"/>
+<param name="rlMinViaOuter" value="8mil"/>
+<param name="rlMaxViaOuter" value="20mil"/>
+<param name="rlMinViaInner" value="8mil"/>
+<param name="rlMaxViaInner" value="20mil"/>
+<param name="rlMinMicroViaOuter" value="4mil"/>
+<param name="rlMaxMicroViaOuter" value="20mil"/>
+<param name="rlMinMicroViaInner" value="4mil"/>
+<param name="rlMaxMicroViaInner" value="20mil"/>
+<param name="psTop" value="-1"/>
+<param name="psBottom" value="-1"/>
+<param name="psFirst" value="-1"/>
+<param name="psElongationLong" value="100"/>
+<param name="psElongationOffset" value="100"/>
+<param name="mvStopFrame" value="1"/>
+<param name="mvCreamFrame" value="0"/>
+<param name="mlMinStopFrame" value="4mil"/>
+<param name="mlMaxStopFrame" value="4mil"/>
+<param name="mlMinCreamFrame" value="0mil"/>
+<param name="mlMaxCreamFrame" value="0mil"/>
+<param name="mlViaStopLimit" value="0mil"/>
+<param name="srRoundness" value="0"/>
+<param name="srMinRoundness" value="0mil"/>
+<param name="srMaxRoundness" value="0mil"/>
+<param name="slThermalIsolate" value="10mil"/>
+<param name="slThermalsForVias" value="0"/>
+<param name="dpMaxLengthDifference" value="10mm"/>
+<param name="dpGapFactor" value="2.5"/>
+<param name="checkGrid" value="0"/>
+<param name="checkAngle" value="0"/>
+<param name="checkFont" value="1"/>
+<param name="checkRestrict" value="1"/>
+<param name="useDiameter" value="13"/>
+<param name="maxErrors" value="50"/>
+</designrules>
+<autorouter>
+<pass name="Default">
+<param name="RoutingGrid" value="50mil"/>
+<param name="tpViaShape" value="round"/>
+<param name="PrefDir.1" value="|"/>
+<param name="PrefDir.2" value="0"/>
+<param name="PrefDir.3" value="0"/>
+<param name="PrefDir.4" value="0"/>
+<param name="PrefDir.5" value="0"/>
+<param name="PrefDir.6" value="0"/>
+<param name="PrefDir.7" value="0"/>
+<param name="PrefDir.8" value="0"/>
+<param name="PrefDir.9" value="0"/>
+<param name="PrefDir.10" value="0"/>
+<param name="PrefDir.11" value="0"/>
+<param name="PrefDir.12" value="0"/>
+<param name="PrefDir.13" value="0"/>
+<param name="PrefDir.14" value="0"/>
+<param name="PrefDir.15" value="0"/>
+<param name="PrefDir.16" value="-"/>
+<param name="cfVia" value="8"/>
+<param name="cfNonPref" value="5"/>
+<param name="cfChangeDir" value="2"/>
+<param name="cfOrthStep" value="2"/>
+<param name="cfDiagStep" value="3"/>
+<param name="cfExtdStep" value="0"/>
+<param name="cfBonusStep" value="1"/>
+<param name="cfMalusStep" value="1"/>
+<param name="cfPadImpact" value="4"/>
+<param name="cfSmdImpact" value="4"/>
+<param name="cfBusImpact" value="0"/>
+<param name="cfHugging" value="3"/>
+<param name="cfAvoid" value="4"/>
+<param name="cfPolygon" value="10"/>
+<param name="cfBase.1" value="0"/>
+<param name="cfBase.2" value="1"/>
+<param name="cfBase.3" value="1"/>
+<param name="cfBase.4" value="1"/>
+<param name="cfBase.5" value="1"/>
+<param name="cfBase.6" value="1"/>
+<param name="cfBase.7" value="1"/>
+<param name="cfBase.8" value="1"/>
+<param name="cfBase.9" value="1"/>
+<param name="cfBase.10" value="1"/>
+<param name="cfBase.11" value="1"/>
+<param name="cfBase.12" value="1"/>
+<param name="cfBase.13" value="1"/>
+<param name="cfBase.14" value="1"/>
+<param name="cfBase.15" value="1"/>
+<param name="cfBase.16" value="0"/>
+<param name="mnVias" value="20"/>
+<param name="mnSegments" value="9999"/>
+<param name="mnExtdSteps" value="9999"/>
+<param name="mnRipupLevel" value="10"/>
+<param name="mnRipupSteps" value="100"/>
+<param name="mnRipupTotal" value="100"/>
+</pass>
+<pass name="Follow-me" refer="Default" active="yes">
+</pass>
+<pass name="Busses" refer="Default" active="yes">
+<param name="cfNonPref" value="4"/>
+<param name="cfBusImpact" value="4"/>
+<param name="cfHugging" value="0"/>
+<param name="mnVias" value="0"/>
+</pass>
+<pass name="Route" refer="Default" active="yes">
+</pass>
+<pass name="Optimize1" refer="Default" active="yes">
+<param name="cfVia" value="99"/>
+<param name="cfExtdStep" value="10"/>
+<param name="cfHugging" value="1"/>
+<param name="mnExtdSteps" value="1"/>
+<param name="mnRipupLevel" value="0"/>
+</pass>
+<pass name="Optimize2" refer="Optimize1" active="yes">
+<param name="cfNonPref" value="0"/>
+<param name="cfChangeDir" value="6"/>
+<param name="cfExtdStep" value="0"/>
+<param name="cfBonusStep" value="2"/>
+<param name="cfMalusStep" value="2"/>
+<param name="cfPadImpact" value="2"/>
+<param name="cfSmdImpact" value="2"/>
+<param name="cfHugging" value="0"/>
+</pass>
+<pass name="Optimize3" refer="Optimize2" active="yes">
+<param name="cfChangeDir" value="8"/>
+<param name="cfPadImpact" value="0"/>
+<param name="cfSmdImpact" value="0"/>
+</pass>
+<pass name="Optimize4" refer="Optimize3" active="yes">
+<param name="cfChangeDir" value="25"/>
+</pass>
+</autorouter>
+<elements>
+<element name="X1" library="con-chipcard-iso7816" package="ISO-7816" value="CHIPCARD-ISO-7816ISO" x="0" y="54">
+<attribute name="OC_NEWARK" value="unknown" x="0" y="54" size="1.778" layer="27" display="off"/>
+<attribute name="MPN" value="" x="0" y="54" size="1.778" layer="27" display="off"/>
+<attribute name="MF" value="" x="0" y="54" size="1.778" layer="27" display="off"/>
+<attribute name="OC_FARNELL" value="unknown" x="0" y="54" size="1.778" layer="27" display="off"/>
+</element>
+<element name="IC1" library="atmel" package="SO08" value="TINY10S" x="27.305" y="29.87" rot="MR0"/>
+<element name="TP1" library="testpad" package="TP10SQ" value="TPTP10SQ" x="24.765" y="35.2675">
+<attribute name="TP_SIGNAL_NAME" value="" x="24.765" y="35.2675" size="1.778" layer="27" display="off"/>
+</element>
+<element name="TP2" library="testpad" package="TP10SQ" value="TPTP10SQ" x="26.3525" y="35.2675">
+<attribute name="TP_SIGNAL_NAME" value="" x="26.3525" y="35.2675" size="1.778" layer="27" display="off"/>
+</element>
+<element name="TP3" library="testpad" package="TP10SQ" value="TPTP10SQ" x="27.94" y="35.2675">
+<attribute name="TP_SIGNAL_NAME" value="" x="27.94" y="35.2675" size="1.778" layer="27" display="off"/>
+</element>
+<element name="C1" library="resistor" package="C0805" value="" x="22.5425" y="33.68" rot="R90"/>
+<element name="TP4" library="testpad" package="TP10SQ" value="TPTP10SQ" x="29.21" y="25.1075">
+<attribute name="TP_SIGNAL_NAME" value="" x="29.21" y="25.1075" size="1.778" layer="27" display="off"/>
+</element>
+<element name="TP5" library="testpad" package="TP10SQ" value="TPTP10SQ" x="29.5275" y="35.2675">
+<attribute name="TP_SIGNAL_NAME" value="" x="29.5275" y="35.2675" size="1.778" layer="27" display="off"/>
+</element>
+<element name="TP6" library="testpad" package="TP10SQ" value="TPTP10SQ" x="23.8125" y="26.695">
+<attribute name="TP_SIGNAL_NAME" value="" x="23.8125" y="26.695" size="1.778" layer="27" display="off"/>
+</element>
+<element name="IC2" library="atmel" package="DIL08" value="TINY10P" x="92.795" y="28.525" rot="MR90"/>
+<element name="C2" library="resistor" package="C0805" value="" x="92.075" y="28.575" rot="R270"/>
+<element name="TP7" library="testpad" package="TP10SQ" value="TPTP10SQ" x="27.6225" y="25.0825">
+<attribute name="TP_SIGNAL_NAME" value="" x="27.6225" y="25.0825" size="1.778" layer="27" display="off"/>
+</element>
+</elements>
+<signals>
+<signal name="RST">
+<contactref element="IC1" pad="1"/>
+<contactref element="X1" pad="C2"/>
+<wire x1="11.249" y1="31.362" x2="7.3025" y2="31.362" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="31.362" x2="7.3025" y2="23.52" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="23.52" x2="27.965" y2="23.52" width="0.4064" layer="1"/>
+<wire x1="27.965" y1="23.52" x2="29.21" y2="24.765" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="24.765" x2="29.21" y2="25.1075" width="0.4064" layer="1"/>
+<contactref element="TP4" pad="TP"/>
+<wire x1="29.21" y1="25.1075" x2="29.21" y2="27.94" width="0.4064" layer="1"/>
+<contactref element="IC2" pad="1"/>
+<wire x1="88.985" y1="24.715" x2="86.36" y2="24.715" width="0.4064" layer="1"/>
+<wire x1="86.36" y1="24.715" x2="86.36" y2="27.94" width="0.4064" layer="1"/>
+<wire x1="86.36" y1="27.94" x2="29.21" y2="27.94" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="27.94" x2="29.21" y2="27.27" width="0" layer="19" extent="1-16"/>
+<wire x1="29.21" y1="27.27" x2="29.21" y2="27.27" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="CLK">
+<contactref element="X1" pad="C3"/>
+<wire x1="11.249" y1="28.817" x2="8.5725" y2="28.817" width="0.4064" layer="1"/>
+<wire x1="8.5725" y1="28.817" x2="8.5725" y2="24.4725" width="0.4064" layer="1"/>
+<wire x1="8.5725" y1="24.4725" x2="26.9875" y2="24.4725" width="0.4064" layer="1"/>
+<contactref element="IC1" pad="2"/>
+<wire x1="26.9875" y1="24.4725" x2="27.45125" y2="24.93625" width="0.4064" layer="1"/>
+<wire x1="27.45125" y1="24.93625" x2="27.94" y2="25.425" width="0.4064" layer="1"/>
+<wire x1="27.94" y1="25.425" x2="27.94" y2="27.27" width="0.4064" layer="1"/>
+<contactref element="IC2" pad="2"/>
+<wire x1="88.985" y1="27.255" x2="87.3125" y2="27.255" width="0.4064" layer="1"/>
+<wire x1="87.3125" y1="27.255" x2="87.3125" y2="28.8925" width="0.4064" layer="1"/>
+<wire x1="87.3125" y1="28.8925" x2="27.94" y2="28.8925" width="0.4064" layer="1"/>
+<contactref element="TP7" pad="TP"/>
+<wire x1="27.6225" y1="25.0825" x2="27.45125" y2="25.0825" width="0.4064" layer="1"/>
+<wire x1="27.45125" y1="25.0825" x2="27.45125" y2="24.93625" width="0.4064" layer="1"/>
+<wire x1="27.94" y1="28.8925" x2="27.94" y2="27.27" width="0.4064" layer="1"/>
+</signal>
+<signal name="VCC">
+<contactref element="X1" pad="C1"/>
+<contactref element="IC1" pad="8"/>
+<wire x1="11.249" y1="33.901" x2="7.3025" y2="33.901" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="33.901" x2="7.3025" y2="33.9725" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="36.5125" x2="7.3025" y2="36.5375" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="36.5375" x2="22.5425" y2="36.5375" width="0.4064" layer="1"/>
+<wire x1="22.5425" y1="36.5375" x2="29.21" y2="36.5375" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="36.5375" x2="29.21" y2="36.5125" width="0.4064" layer="1"/>
+<contactref element="C1" pad="2"/>
+<wire x1="29.21" y1="35.2675" x2="29.21" y2="31.75" width="0.4064" layer="1"/>
+<wire x1="22.5425" y1="34.53" x2="22.5425" y2="36.5375" width="0.4064" layer="1"/>
+<contactref element="TP5" pad="TP"/>
+<wire x1="29.5275" y1="35.2675" x2="29.21" y2="35.2675" width="0.4064" layer="1"/>
+<contactref element="IC2" pad="8"/>
+<wire x1="96.605" y1="24.715" x2="94.2975" y2="24.715" width="0.4064" layer="1"/>
+<wire x1="94.2975" y1="24.715" x2="94.2975" y2="27.725" width="0.4064" layer="1"/>
+<wire x1="94.2975" y1="27.725" x2="94.2975" y2="34.29" width="0.4064" layer="1"/>
+<wire x1="94.2975" y1="34.29" x2="86.36" y2="34.29" width="0.4064" layer="1"/>
+<wire x1="86.36" y1="34.29" x2="86.36" y2="31.75" width="0.4064" layer="1"/>
+<wire x1="86.36" y1="31.75" x2="29.21" y2="31.75" width="0.4064" layer="1"/>
+<contactref element="C2" pad="2"/>
+<wire x1="92.075" y1="27.725" x2="94.2975" y2="27.725" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="35.2675" x2="29.21" y2="36.5125" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="36.5125" x2="7.3025" y2="36.5125" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="36.5125" x2="7.3025" y2="33.9725" width="0.4064" layer="1"/>
+<wire x1="7.3025" y1="33.9725" x2="11.3055" y2="33.9725" width="0.4064" layer="1"/>
+<wire x1="29.21" y1="32.47" x2="29.21" y2="32.385" width="0.4064" layer="16"/>
+<wire x1="29.21" y1="31.75" x2="29.21" y2="32.385" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="GND">
+<contactref element="IC1" pad="4"/>
+<contactref element="X1" pad="C5"/>
+<contactref element="C1" pad="1"/>
+<contactref element="TP6" pad="TP"/>
+<wire x1="23.8125" y1="26.695" x2="22.5425" y2="26.695" width="0.4064" layer="1"/>
+<wire x1="22.5425" y1="26.695" x2="22.5425" y2="32.83" width="0.4064" layer="1"/>
+<wire x1="18.872" y1="33.9" x2="20.955" y2="33.9" width="0.4064" layer="1"/>
+<wire x1="20.955" y1="33.9" x2="20.955" y2="32.83" width="0.4064" layer="1"/>
+<wire x1="22.5425" y1="32.83" x2="20.955" y2="32.83" width="0.4064" layer="1"/>
+<contactref element="IC2" pad="4"/>
+<contactref element="C2" pad="1"/>
+<wire x1="88.985" y1="32.335" x2="92.075" y2="32.335" width="0.4064" layer="1"/>
+<wire x1="92.075" y1="32.335" x2="92.075" y2="29.425" width="0.4064" layer="1"/>
+<wire x1="88.985" y1="32.335" x2="87.3125" y2="32.335" width="0.4064" layer="1"/>
+<wire x1="87.3125" y1="32.335" x2="87.3125" y2="30.7975" width="0.4064" layer="1"/>
+<wire x1="87.3125" y1="30.7975" x2="25.4" y2="30.7975" width="0.4064" layer="1"/>
+<wire x1="25.4" y1="30.7975" x2="25.4" y2="26.67" width="0.4064" layer="1"/>
+<wire x1="25.4" y1="27.27" x2="25.4" y2="26.67" width="0" layer="19" extent="1-16"/>
+<wire x1="25.4" y1="27.6225" x2="25.4" y2="27.27" width="0.4064" layer="16"/>
+<wire x1="23.8125" y1="26.695" x2="25.375" y2="26.695" width="0.4064" layer="1"/>
+<wire x1="25.375" y1="26.695" x2="25.4" y2="26.67" width="0.4064" layer="1" curve="-90"/>
+<wire x1="25.4" y1="27.27" x2="25.4" y2="27.27" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="DAT">
+<contactref element="X1" pad="C7"/>
+<contactref element="IC1" pad="3"/>
+<wire x1="26.035" y1="25.425" x2="26.67" y2="26.06" width="0.4064" layer="1"/>
+<contactref element="IC2" pad="3"/>
+<wire x1="88.985" y1="29.795" x2="26.67" y2="29.795" width="0.4064" layer="1"/>
+<wire x1="26.67" y1="29.795" x2="26.67" y2="26.06" width="0.4064" layer="1"/>
+<wire x1="88.9" y1="29.845" x2="88.9" y2="29.76" width="0.4064" layer="1"/>
+<wire x1="88.9" y1="29.76" x2="88.985" y2="29.795" width="0.4064" layer="1"/>
+<wire x1="26.035" y1="25.425" x2="20.955" y2="25.425" width="0.4064" layer="1"/>
+<wire x1="20.955" y1="25.425" x2="20.955" y2="28.8925" width="0.4064" layer="1"/>
+<wire x1="20.955" y1="28.8925" x2="18.872" y2="28.8925" width="0.4064" layer="1"/>
+<wire x1="18.872" y1="28.8925" x2="18.872" y2="28.82" width="0.4064" layer="1"/>
+<wire x1="26.67" y1="27.27" x2="26.67" y2="27.305" width="0.4064" layer="16"/>
+<wire x1="26.67" y1="26.67" x2="26.67" y2="27.27" width="0.4064" layer="16"/>
+<wire x1="26.67" y1="26.06" x2="26.67" y2="26.67" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="PB0">
+<contactref element="IC1" pad="5"/>
+<contactref element="TP1" pad="TP"/>
+<wire x1="24.765" y1="35.2675" x2="24.765" y2="34.315" width="0.4064" layer="1"/>
+<wire x1="24.765" y1="34.315" x2="25.4" y2="33.68" width="0.4064" layer="1"/>
+<wire x1="25.4" y1="33.68" x2="25.4" y2="32.47" width="0.4064" layer="1"/>
+<wire x1="25.4" y1="32.47" x2="25.4" y2="32.47" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="PB1">
+<contactref element="IC1" pad="6"/>
+<contactref element="TP2" pad="TP"/>
+<wire x1="26.3525" y1="35.2675" x2="26.3525" y2="34.315" width="0.4064" layer="1"/>
+<wire x1="26.3525" y1="34.315" x2="26.67" y2="33.9975" width="0.4064" layer="1"/>
+<wire x1="26.67" y1="33.9975" x2="26.67" y2="32.47" width="0.4064" layer="1"/>
+<wire x1="26.67" y1="32.47" x2="26.67" y2="32.47" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="PB2">
+<contactref element="IC1" pad="7"/>
+<contactref element="TP3" pad="TP"/>
+<wire x1="27.94" y1="35.2675" x2="27.94" y2="32.47" width="0.4064" layer="1"/>
+<wire x1="27.94" y1="32.47" x2="27.94" y2="32.47" width="0" layer="19" extent="1-16"/>
+</signal>
+<signal name="N$9">
+<via x="0" y="54" extent="1-16" drill="0.6" diameter="0.254" shape="square"/>
+</signal>
+<signal name="N$10">
+<via x="0" y="0" extent="1-16" drill="0.6" diameter="0.254" shape="square"/>
+</signal>
+<signal name="N$11">
+<via x="85.6" y="54" extent="1-16" drill="0.6" diameter="0.254" shape="square"/>
+</signal>
+<signal name="N$12">
+<via x="85.6" y="0" extent="1-16" drill="0.6" diameter="0.254" shape="square"/>
+</signal>
+<signal name="N$13">
+<wire x1="0" y1="51.8" x2="2.2" y2="54" width="0.1" layer="16" curve="-90"/>
+<wire x1="2.2" y1="0" x2="0" y2="2.2" width="0.1" layer="16" curve="-90"/>
+<wire x1="85.6" y1="2.2" x2="83.4" y2="0" width="0.1" layer="16" curve="-90"/>
+<wire x1="83.4" y1="54" x2="85.6" y2="51.8" width="0.1" layer="16" curve="-90"/>
+<wire x1="83.4" y1="54" x2="2.2" y2="54" width="0.1" layer="16"/>
+<wire x1="0" y1="51.8" x2="0" y2="2.2" width="0.1" layer="16"/>
+<wire x1="2.2" y1="0" x2="83.4" y2="0" width="0.1" layer="16"/>
+<wire x1="85.6" y1="2.2" x2="85.6" y2="23.9305" width="0.1" layer="16"/>
+<wire x1="85.6" y1="51.8" x2="85.6" y2="35.1505" width="0.1" layer="16"/>
+</signal>
+<signal name="N$16">
+<wire x1="7.20725" y1="37.49675" x2="6.25475" y2="36.54425" width="0.1" layer="16" curve="90"/>
+<wire x1="6.25475" y1="36.54425" x2="6.25475" y2="23.495" width="0.1" layer="16"/>
+<wire x1="6.25475" y1="23.495" x2="7.239" y2="22.51075" width="0.1" layer="16" curve="90"/>
+<wire x1="7.239" y1="22.51075" x2="27.94" y2="22.51075" width="0.1" layer="16"/>
+<wire x1="27.94" y1="22.51075" x2="28.1305" y2="22.5425" width="0.1" layer="16"/>
+<wire x1="28.1305" y1="22.5425" x2="28.35275" y2="22.63775" width="0.1" layer="16"/>
+<wire x1="28.35275" y1="22.63775" x2="28.54325" y2="22.7965" width="0.1" layer="16"/>
+<wire x1="28.54325" y1="22.7965" x2="31.0515" y2="25.30475" width="0.1" layer="16"/>
+<wire x1="31.0515" y1="25.30475" x2="31.14675" y2="25.4635" width="0.1" layer="16"/>
+<wire x1="31.14675" y1="25.4635" x2="31.21025" y2="25.654" width="0.1" layer="16"/>
+<wire x1="31.21025" y1="25.654" x2="31.242" y2="25.8445" width="0.1" layer="16"/>
+<wire x1="31.242" y1="36.5125" x2="30.25775" y2="37.49675" width="0.1" layer="16" curve="90"/>
+<wire x1="30.25775" y1="37.49675" x2="7.20725" y2="37.49675" width="0.1" layer="16"/>
+</signal>
+<signal name="N$17">
+<wire x1="31.242" y1="36.48075" x2="31.242" y2="32.5755" width="0.1" layer="16"/>
+</signal>
+<signal name="N$18">
+<wire x1="31.242" y1="25.8445" x2="31.242" y2="27.1145" width="0.1" layer="16"/>
+</signal>
+<signal name="N$1">
+<wire x1="1.5875" y1="6.6675" x2="4.1275" y2="11.43" width="0.4064" layer="1"/>
+<wire x1="4.1275" y1="11.43" x2="4.1275" y2="9.8425" width="0.4064" layer="1"/>
+<wire x1="4.1275" y1="9.8425" x2="12.3825" y2="9.8425" width="0.4064" layer="1"/>
+<wire x1="1.5875" y1="6.6675" x2="4.1275" y2="1.905" width="0.4064" layer="1"/>
+<wire x1="4.1275" y1="1.905" x2="4.1275" y2="3.4925" width="0.4064" layer="1"/>
+<wire x1="4.1275" y1="3.4925" x2="12.3825" y2="3.4925" width="0.4064" layer="1"/>
+</signal>
+<signal name="N$2">
+<wire x1="25.4" y1="31.75" x2="25.4" y2="32.385" width="0.4064" layer="1"/>
+</signal>
+<signal name="N$3">
+<wire x1="26.67" y1="31.75" x2="26.67" y2="32.385" width="0.4064" layer="1"/>
+</signal>
+<signal name="N$4">
+<wire x1="27.94" y1="31.75" x2="27.94" y2="32.385" width="0.4064" layer="1"/>
+</signal>
+</signals>
+</board>
+</drawing>
+</eagle>
diff --git a/layout/telekarte.pdf b/layout/telekarte.pdf
new file mode 100755
index 0000000..e95ad0c
--- /dev/null
+++ b/layout/telekarte.pdf
Binary files differ
diff --git a/layout/telekarte.sch b/layout/telekarte.sch
new file mode 100755
index 0000000..a40519b
--- /dev/null
+++ b/layout/telekarte.sch
@@ -0,0 +1,4796 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE eagle SYSTEM "eagle.dtd">
+<eagle version="6.3">
+<drawing>
+<settings>
+<setting alwaysvectorfont="no"/>
+<setting verticaltext="up"/>
+</settings>
+<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>
+<layers>
+<layer number="1" name="Top" color="4" fill="1" visible="no" active="no"/>
+<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
+<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
+<layer number="4" name="Route4" color="1" fill="4" visible="no" active="no"/>
+<layer number="5" name="Route5" color="4" fill="4" visible="no" active="no"/>
+<layer number="6" name="Route6" color="1" fill="8" visible="no" active="no"/>
+<layer number="7" name="Route7" color="4" fill="8" visible="no" active="no"/>
+<layer number="8" name="Route8" color="1" fill="2" visible="no" active="no"/>
+<layer number="9" name="Route9" color="4" fill="2" visible="no" active="no"/>
+<layer number="10" name="Route10" color="1" fill="7" visible="no" active="no"/>
+<layer number="11" name="Route11" color="4" fill="7" visible="no" active="no"/>
+<layer number="12" name="Route12" color="1" fill="5" visible="no" active="no"/>
+<layer number="13" name="Route13" color="4" fill="5" visible="no" active="no"/>
+<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
+<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
+<layer number="16" name="Bottom" color="1" fill="1" visible="no" active="no"/>
+<layer number="17" name="Pads" color="2" fill="1" visible="no" active="no"/>
+<layer number="18" name="Vias" color="2" fill="1" visible="no" active="no"/>
+<layer number="19" name="Unrouted" color="6" fill="1" visible="no" active="no"/>
+<layer number="20" name="Dimension" color="15" fill="1" visible="no" active="no"/>
+<layer number="21" name="tPlace" color="7" fill="1" visible="no" active="no"/>
+<layer number="22" name="bPlace" color="7" fill="1" visible="no" active="no"/>
+<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="no"/>
+<layer number="24" name="bOrigins" color="15" fill="1" visible="no" active="no"/>
+<layer number="25" name="tNames" color="7" fill="1" visible="no" active="no"/>
+<layer number="26" name="bNames" color="7" fill="1" visible="no" active="no"/>
+<layer number="27" name="tValues" color="7" fill="1" visible="no" active="no"/>
+<layer number="28" name="bValues" color="7" fill="1" visible="no" active="no"/>
+<layer number="29" name="tStop" color="7" fill="3" visible="no" active="no"/>
+<layer number="30" name="bStop" color="7" fill="6" visible="no" active="no"/>
+<layer number="31" name="tCream" color="7" fill="4" visible="no" active="no"/>
+<layer number="32" name="bCream" color="7" fill="5" visible="no" active="no"/>
+<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="no"/>
+<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="no"/>
+<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="no"/>
+<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="no"/>
+<layer number="37" name="tTest" color="7" fill="1" visible="no" active="no"/>
+<layer number="38" name="bTest" color="7" fill="1" visible="no" active="no"/>
+<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="no"/>
+<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="no"/>
+<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="no"/>
+<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="no"/>
+<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="no"/>
+<layer number="44" name="Drills" color="7" fill="1" visible="no" active="no"/>
+<layer number="45" name="Holes" color="7" fill="1" visible="no" active="no"/>
+<layer number="46" name="Milling" color="3" fill="1" visible="no" active="no"/>
+<layer number="47" name="Measures" color="7" fill="1" visible="no" active="no"/>
+<layer number="48" name="Document" color="7" fill="1" visible="no" active="no"/>
+<layer number="49" name="Reference" color="7" fill="1" visible="no" active="no"/>
+<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="no"/>
+<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="no"/>
+<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
+<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
+<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>
+<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
+<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
+<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
+<layer number="200" name="200bmp" color="1" fill="10" visible="no" active="no"/>
+</layers>
+<schematic xreflabel="%F%N/%S.%C%R" xrefpart="/%S.%C%R">
+<libraries>
+<library name="con-chipcard-iso7816">
+<description>&lt;b&gt;ISO 7816 Chipcard (Package)&lt;/b&gt;&lt;p&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="ISO7816">
+<description>&lt;b&gt;ISO 7816 Chipcard&lt;/b&gt;</description>
+<wire x1="1" y1="0" x2="24" y2="0" width="0.0002" layer="21"/>
+<wire x1="1" y1="-15" x2="21.7" y2="-15" width="0.0002" layer="21"/>
+<wire x1="0" y1="-1" x2="0" y2="-14" width="0.0002" layer="21"/>
+<wire x1="25" y1="-11.6" x2="25" y2="-1" width="0.0002" layer="21"/>
+<wire x1="-6.25" y1="-30" x2="-6.25" y2="14.48" width="0.0002" layer="21"/>
+<wire x1="-4.25" y1="16.48" x2="30" y2="16.48" width="0.0002" layer="21"/>
+<wire x1="-6.25" y1="14.48" x2="-4.25" y2="16.48" width="0.0002" layer="21" curve="-90"/>
+<wire x1="22.3" y1="-14.7" x2="24.8" y2="-12.2" width="0.0002" layer="21"/>
+<wire x1="0" y1="-14" x2="1" y2="-15" width="0.0002" layer="21" curve="90"/>
+<wire x1="24" y1="0" x2="25" y2="-1" width="0.0002" layer="21" curve="-90"/>
+<wire x1="24.8" y1="-12.2" x2="25" y2="-11.6" width="0.0002" layer="21" curve="36.869898"/>
+<wire x1="21.7" y1="-15" x2="22.3" y2="-14.7" width="0.0002" layer="21" curve="38.88007"/>
+<wire x1="0" y1="-1" x2="1" y2="0" width="0.0002" layer="21" curve="-90"/>
+<wire x1="6.1341" y1="-5.2197" x2="7.3279" y2="-6.4135" width="0.4064" layer="51"/>
+<wire x1="7.3279" y1="-6.4135" x2="7.1628" y2="-6.731" width="0.4064" layer="51"/>
+<wire x1="7.1628" y1="-6.731" x2="7.0866" y2="-7.0485" width="0.4064" layer="51"/>
+<wire x1="7.0866" y1="-7.0485" x2="6.1087" y2="-7.0485" width="0.4064" layer="51"/>
+<wire x1="6.1214" y1="-6.6675" x2="6.9215" y2="-6.6675" width="0.4064" layer="51"/>
+<wire x1="6.9215" y1="-6.6675" x2="6.9215" y2="-6.5532" width="0.4064" layer="51"/>
+<wire x1="6.9215" y1="-6.5532" x2="6.1087" y2="-5.7404" width="0.4064" layer="51"/>
+<wire x1="6.3881" y1="-6.4897" x2="6.1849" y2="-6.2865" width="0.4064" layer="51"/>
+<wire x1="8.4709" y1="-4.7625" x2="8.4709" y2="-5.6515" width="0.4064" layer="51"/>
+<wire x1="8.4709" y1="-5.6515" x2="8.1407" y2="-5.7531" width="0.4064" layer="51"/>
+<wire x1="8.1407" y1="-5.7531" x2="7.8359" y2="-5.9182" width="0.4064" layer="51"/>
+<wire x1="7.8359" y1="-5.9182" x2="6.477" y2="-4.5593" width="0.4064" layer="51"/>
+<wire x1="8.0899" y1="-4.699" x2="8.0899" y2="-5.4483" width="0.4064" layer="51"/>
+<wire x1="8.0899" y1="-5.4483" x2="7.9883" y2="-5.5499" width="0.4064" layer="51"/>
+<wire x1="7.9883" y1="-5.5499" x2="7.0866" y2="-4.6482" width="0.4064" layer="51"/>
+<wire x1="7.9883" y1="-5.0165" x2="7.5946" y2="-4.6228" width="0.4064" layer="51"/>
+<wire x1="9.1821" y1="-4.6609" x2="9.1821" y2="-6.35" width="0.4064" layer="51"/>
+<wire x1="9.1821" y1="-6.35" x2="9.3726" y2="-6.35" width="0.4064" layer="51"/>
+<wire x1="9.3726" y1="-6.35" x2="11.1633" y2="-4.5593" width="0.4064" layer="51"/>
+<wire x1="9.5631" y1="-4.6609" x2="9.5631" y2="-5.6261" width="0.4064" layer="51"/>
+<wire x1="9.5631" y1="-5.6261" x2="9.3472" y2="-5.842" width="0.4064" layer="51"/>
+<wire x1="9.5631" y1="-5.6261" x2="10.6045" y2="-4.5847" width="0.4064" layer="51"/>
+<wire x1="9.6774" y1="-4.9784" x2="10.0457" y2="-4.6101" width="0.4064" layer="51"/>
+<wire x1="11.43" y1="-7.0485" x2="10.5791" y2="-7.0485" width="0.4064" layer="51"/>
+<wire x1="10.5791" y1="-7.0485" x2="10.4648" y2="-6.6929" width="0.4064" layer="51"/>
+<wire x1="10.4648" y1="-6.6929" x2="10.3124" y2="-6.4262" width="0.4064" layer="51"/>
+<wire x1="10.3124" y1="-6.4262" x2="11.5189" y2="-5.2197" width="0.4064" layer="51"/>
+<wire x1="11.4681" y1="-6.6675" x2="10.795" y2="-6.6675" width="0.4064" layer="51"/>
+<wire x1="10.795" y1="-6.6675" x2="10.6934" y2="-6.5659" width="0.4064" layer="51"/>
+<wire x1="10.6934" y1="-6.5659" x2="11.5316" y2="-5.7277" width="0.4064" layer="51"/>
+<wire x1="11.1887" y1="-6.5278" x2="11.4427" y2="-6.2738" width="0.4064" layer="51"/>
+<wire x1="11.43" y1="-7.7597" x2="10.5791" y2="-7.7597" width="0.4064" layer="51"/>
+<wire x1="10.5791" y1="-7.7597" x2="10.4902" y2="-8.0645" width="0.4064" layer="51"/>
+<wire x1="10.4902" y1="-8.0645" x2="10.3124" y2="-8.382" width="0.4064" layer="51"/>
+<wire x1="10.3124" y1="-8.382" x2="11.5189" y2="-9.5885" width="0.4064" layer="51"/>
+<wire x1="11.4681" y1="-8.1407" x2="10.7696" y2="-8.1407" width="0.4064" layer="51"/>
+<wire x1="10.7696" y1="-8.1407" x2="10.6807" y2="-8.2296" width="0.4064" layer="51"/>
+<wire x1="10.6807" y1="-8.2296" x2="11.5062" y2="-9.0551" width="0.4064" layer="51"/>
+<wire x1="11.5316" y1="-8.5471" x2="11.2395" y2="-8.255" width="0.4064" layer="51"/>
+<wire x1="9.1821" y1="-10.0965" x2="9.1821" y2="-9.1567" width="0.4064" layer="51"/>
+<wire x1="9.1821" y1="-9.1567" x2="9.4996" y2="-9.0551" width="0.4064" layer="51"/>
+<wire x1="9.4996" y1="-9.0551" x2="9.8044" y2="-8.89" width="0.4064" layer="51"/>
+<wire x1="9.8044" y1="-8.89" x2="11.1633" y2="-10.2489" width="0.4064" layer="51"/>
+<wire x1="9.5631" y1="-10.1219" x2="9.5631" y2="-9.3472" width="0.4064" layer="51"/>
+<wire x1="9.5631" y1="-9.3472" x2="9.652" y2="-9.2583" width="0.4064" layer="51"/>
+<wire x1="9.652" y1="-9.2583" x2="10.541" y2="-10.1473" width="0.4064" layer="51"/>
+<wire x1="10.0711" y1="-10.2108" x2="9.6647" y2="-9.8044" width="0.4064" layer="51"/>
+<wire x1="8.4709" y1="-10.1092" x2="8.4709" y2="-9.1567" width="0.4064" layer="51"/>
+<wire x1="8.4709" y1="-9.1567" x2="8.1407" y2="-9.0551" width="0.4064" layer="51"/>
+<wire x1="8.1407" y1="-9.0551" x2="7.8486" y2="-8.89" width="0.4064" layer="51"/>
+<wire x1="7.8486" y1="-8.89" x2="6.5024" y2="-10.2362" width="0.4064" layer="51"/>
+<wire x1="8.1026" y1="-10.1346" x2="8.1026" y2="-9.3345" width="0.4064" layer="51"/>
+<wire x1="8.1026" y1="-9.3345" x2="8.0137" y2="-9.2456" width="0.4064" layer="51"/>
+<wire x1="8.0137" y1="-9.2456" x2="7.0485" y2="-10.2108" width="0.4064" layer="51"/>
+<wire x1="7.6073" y1="-10.1854" x2="8.001" y2="-9.7917" width="0.4064" layer="51"/>
+<wire x1="6.1341" y1="-9.5885" x2="7.3279" y2="-8.3947" width="0.4064" layer="51"/>
+<wire x1="7.3279" y1="-8.3947" x2="7.1755" y2="-8.0772" width="0.4064" layer="51"/>
+<wire x1="7.1755" y1="-8.0772" x2="7.0866" y2="-7.7597" width="0.4064" layer="51"/>
+<wire x1="7.0866" y1="-7.7597" x2="6.1722" y2="-7.7597" width="0.4064" layer="51"/>
+<wire x1="6.1468" y1="-8.128" x2="6.8707" y2="-8.128" width="0.4064" layer="51"/>
+<wire x1="6.8707" y1="-8.128" x2="6.9723" y2="-8.2296" width="0.4064" layer="51"/>
+<wire x1="6.9723" y1="-8.2296" x2="6.1468" y2="-9.0551" width="0.4064" layer="51"/>
+<wire x1="6.1087" y1="-8.5852" x2="6.4389" y2="-8.255" width="0.4064" layer="51"/>
+<wire x1="6.4389" y1="-8.255" x2="6.4389" y2="-8.2296" width="0.4064" layer="51"/>
+<circle x="8.8265" y="-7.4041" radius="1.27" width="0" layer="51"/>
+<smd name="C1" x="4.999" y="-3.599" dx="2" dy="1.7" layer="1"/>
+<smd name="C2" x="4.999" y="-6.138" dx="2" dy="1.7" layer="1"/>
+<smd name="C3" x="4.999" y="-8.683" dx="2" dy="1.7" layer="1"/>
+<smd name="C4" x="4.999" y="-11.222" dx="2" dy="1.7" layer="1"/>
+<smd name="C8" x="12.622" y="-11.222" dx="2" dy="1.7" layer="1"/>
+<smd name="C7" x="12.622" y="-8.68" dx="2" dy="1.7" layer="1"/>
+<smd name="C6" x="12.622" y="-6.14" dx="2" dy="1.7" layer="1"/>
+<smd name="C5" x="12.622" y="-3.6" dx="2" dy="1.7" layer="1"/>
+<text x="-0.316" y="-4.1" size="1.016" layer="51">VCC</text>
+<text x="-0.316" y="-6.6" size="1.016" layer="51">RST</text>
+<text x="-0.316" y="-9.2" size="1.016" layer="51">CLK</text>
+<text x="-0.316" y="-11.7" size="1.016" layer="51">NC</text>
+<text x="15.289" y="-9.2" size="1.016" layer="51">I/O</text>
+<text x="15.289" y="-4.1" size="1.016" layer="51">GND</text>
+<text x="3.81" y="1.27" size="1.27" layer="25">&gt;NAME</text>
+<text x="3.81" y="-17.78" size="1.27" layer="27">&gt;VALUE</text>
+<text x="15.289" y="-11.7" size="1.016" layer="51">NC </text>
+<text x="15.289" y="-6.6" size="1.016" layer="51">NC </text>
+<rectangle x1="2.8702" y1="-7.2517" x2="6.223" y2="-5.0165" layer="51"/>
+<rectangle x1="11.43" y1="-7.2517" x2="14.7828" y2="-5.0165" layer="51"/>
+<rectangle x1="2.8702" y1="-9.7917" x2="6.223" y2="-7.5565" layer="51"/>
+<rectangle x1="11.43" y1="-9.7917" x2="14.7828" y2="-7.5565" layer="51"/>
+<rectangle x1="2.8702" y1="-4.699" x2="8.6741" y2="-2.159" layer="51"/>
+<rectangle x1="2.8702" y1="-12.6365" x2="8.6741" y2="-10.0965" layer="51"/>
+<rectangle x1="8.9789" y1="-12.6365" x2="14.7828" y2="-10.0965" layer="51"/>
+<rectangle x1="8.9789" y1="-4.7117" x2="14.7828" y2="-2.1717" layer="51"/>
+</package>
+<package name="ISO-7816">
+<description>&lt;b&gt;ISO7816-1 Standard&lt;/b&gt; Chip Card&lt;p&gt;
+Source: http://www.didya.com/iso-7816.asp</description>
+<wire x1="7.25" y1="-16.5" x2="30.25" y2="-16.5" width="0.0002" layer="21"/>
+<wire x1="7.25" y1="-31.5" x2="27.95" y2="-31.5" width="0.0002" layer="21"/>
+<wire x1="6.25" y1="-17.5" x2="6.25" y2="-30.5" width="0.0002" layer="21"/>
+<wire x1="31.25" y1="-28.1" x2="31.25" y2="-17.5" width="0.0002" layer="21"/>
+<wire x1="0" y1="-46.5" x2="0" y2="-2.25" width="0.0002" layer="21"/>
+<wire x1="2.25" y1="0" x2="36.25" y2="0" width="0.0002" layer="21"/>
+<wire x1="0" y1="-2.25" x2="2.25" y2="0" width="0.0002" layer="21" curve="-90"/>
+<wire x1="28.55" y1="-31.2" x2="31.05" y2="-28.7" width="0.0002" layer="21"/>
+<wire x1="6.25" y1="-30.5" x2="7.25" y2="-31.5" width="0.0002" layer="21" curve="90"/>
+<wire x1="30.25" y1="-16.5" x2="31.25" y2="-17.5" width="0.0002" layer="21" curve="-90"/>
+<wire x1="31.05" y1="-28.7" x2="31.25" y2="-28.1" width="0.0002" layer="21" curve="36.869898"/>
+<wire x1="27.95" y1="-31.5" x2="28.55" y2="-31.2" width="0.0002" layer="21" curve="38.88007"/>
+<wire x1="6.25" y1="-17.5" x2="7.25" y2="-16.5" width="0.0002" layer="21" curve="-90"/>
+<wire x1="12.3841" y1="-21.7197" x2="13.5779" y2="-22.9135" width="0.4064" layer="51"/>
+<wire x1="13.5779" y1="-22.9135" x2="13.4128" y2="-23.231" width="0.4064" layer="51"/>
+<wire x1="13.4128" y1="-23.231" x2="13.3366" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="13.3366" y1="-23.5485" x2="12.3587" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="12.3714" y1="-23.1675" x2="13.1715" y2="-23.1675" width="0.4064" layer="51"/>
+<wire x1="13.1715" y1="-23.1675" x2="13.1715" y2="-23.0532" width="0.4064" layer="51"/>
+<wire x1="13.1715" y1="-23.0532" x2="12.3587" y2="-22.2404" width="0.4064" layer="51"/>
+<wire x1="12.6381" y1="-22.9897" x2="12.4349" y2="-22.7865" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-21.2625" x2="14.7209" y2="-22.1515" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-22.1515" x2="14.3907" y2="-22.2531" width="0.4064" layer="51"/>
+<wire x1="14.3907" y1="-22.2531" x2="14.0859" y2="-22.4182" width="0.4064" layer="51"/>
+<wire x1="14.0859" y1="-22.4182" x2="12.727" y2="-21.0593" width="0.4064" layer="51"/>
+<wire x1="14.3399" y1="-21.199" x2="14.3399" y2="-21.9483" width="0.4064" layer="51"/>
+<wire x1="14.3399" y1="-21.9483" x2="14.2383" y2="-22.0499" width="0.4064" layer="51"/>
+<wire x1="14.2383" y1="-22.0499" x2="13.3366" y2="-21.1482" width="0.4064" layer="51"/>
+<wire x1="14.2383" y1="-21.5165" x2="13.8446" y2="-21.1228" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-21.1609" x2="15.4321" y2="-22.85" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-22.85" x2="15.6226" y2="-22.85" width="0.4064" layer="51"/>
+<wire x1="15.6226" y1="-22.85" x2="17.4133" y2="-21.0593" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-21.1609" x2="15.8131" y2="-22.1261" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-22.1261" x2="15.5972" y2="-22.342" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-22.1261" x2="16.8545" y2="-21.0847" width="0.4064" layer="51"/>
+<wire x1="15.9274" y1="-21.4784" x2="16.2957" y2="-21.1101" width="0.4064" layer="51"/>
+<wire x1="17.68" y1="-23.5485" x2="16.8291" y2="-23.5485" width="0.4064" layer="51"/>
+<wire x1="16.8291" y1="-23.5485" x2="16.7148" y2="-23.1929" width="0.4064" layer="51"/>
+<wire x1="16.7148" y1="-23.1929" x2="16.5624" y2="-22.9262" width="0.4064" layer="51"/>
+<wire x1="16.5624" y1="-22.9262" x2="17.7689" y2="-21.7197" width="0.4064" layer="51"/>
+<wire x1="17.7181" y1="-23.1675" x2="17.045" y2="-23.1675" width="0.4064" layer="51"/>
+<wire x1="17.045" y1="-23.1675" x2="16.9434" y2="-23.0659" width="0.4064" layer="51"/>
+<wire x1="16.9434" y1="-23.0659" x2="17.7816" y2="-22.2277" width="0.4064" layer="51"/>
+<wire x1="17.4387" y1="-23.0278" x2="17.6927" y2="-22.7738" width="0.4064" layer="51"/>
+<wire x1="17.68" y1="-24.2597" x2="16.8291" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="16.8291" y1="-24.2597" x2="16.7402" y2="-24.5645" width="0.4064" layer="51"/>
+<wire x1="16.7402" y1="-24.5645" x2="16.5624" y2="-24.882" width="0.4064" layer="51"/>
+<wire x1="16.5624" y1="-24.882" x2="17.7689" y2="-26.0885" width="0.4064" layer="51"/>
+<wire x1="17.7181" y1="-24.6407" x2="17.0196" y2="-24.6407" width="0.4064" layer="51"/>
+<wire x1="17.0196" y1="-24.6407" x2="16.9307" y2="-24.7296" width="0.4064" layer="51"/>
+<wire x1="16.9307" y1="-24.7296" x2="17.7562" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="17.7816" y1="-25.0471" x2="17.4895" y2="-24.755" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-26.5965" x2="15.4321" y2="-25.6567" width="0.4064" layer="51"/>
+<wire x1="15.4321" y1="-25.6567" x2="15.7496" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="15.7496" y1="-25.5551" x2="16.0544" y2="-25.39" width="0.4064" layer="51"/>
+<wire x1="16.0544" y1="-25.39" x2="17.4133" y2="-26.7489" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-26.6219" x2="15.8131" y2="-25.8472" width="0.4064" layer="51"/>
+<wire x1="15.8131" y1="-25.8472" x2="15.902" y2="-25.7583" width="0.4064" layer="51"/>
+<wire x1="15.902" y1="-25.7583" x2="16.791" y2="-26.6473" width="0.4064" layer="51"/>
+<wire x1="16.3211" y1="-26.7108" x2="15.9147" y2="-26.3044" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-26.6092" x2="14.7209" y2="-25.6567" width="0.4064" layer="51"/>
+<wire x1="14.7209" y1="-25.6567" x2="14.3907" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="14.3907" y1="-25.5551" x2="14.0986" y2="-25.39" width="0.4064" layer="51"/>
+<wire x1="14.0986" y1="-25.39" x2="12.7524" y2="-26.7362" width="0.4064" layer="51"/>
+<wire x1="14.3526" y1="-26.6346" x2="14.3526" y2="-25.8345" width="0.4064" layer="51"/>
+<wire x1="14.3526" y1="-25.8345" x2="14.2637" y2="-25.7456" width="0.4064" layer="51"/>
+<wire x1="14.2637" y1="-25.7456" x2="13.2985" y2="-26.7108" width="0.4064" layer="51"/>
+<wire x1="13.8573" y1="-26.6854" x2="14.251" y2="-26.2917" width="0.4064" layer="51"/>
+<wire x1="12.3841" y1="-26.0885" x2="13.5779" y2="-24.8947" width="0.4064" layer="51"/>
+<wire x1="13.5779" y1="-24.8947" x2="13.4255" y2="-24.5772" width="0.4064" layer="51"/>
+<wire x1="13.4255" y1="-24.5772" x2="13.3366" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="13.3366" y1="-24.2597" x2="12.4222" y2="-24.2597" width="0.4064" layer="51"/>
+<wire x1="12.3968" y1="-24.628" x2="13.1207" y2="-24.628" width="0.4064" layer="51"/>
+<wire x1="13.1207" y1="-24.628" x2="13.2223" y2="-24.7296" width="0.4064" layer="51"/>
+<wire x1="13.2223" y1="-24.7296" x2="12.3968" y2="-25.5551" width="0.4064" layer="51"/>
+<wire x1="12.3587" y1="-25.0852" x2="12.6889" y2="-24.755" width="0.4064" layer="51"/>
+<wire x1="12.6889" y1="-24.755" x2="12.6889" y2="-24.7296" width="0.4064" layer="51"/>
+<circle x="15.0765" y="-23.9041" radius="1.27" width="0" layer="51"/>
+<smd name="C1" x="11.249" y="-20.099" dx="2" dy="1.7" layer="1"/>
+<smd name="C2" x="11.249" y="-22.638" dx="2" dy="1.7" layer="1"/>
+<smd name="C3" x="11.249" y="-25.183" dx="2" dy="1.7" layer="1"/>
+<smd name="C4" x="11.249" y="-27.722" dx="2" dy="1.7" layer="1"/>
+<smd name="C8" x="18.872" y="-27.722" dx="2" dy="1.7" layer="1"/>
+<smd name="C7" x="18.872" y="-25.18" dx="2" dy="1.7" layer="1"/>
+<smd name="C6" x="18.872" y="-22.64" dx="2" dy="1.7" layer="1"/>
+<smd name="C5" x="18.872" y="-20.1" dx="2" dy="1.7" layer="1"/>
+<text x="5.934" y="-20.6" size="1.016" layer="51">VCC</text>
+<text x="5.934" y="-23.1" size="1.016" layer="51">RST</text>
+<text x="5.934" y="-25.7" size="1.016" layer="51">CLK</text>
+<text x="5.934" y="-28.2" size="1.016" layer="51">NC</text>
+<text x="21.539" y="-25.7" size="1.016" layer="51">I/O</text>
+<text x="21.539" y="-20.6" size="1.016" layer="51">GND</text>
+<text x="10.06" y="-15.23" size="1.27" layer="25">&gt;NAME</text>
+<text x="10.06" y="-34.28" size="1.27" layer="27">&gt;VALUE</text>
+<text x="21.539" y="-28.2" size="1.016" layer="51">NC </text>
+<text x="21.539" y="-23.1" size="1.016" layer="51">NC </text>
+<rectangle x1="9.1202" y1="-23.7517" x2="12.473" y2="-21.5165" layer="51"/>
+<rectangle x1="17.68" y1="-23.7517" x2="21.0328" y2="-21.5165" layer="51"/>
+<rectangle x1="9.1202" y1="-26.2917" x2="12.473" y2="-24.0565" layer="51"/>
+<rectangle x1="17.68" y1="-26.2917" x2="21.0328" y2="-24.0565" layer="51"/>
+<rectangle x1="9.1202" y1="-21.199" x2="14.9241" y2="-18.659" layer="51"/>
+<rectangle x1="9.1202" y1="-29.1365" x2="14.9241" y2="-26.5965" layer="51"/>
+<rectangle x1="15.2289" y1="-29.1365" x2="21.0328" y2="-26.5965" layer="51"/>
+<rectangle x1="15.2289" y1="-21.2117" x2="21.0328" y2="-18.6717" layer="51"/>
+</package>
+<package name="AFNOR-CHIPCARD">
+<description>&lt;b&gt;AFNOR Chip Card&lt;/b&gt;&lt;p&gt;
+Source: http://www.didya.com/iso-7816.asp</description>
+<wire x1="0" y1="-46.5" x2="0" y2="-2.25" width="0.0002" layer="21"/>
+<wire x1="2.25" y1="0" x2="36.25" y2="0" width="0.0002" layer="21"/>
+<wire x1="0" y1="-2.25" x2="2.25" y2="0" width="0.0002" layer="21" curve="-90"/>
+<smd name="C1" x="18.8717" y="-17.5413" dx="2" dy="1.7" layer="1"/>
+<smd name="C2" x="18.8706" y="-14.9996" dx="2" dy="1.7" layer="1"/>
+<smd name="C3" x="18.868" y="-12.4572" dx="2" dy="1.7" layer="1"/>
+<smd name="C4" x="18.8714" y="-9.9198" dx="2" dy="1.7" layer="1"/>
+<smd name="C8" x="11.2516" y="-9.9198" dx="2" dy="1.7" layer="1"/>
+<smd name="C7" x="11.2504" y="-12.4593" dx="2" dy="1.7" layer="1"/>
+<smd name="C6" x="11.252" y="-14.9998" dx="2" dy="1.7" layer="1"/>
+<smd name="C5" x="11.2506" y="-17.5423" dx="2" dy="1.7" layer="1"/>
+<text x="7.62" y="-7.62" size="1.27" layer="25">&gt;NAME</text>
+<text x="7.52" y="-21.2" size="1.27" layer="27">&gt;VALUE</text>
+</package>
+</packages>
+<symbols>
+<symbol name="ISO7816">
+<wire x1="-2.7559" y1="0.8763" x2="-1.5621" y2="-0.3175" width="0.4064" layer="94"/>
+<wire x1="-1.5621" y1="-0.3175" x2="-1.7272" y2="-0.635" width="0.4064" layer="94"/>
+<wire x1="-1.7272" y1="-0.635" x2="-1.8034" y2="-0.9525" width="0.4064" layer="94"/>
+<wire x1="-1.8034" y1="-0.9525" x2="-2.7813" y2="-0.9525" width="0.4064" layer="94"/>
+<wire x1="-2.7686" y1="-0.5715" x2="-1.9685" y2="-0.5715" width="0.4064" layer="94"/>
+<wire x1="-1.9685" y1="-0.5715" x2="-1.9685" y2="-0.4572" width="0.4064" layer="94"/>
+<wire x1="-1.9685" y1="-0.4572" x2="-2.7813" y2="0.3556" width="0.4064" layer="94"/>
+<wire x1="-2.5019" y1="-0.3937" x2="-2.7051" y2="-0.1905" width="0.4064" layer="94"/>
+<wire x1="-0.4191" y1="1.3335" x2="-0.4191" y2="0.4445" width="0.4064" layer="94"/>
+<wire x1="-0.4191" y1="0.4445" x2="-0.7493" y2="0.3429" width="0.4064" layer="94"/>
+<wire x1="-0.7493" y1="0.3429" x2="-1.0541" y2="0.1778" width="0.4064" layer="94"/>
+<wire x1="-1.0541" y1="0.1778" x2="-2.413" y2="1.5367" width="0.4064" layer="94"/>
+<wire x1="-0.8001" y1="1.397" x2="-0.8001" y2="0.6477" width="0.4064" layer="94"/>
+<wire x1="-0.8001" y1="0.6477" x2="-0.9017" y2="0.5461" width="0.4064" layer="94"/>
+<wire x1="-0.9017" y1="0.5461" x2="-1.8034" y2="1.4478" width="0.4064" layer="94"/>
+<wire x1="-0.9017" y1="1.0795" x2="-1.2954" y2="1.4732" width="0.4064" layer="94"/>
+<wire x1="0.2921" y1="1.4351" x2="0.2921" y2="-0.254" width="0.4064" layer="94"/>
+<wire x1="0.2921" y1="-0.254" x2="0.4826" y2="-0.254" width="0.4064" layer="94"/>
+<wire x1="0.4826" y1="-0.254" x2="2.2733" y2="1.5367" width="0.4064" layer="94"/>
+<wire x1="0.6731" y1="1.4351" x2="0.6731" y2="0.4699" width="0.4064" layer="94"/>
+<wire x1="0.6731" y1="0.4699" x2="0.4572" y2="0.254" width="0.4064" layer="94"/>
+<wire x1="0.6731" y1="0.4699" x2="1.7145" y2="1.5113" width="0.4064" layer="94"/>
+<wire x1="0.7874" y1="1.1176" x2="1.1557" y2="1.4859" width="0.4064" layer="94"/>
+<wire x1="2.54" y1="-0.9525" x2="1.6891" y2="-0.9525" width="0.4064" layer="94"/>
+<wire x1="1.6891" y1="-0.9525" x2="1.5748" y2="-0.5969" width="0.4064" layer="94"/>
+<wire x1="1.5748" y1="-0.5969" x2="1.4224" y2="-0.3302" width="0.4064" layer="94"/>
+<wire x1="1.4224" y1="-0.3302" x2="2.6289" y2="0.8763" width="0.4064" layer="94"/>
+<wire x1="2.5781" y1="-0.5715" x2="1.905" y2="-0.5715" width="0.4064" layer="94"/>
+<wire x1="1.905" y1="-0.5715" x2="1.8034" y2="-0.4699" width="0.4064" layer="94"/>
+<wire x1="1.8034" y1="-0.4699" x2="2.6416" y2="0.3683" width="0.4064" layer="94"/>
+<wire x1="2.2987" y1="-0.4318" x2="2.5527" y2="-0.1778" width="0.4064" layer="94"/>
+<wire x1="2.54" y1="-1.6637" x2="1.6891" y2="-1.6637" width="0.4064" layer="94"/>
+<wire x1="1.6891" y1="-1.6637" x2="1.6002" y2="-1.9685" width="0.4064" layer="94"/>
+<wire x1="1.6002" y1="-1.9685" x2="1.4224" y2="-2.286" width="0.4064" layer="94"/>
+<wire x1="1.4224" y1="-2.286" x2="2.6289" y2="-3.4925" width="0.4064" layer="94"/>
+<wire x1="2.5781" y1="-2.0447" x2="1.8796" y2="-2.0447" width="0.4064" layer="94"/>
+<wire x1="1.8796" y1="-2.0447" x2="1.7907" y2="-2.1336" width="0.4064" layer="94"/>
+<wire x1="1.7907" y1="-2.1336" x2="2.6162" y2="-2.9591" width="0.4064" layer="94"/>
+<wire x1="2.6416" y1="-2.4511" x2="2.3495" y2="-2.159" width="0.4064" layer="94"/>
+<wire x1="0.2921" y1="-4.0005" x2="0.2921" y2="-3.0607" width="0.4064" layer="94"/>
+<wire x1="0.2921" y1="-3.0607" x2="0.6096" y2="-2.9591" width="0.4064" layer="94"/>
+<wire x1="0.6096" y1="-2.9591" x2="0.9144" y2="-2.794" width="0.4064" layer="94"/>
+<wire x1="0.9144" y1="-2.794" x2="2.2733" y2="-4.1529" width="0.4064" layer="94"/>
+<wire x1="0.6731" y1="-4.0259" x2="0.6731" y2="-3.2512" width="0.4064" layer="94"/>
+<wire x1="0.6731" y1="-3.2512" x2="0.762" y2="-3.1623" width="0.4064" layer="94"/>
+<wire x1="0.762" y1="-3.1623" x2="1.651" y2="-4.0513" width="0.4064" layer="94"/>
+<wire x1="1.1811" y1="-4.1148" x2="0.7747" y2="-3.7084" width="0.4064" layer="94"/>
+<wire x1="-0.4191" y1="-4.0132" x2="-0.4191" y2="-3.0607" width="0.4064" layer="94"/>
+<wire x1="-0.4191" y1="-3.0607" x2="-0.7493" y2="-2.9591" width="0.4064" layer="94"/>
+<wire x1="-0.7493" y1="-2.9591" x2="-1.0414" y2="-2.794" width="0.4064" layer="94"/>
+<wire x1="-1.0414" y1="-2.794" x2="-2.3876" y2="-4.1402" width="0.4064" layer="94"/>
+<wire x1="-0.7874" y1="-4.0386" x2="-0.7874" y2="-3.2385" width="0.4064" layer="94"/>
+<wire x1="-0.7874" y1="-3.2385" x2="-0.8763" y2="-3.1496" width="0.4064" layer="94"/>
+<wire x1="-0.8763" y1="-3.1496" x2="-1.8415" y2="-4.1148" width="0.4064" layer="94"/>
+<wire x1="-1.2827" y1="-4.0894" x2="-0.889" y2="-3.6957" width="0.4064" layer="94"/>
+<wire x1="-2.7559" y1="-3.4925" x2="-1.5621" y2="-2.2987" width="0.4064" layer="94"/>
+<wire x1="-1.5621" y1="-2.2987" x2="-1.7145" y2="-1.9812" width="0.4064" layer="94"/>
+<wire x1="-1.7145" y1="-1.9812" x2="-1.8034" y2="-1.6637" width="0.4064" layer="94"/>
+<wire x1="-1.8034" y1="-1.6637" x2="-2.7178" y2="-1.6637" width="0.4064" layer="94"/>
+<wire x1="-2.7432" y1="-2.032" x2="-2.0193" y2="-2.032" width="0.4064" layer="94"/>
+<wire x1="-2.0193" y1="-2.032" x2="-1.9177" y2="-2.1336" width="0.4064" layer="94"/>
+<wire x1="-1.9177" y1="-2.1336" x2="-2.7432" y2="-2.9591" width="0.4064" layer="94"/>
+<wire x1="-2.7813" y1="-2.4892" x2="-2.4511" y2="-2.159" width="0.4064" layer="94"/>
+<wire x1="-2.4511" y1="-2.159" x2="-2.4511" y2="-2.1336" width="0.4064" layer="94"/>
+<wire x1="-10.16" y1="2.54" x2="-5.08" y2="2.54" width="0.1524" layer="94"/>
+<wire x1="-10.16" y1="0" x2="-5.08" y2="0" width="0.1524" layer="94"/>
+<wire x1="-10.16" y1="-2.54" x2="-5.08" y2="-2.54" width="0.1524" layer="94"/>
+<wire x1="-10.16" y1="-5.08" x2="-5.08" y2="-5.08" width="0.1524" layer="94"/>
+<wire x1="10.16" y1="2.54" x2="5.08" y2="2.54" width="0.1524" layer="94"/>
+<wire x1="10.16" y1="0" x2="5.08" y2="0" width="0.1524" layer="94"/>
+<wire x1="10.16" y1="-2.54" x2="5.08" y2="-2.54" width="0.1524" layer="94"/>
+<wire x1="10.16" y1="-5.08" x2="5.08" y2="-5.08" width="0.1524" layer="94"/>
+<circle x="-0.0635" y="-1.3081" radius="1.27" width="0" layer="94"/>
+<text x="-8.952" y="1.234" size="1.016" layer="95">VCC</text>
+<text x="-8.952" y="-1.266" size="1.016" layer="95">RST</text>
+<text x="-8.952" y="-3.866" size="1.016" layer="95">CLK</text>
+<text x="-8.952" y="-6.366" size="1.016" layer="95">NC</text>
+<text x="6.399" y="-3.866" size="1.016" layer="95">I/O</text>
+<text x="6.399" y="1.234" size="1.016" layer="95">GND</text>
+<text x="-5.842" y="4.572" size="1.778" layer="95">&gt;NAME</text>
+<text x="-5.842" y="-8.89" size="1.778" layer="96">&gt;VALUE</text>
+<text x="6.399" y="-6.366" size="1.016" layer="95">NC </text>
+<text x="6.399" y="-1.266" size="1.016" layer="95">NC </text>
+<rectangle x1="-6.0198" y1="-1.1557" x2="-2.667" y2="1.0795" layer="94"/>
+<rectangle x1="2.54" y1="-1.1557" x2="5.8928" y2="1.0795" layer="94"/>
+<rectangle x1="-6.0198" y1="-3.6957" x2="-2.667" y2="-1.4605" layer="94"/>
+<rectangle x1="2.54" y1="-3.6957" x2="5.8928" y2="-1.4605" layer="94"/>
+<rectangle x1="-6.0198" y1="1.397" x2="-0.2159" y2="3.937" layer="94"/>
+<rectangle x1="-6.0198" y1="-6.5405" x2="-0.2159" y2="-4.0005" layer="94"/>
+<rectangle x1="0.0889" y1="-6.5405" x2="5.8928" y2="-4.0005" layer="94"/>
+<rectangle x1="0.0889" y1="1.3843" x2="5.8928" y2="3.9243" layer="94"/>
+<pin name="VCC" x="-12.7" y="2.54" visible="pad" length="short" direction="pas"/>
+<pin name="RST" x="-12.7" y="0" visible="pad" length="short" direction="pas"/>
+<pin name="CLK" x="-12.7" y="-2.54" visible="pad" length="short" direction="pas"/>
+<pin name="NC@4" x="-12.7" y="-5.08" visible="pad" length="short" direction="pas"/>
+<pin name="NC@8" x="12.7" y="-5.08" visible="pad" length="short" direction="pas" rot="R180"/>
+<pin name="I/O" x="12.7" y="-2.54" visible="pad" length="short" direction="pas" rot="R180"/>
+<pin name="NC@6" x="12.7" y="0" visible="pad" length="short" direction="pas" rot="R180"/>
+<pin name="GND" x="12.7" y="2.54" visible="pad" length="short" direction="pas" rot="R180"/>
+</symbol>
+</symbols>
+<devicesets>
+<deviceset name="CHIPCARD-ISO-7816" prefix="X">
+<description>&lt;b&gt;Chip card connector ISO 7816&lt;/b&gt;</description>
+<gates>
+<gate name="G$1" symbol="ISO7816" x="0" y="0"/>
+</gates>
+<devices>
+<device name="" package="ISO7816">
+<connects>
+<connect gate="G$1" pin="CLK" pad="C3"/>
+<connect gate="G$1" pin="GND" pad="C5"/>
+<connect gate="G$1" pin="I/O" pad="C7"/>
+<connect gate="G$1" pin="NC@4" pad="C4"/>
+<connect gate="G$1" pin="NC@6" pad="C6"/>
+<connect gate="G$1" pin="NC@8" pad="C8"/>
+<connect gate="G$1" pin="RST" pad="C2"/>
+<connect gate="G$1" pin="VCC" pad="C1"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="MF" value="" constant="no"/>
+<attribute name="MPN" value="" constant="no"/>
+<attribute name="OC_FARNELL" value="unknown" constant="no"/>
+<attribute name="OC_NEWARK" value="unknown" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="ISO" package="ISO-7816">
+<connects>
+<connect gate="G$1" pin="CLK" pad="C3"/>
+<connect gate="G$1" pin="GND" pad="C5"/>
+<connect gate="G$1" pin="I/O" pad="C7"/>
+<connect gate="G$1" pin="NC@4" pad="C4"/>
+<connect gate="G$1" pin="NC@6" pad="C6"/>
+<connect gate="G$1" pin="NC@8" pad="C8"/>
+<connect gate="G$1" pin="RST" pad="C2"/>
+<connect gate="G$1" pin="VCC" pad="C1"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="MF" value="" constant="no"/>
+<attribute name="MPN" value="" constant="no"/>
+<attribute name="OC_FARNELL" value="unknown" constant="no"/>
+<attribute name="OC_NEWARK" value="unknown" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="ANFOR" package="AFNOR-CHIPCARD">
+<connects>
+<connect gate="G$1" pin="CLK" pad="C3"/>
+<connect gate="G$1" pin="GND" pad="C5"/>
+<connect gate="G$1" pin="I/O" pad="C7"/>
+<connect gate="G$1" pin="NC@4" pad="C4"/>
+<connect gate="G$1" pin="NC@6" pad="C6"/>
+<connect gate="G$1" pin="NC@8" pad="C8"/>
+<connect gate="G$1" pin="RST" pad="C2"/>
+<connect gate="G$1" pin="VCC" pad="C1"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="MF" value="" constant="no"/>
+<attribute name="MPN" value="" constant="no"/>
+<attribute name="OC_FARNELL" value="unknown" constant="no"/>
+<attribute name="OC_NEWARK" value="unknown" constant="no"/>
+</technology>
+</technologies>
+</device>
+</devices>
+</deviceset>
+</devicesets>
+</library>
+<library name="atmel">
+<description>&lt;b&gt;AVR Devices&lt;/b&gt;&lt;p&gt;
+Configurable logic, microcontrollers, nonvolatile memories&lt;p&gt;
+Based on the following sources:&lt;p&gt;
+&lt;ul&gt;
+&lt;li&gt;www.atmel.com
+&lt;li&gt;CD-ROM : Configurable Logic Microcontroller Nonvolatile Memory
+&lt;li&gt;CadSoft download site, www.cadsoft.de or www.cadsoftusa.com , file at90smcu_v400.zip
+&lt;/ul&gt;
+&lt;author&gt;Revised by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="DIL08">
+<description>&lt;b&gt;Dual In Line Package&lt;/b&gt;</description>
+<wire x1="5.08" y1="2.921" x2="-5.08" y2="2.921" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="-2.921" x2="5.08" y2="-2.921" width="0.1778" layer="21"/>
+<wire x1="5.08" y1="2.921" x2="5.08" y2="-2.921" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="2.921" x2="-5.08" y2="0.6985" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="-2.921" x2="-5.08" y2="-0.6985" width="0.1778" layer="21"/>
+<wire x1="-5.08" y1="0.6985" x2="-5.08" y2="-0.6985" width="0.1778" layer="21" curve="-180"/>
+<pad name="1" x="-3.81" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="2" x="-1.27" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="7" x="-1.27" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="8" x="-3.81" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="3" x="1.27" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="4" x="3.81" y="-3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="6" x="1.27" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<pad name="5" x="3.81" y="3.81" drill="0.8128" shape="long" rot="R90"/>
+<text x="-5.715" y="-2.54" size="1.27" layer="25" ratio="10" rot="R90">&gt;NAME</text>
+<text x="-3.4925" y="-0.635" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="SO08">
+<description>&lt;b&gt;SMALL OUTLINE INTEGRATED CIRCUIT&lt;/b&gt;&lt;p&gt;
+body 3.9 mm/JEDEC MS-012AA</description>
+<wire x1="-2.9" y1="3.9" x2="2.9" y2="3.9" width="0.1998" layer="39"/>
+<wire x1="2.9" y1="3.9" x2="2.9" y2="-3.9" width="0.1998" layer="39"/>
+<wire x1="2.9" y1="-3.9" x2="-2.9" y2="-3.9" width="0.1998" layer="39"/>
+<wire x1="-2.9" y1="-3.9" x2="-2.9" y2="3.9" width="0.1998" layer="39"/>
+<wire x1="2.4" y1="1.9" x2="2.4" y2="-1.4" width="0.1778" layer="21"/>
+<wire x1="2.4" y1="-1.4" x2="2.4" y2="-1.9" width="0.1778" layer="21"/>
+<wire x1="2.4" y1="-1.9" x2="-2.4" y2="-1.9" width="0.1778" layer="51"/>
+<wire x1="-2.4" y1="-1.9" x2="-2.4" y2="-1.4" width="0.1778" layer="21"/>
+<wire x1="-2.4" y1="-1.4" x2="-2.4" y2="1.9" width="0.1778" layer="21"/>
+<wire x1="-2.4" y1="1.9" x2="2.4" y2="1.9" width="0.1778" layer="51"/>
+<wire x1="2.4" y1="-1.4" x2="-2.4" y2="-1.4" width="0.0508" layer="51"/>
+<circle x="-1.905" y="-0.9525" radius="0.2245" width="0" layer="21"/>
+<smd name="2" x="-0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="7" x="-0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="1" x="-1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="3" x="0.635" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="4" x="1.905" y="-2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="8" x="-1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="6" x="0.635" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<smd name="5" x="1.905" y="2.6" dx="0.6" dy="2.2" layer="1"/>
+<text x="-3.175" y="-1.905" size="1.27" layer="25" ratio="10" rot="R90">&gt;NAME</text>
+<text x="4.445" y="-1.905" size="1.27" layer="27" ratio="10" rot="R90">&gt;VALUE</text>
+<rectangle x1="-2.1501" y1="-3.1001" x2="-1.6599" y2="-2" layer="51"/>
+<rectangle x1="-0.8801" y1="-3.1001" x2="-0.3899" y2="-2" layer="51"/>
+<rectangle x1="0.3899" y1="-3.1001" x2="0.8801" y2="-2" layer="51"/>
+<rectangle x1="1.6599" y1="-3.1001" x2="2.1501" y2="-2" layer="51"/>
+<rectangle x1="1.6599" y1="2" x2="2.1501" y2="3.1001" layer="51"/>
+<rectangle x1="0.3899" y1="2" x2="0.8801" y2="3.1001" layer="51"/>
+<rectangle x1="-0.8801" y1="2" x2="-0.3899" y2="3.1001" layer="51"/>
+<rectangle x1="-2.1501" y1="2" x2="-1.6599" y2="3.1001" layer="51"/>
+</package>
+</packages>
+<symbols>
+<symbol name="6-I/O-1">
+<wire x1="12.7" y1="-7.62" x2="-12.7" y2="-7.62" width="0.254" layer="94"/>
+<wire x1="-12.7" y1="-7.62" x2="-12.7" y2="10.16" width="0.254" layer="94"/>
+<wire x1="-12.7" y1="10.16" x2="12.7" y2="10.16" width="0.254" layer="94"/>
+<wire x1="12.7" y1="10.16" x2="12.7" y2="-7.62" width="0.254" layer="94"/>
+<text x="-12.7" y="10.922" size="1.778" layer="95">&gt;NAME</text>
+<text x="-12.7" y="-10.16" size="1.778" layer="96">&gt;VALUE</text>
+<pin name="(XTAL2)PB4" x="17.78" y="5.08" length="middle" rot="R180"/>
+<pin name="(XTAL1)PB3" x="17.78" y="2.54" length="middle" rot="R180"/>
+<pin name="(RESET)PB5" x="17.78" y="7.62" length="middle" rot="R180"/>
+<pin name="(T0)PB2" x="17.78" y="0" length="middle" rot="R180"/>
+<pin name="(AIN1)PB1" x="17.78" y="-2.54" length="middle" rot="R180"/>
+<pin name="(AIN0)PB0" x="17.78" y="-5.08" length="middle" rot="R180"/>
+<pin name="VCC" x="-17.78" y="-2.54" length="middle" direction="pwr"/>
+<pin name="GND" x="-17.78" y="-5.08" length="middle" direction="pwr"/>
+</symbol>
+</symbols>
+<devicesets>
+<deviceset name="TINY10" prefix="IC">
+<description>&lt;b&gt;MICROCONTROLLER&lt;/b&gt;&lt;p&gt;
+1 Kbytes ROM</description>
+<gates>
+<gate name="G$1" symbol="6-I/O-1" x="0" y="0"/>
+</gates>
+<devices>
+<device name="P" package="DIL08">
+<connects>
+<connect gate="G$1" pin="(AIN0)PB0" pad="5"/>
+<connect gate="G$1" pin="(AIN1)PB1" pad="6"/>
+<connect gate="G$1" pin="(RESET)PB5" pad="1"/>
+<connect gate="G$1" pin="(T0)PB2" pad="7"/>
+<connect gate="G$1" pin="(XTAL1)PB3" pad="2"/>
+<connect gate="G$1" pin="(XTAL2)PB4" pad="3"/>
+<connect gate="G$1" pin="GND" pad="4"/>
+<connect gate="G$1" pin="VCC" pad="8"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="S" package="SO08">
+<connects>
+<connect gate="G$1" pin="(AIN0)PB0" pad="5"/>
+<connect gate="G$1" pin="(AIN1)PB1" pad="6"/>
+<connect gate="G$1" pin="(RESET)PB5" pad="1"/>
+<connect gate="G$1" pin="(T0)PB2" pad="7"/>
+<connect gate="G$1" pin="(XTAL1)PB3" pad="2"/>
+<connect gate="G$1" pin="(XTAL2)PB4" pad="3"/>
+<connect gate="G$1" pin="GND" pad="4"/>
+<connect gate="G$1" pin="VCC" pad="8"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+</devices>
+</deviceset>
+</devicesets>
+</library>
+<library name="testpad">
+<description>&lt;b&gt;Test Pins/Pads&lt;/b&gt;&lt;p&gt;
+Cream on SMD OFF.&lt;br&gt;
+new: Attribute TP_SIGNAL_NAME&lt;br&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;</description>
+<packages>
+<package name="B1,27">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<wire x1="-0.635" y1="0" x2="0.635" y2="0" width="0.0024" layer="37"/>
+<wire x1="0" y1="0.635" x2="0" y2="-0.635" width="0.0024" layer="37"/>
+<smd name="TP" x="0" y="0" dx="1.27" dy="1.27" layer="1" roundness="100" cream="no"/>
+<text x="-0.635" y="1.016" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-0.635" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-0.635" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="B2,54">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<wire x1="-0.635" y1="0" x2="0.635" y2="0" width="0.0024" layer="37"/>
+<wire x1="0" y1="-0.635" x2="0" y2="0.635" width="0.0024" layer="37"/>
+<circle x="0" y="0" radius="0.635" width="0.254" layer="37"/>
+<smd name="TP" x="0" y="0" dx="2.54" dy="2.54" layer="1" roundness="100" cream="no"/>
+<text x="-1.27" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.27" y="-1.397" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-3.175" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="P1-13">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="0.762" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="1.3208" diameter="2.159" shape="octagon"/>
+<text x="-1.016" y="1.27" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="P1-13Y">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="0.762" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="1.3208" diameter="1.905" shape="long" rot="R90"/>
+<text x="-0.889" y="2.159" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-3.81" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="P1-17">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="0.8128" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="1.7018" diameter="2.54" shape="octagon"/>
+<text x="-1.143" y="1.397" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-3.175" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="P1-17Y">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="0.8128" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="1.7018" diameter="2.1208" shape="long" rot="R90"/>
+<text x="-1.143" y="2.286" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-3.81" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="P1-20">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="1.016" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="2.0066" diameter="3.1496" shape="octagon"/>
+<text x="-1.524" y="1.778" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-3.175" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="P1-20Y">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<circle x="0" y="0" radius="1.016" width="0.1524" layer="51"/>
+<pad name="TP" x="0" y="0" drill="2.0066" diameter="2.54" shape="long" rot="R90"/>
+<text x="-1.27" y="2.794" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="0" y="0" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="-1.27" y="-4.445" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/>
+</package>
+<package name="TP06R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.6" dy="0.6" layer="1" roundness="100" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.254" y="-0.381" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP06SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.5996" dy="0.5996" layer="1" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.254" y="-0.381" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP07R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.7" dy="0.7" layer="1" roundness="100" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.254" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP07SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.7" dy="0.7" layer="1" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.381" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP08R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.8" dy="0.8" layer="1" roundness="100" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.381" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP08SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.8" dy="0.8" layer="1" cream="no"/>
+<text x="-0.3" y="0.4001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP09R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.9" dy="0.9" layer="1" roundness="100" cream="no"/>
+<text x="-0.4501" y="0.5001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP09SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="0.8998" dy="0.8998" layer="1" cream="no"/>
+<text x="-0.4501" y="0.5001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP10R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1" dy="1" layer="1" roundness="100" cream="no"/>
+<text x="-0.5001" y="0.5499" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.381" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP10SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1" dy="1" layer="1" cream="no"/>
+<text x="-0.5001" y="0.5499" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP11R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.1" dy="1.1" layer="1" roundness="100" cream="no"/>
+<text x="-0.5499" y="0.5999" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.508" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-1.905" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP11SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.1" dy="1.1" layer="1" cream="no"/>
+<text x="-0.5499" y="0.5999" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP12SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.1998" dy="1.1998" layer="1" cream="no"/>
+<text x="-0.5999" y="0.65" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP12R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.2" dy="1.2" layer="1" roundness="100" cream="no"/>
+<text x="-0.5999" y="0.65" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP13R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.3" dy="1.3" layer="1" roundness="100" cream="no"/>
+<text x="-0.65" y="0.7" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.635" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP14R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.4" dy="1.4" layer="1" roundness="100" cream="no"/>
+<text x="-0.7" y="0.7501" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.508" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP15R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.5" dy="1.5" layer="1" roundness="100" cream="no"/>
+<text x="-0.7501" y="0.8001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP16R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.6" dy="1.6" layer="1" roundness="100" cream="no"/>
+<text x="-0.8001" y="0.8499" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP17R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.7" dy="1.7" layer="1" roundness="100" cream="no"/>
+<text x="-0.8499" y="0.8999" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP18R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.8" dy="1.8" layer="1" roundness="100" cream="no"/>
+<text x="-0.8999" y="0.95" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP19R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.9" dy="1.9" layer="1" roundness="100" cream="no"/>
+<text x="-0.95" y="1" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP20R">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="2" dy="2" layer="1" roundness="100" cream="no"/>
+<text x="-1" y="1.05" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-1.016" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP13SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.3" dy="1.3" layer="1" cream="no"/>
+<text x="-0.65" y="0.7" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP14SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.4" dy="1.4" layer="1" cream="no"/>
+<text x="-0.7" y="0.7501" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-0.762" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP15SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.5" dy="1.5" layer="1" cream="no"/>
+<text x="-0.7501" y="0.8001" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP16SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.5996" dy="1.5996" layer="1" cream="no"/>
+<text x="-0.8001" y="0.8499" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP17SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.7" dy="1.7" layer="1" cream="no"/>
+<text x="-0.8499" y="0.8999" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.762" y="-0.889" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP18SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.8" dy="1.8" layer="1" cream="no"/>
+<text x="-0.8999" y="0.95" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-1.016" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP19SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="1.8998" dy="1.8998" layer="1" cream="no"/>
+<text x="-0.95" y="1" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-1.016" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+<package name="TP20SQ">
+<description>&lt;b&gt;TEST PAD&lt;/b&gt;</description>
+<smd name="TP" x="0" y="0" dx="2" dy="2" layer="1" cream="no"/>
+<text x="-1" y="1.05" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.016" y="-1.143" size="0.0254" layer="27">&gt;VALUE</text>
+<text x="0" y="-2.54" size="1" layer="37">&gt;TP_SIGNAL_NAME</text>
+</package>
+</packages>
+<symbols>
+<symbol name="TP">
+<wire x1="-0.762" y1="-0.762" x2="0" y2="0" width="0.254" layer="94"/>
+<wire x1="0" y1="0" x2="0.762" y2="-0.762" width="0.254" layer="94"/>
+<wire x1="0.762" y1="-0.762" x2="0" y2="-1.524" width="0.254" layer="94"/>
+<wire x1="0" y1="-1.524" x2="-0.762" y2="-0.762" width="0.254" layer="94"/>
+<text x="-1.27" y="1.27" size="1.778" layer="95">&gt;NAME</text>
+<text x="1.27" y="-1.27" size="1.778" layer="97">&gt;TP_SIGNAL_NAME</text>
+<pin name="TP" x="0" y="-2.54" visible="off" length="short" direction="in" rot="R90"/>
+</symbol>
+</symbols>
+<devicesets>
+<deviceset name="TP" prefix="TP">
+<description>&lt;b&gt;Test pad&lt;/b&gt;</description>
+<gates>
+<gate name="G$1" symbol="TP" x="0" y="0"/>
+</gates>
+<devices>
+<device name="B1,27" package="B1,27">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="B2,54" package="B2,54">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-13" package="P1-13">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-13Y" package="P1-13Y">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-17" package="P1-17">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-17Y" package="P1-17Y">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-20" package="P1-20">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="PAD1-20Y" package="P1-20Y">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP06R" package="TP06R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP06SQ" package="TP06SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP07R" package="TP07R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP07SQ" package="TP07SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP08R" package="TP08R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP08SQ" package="TP08SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP09R" package="TP09R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP09SQ" package="TP09SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP10R" package="TP10R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP10SQ" package="TP10SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP11R" package="TP11R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP11SQ" package="TP11SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP12SQ" package="TP12SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP12R" package="TP12R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP13R" package="TP13R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP14R" package="TP14R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP15R" package="TP15R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP16R" package="TP16R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP17R" package="TP17R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP18R" package="TP18R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP19R" package="TP19R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP20R" package="TP20R">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP13SQ" package="TP13SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP14SQ" package="TP14SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP15SQ" package="TP15SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP16SQ" package="TP16SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP17SQ" package="TP17SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP18SQ" package="TP18SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP19SQ" package="TP19SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+<device name="TP20SQ" package="TP20SQ">
+<connects>
+<connect gate="G$1" pin="TP" pad="TP"/>
+</connects>
+<technologies>
+<technology name="">
+<attribute name="TP_SIGNAL_NAME" value="" constant="no"/>
+</technology>
+</technologies>
+</device>
+</devices>
+</deviceset>
+</devicesets>
+</library>
+<library name="resistor">
+<description>&lt;b&gt;Resistors, Capacitors, Inductors&lt;/b&gt;&lt;p&gt;
+Based on the previous libraries:
+&lt;ul&gt;
+&lt;li&gt;r.lbr
+&lt;li&gt;cap.lbr
+&lt;li&gt;cap-fe.lbr
+&lt;li&gt;captant.lbr
+&lt;li&gt;polcap.lbr
+&lt;li&gt;ipc-smd.lbr
+&lt;/ul&gt;
+All SMD packages are defined according to the IPC specifications and CECC&lt;p&gt;
+&lt;author&gt;Created by librarian@cadsoft.de&lt;/author&gt;&lt;p&gt;
+&lt;p&gt;
+for Electrolyt Capacitors see also :&lt;p&gt;
+www.bccomponents.com &lt;p&gt;
+www.panasonic.com&lt;p&gt;
+www.kemet.com&lt;p&gt;
+&lt;p&gt;
+for trimmer reference see : &lt;u&gt;www.electrospec-inc.com/cross_references/trimpotcrossref.asp&lt;/u&gt;&lt;p&gt;
+
+&lt;map name="nav_main"&gt;
+&lt;area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title=""&gt;
+&lt;area shape="rect" coords="0,24,140,51" href="../about.asp" title=""&gt;
+&lt;area shape="rect" coords="1,52,140,77" href="../rfq.asp" title=""&gt;
+&lt;area shape="rect" coords="0,78,139,103" href="../products.asp" title=""&gt;
+&lt;area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title=""&gt;
+&lt;area shape="rect" coords="1,129,138,150" href="../edge.asp" title=""&gt;
+&lt;area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title=""&gt;
+&lt;area shape="rect" coords="0,179,139,201" href="../comments.asp" title=""&gt;
+&lt;area shape="rect" coords="1,203,138,231" href="../directory.asp" title=""&gt;
+&lt;area shape="default" nohref&gt;
+&lt;/map&gt;
+
+&lt;html&gt;
+
+&lt;title&gt;&lt;/title&gt;
+
+ &lt;LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css"&gt;
+
+&lt;body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0"&gt;
+&lt;table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%"&gt;
+&lt;tr valign="top"&gt;
+
+&lt;/td&gt;
+&lt;! &lt;td width="10"&gt;&amp;nbsp;&lt;/td&gt;
+&lt;td width="90%"&gt;
+
+&lt;b&gt;&lt;font color="#0000FF" size="4"&gt;TRIM-POT CROSS REFERENCE&lt;/font&gt;&lt;/b&gt;
+&lt;P&gt;
+&lt;TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;RECTANGULAR MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;BOURNS&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;BI&amp;nbsp;TECH&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;DALE-VISHAY&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;PHILIPS/MEPCO&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;MURATA&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;PANASONIC&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;SPECTROL&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;B&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL color="#FF0000"&gt;MILSPEC&lt;/FONT&gt;
+ &lt;/B&gt;
+ &lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3 &gt;
+ 3005P&lt;BR&gt;
+ 3006P&lt;BR&gt;
+ 3006W&lt;BR&gt;
+ 3006Y&lt;BR&gt;
+ 3009P&lt;BR&gt;
+ 3009W&lt;BR&gt;
+ 3009Y&lt;BR&gt;
+ 3057J&lt;BR&gt;
+ 3057L&lt;BR&gt;
+ 3057P&lt;BR&gt;
+ 3057Y&lt;BR&gt;
+ 3059J&lt;BR&gt;
+ 3059L&lt;BR&gt;
+ 3059P&lt;BR&gt;
+ 3059Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 89P&lt;BR&gt;
+ 89W&lt;BR&gt;
+ 89X&lt;BR&gt;
+ 89PH&lt;BR&gt;
+ 76P&lt;BR&gt;
+ 89XH&lt;BR&gt;
+ 78SLT&lt;BR&gt;
+ 78L&amp;nbsp;ALT&lt;BR&gt;
+ 56P&amp;nbsp;ALT&lt;BR&gt;
+ 78P&amp;nbsp;ALT&lt;BR&gt;
+ T8S&lt;BR&gt;
+ 78L&lt;BR&gt;
+ 56P&lt;BR&gt;
+ 78P&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ T18/784&lt;BR&gt;
+ 783&lt;BR&gt;
+ 781&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 2199&lt;BR&gt;
+ 1697/1897&lt;BR&gt;
+ 1680/1880&lt;BR&gt;
+ 2187&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 8035EKP/CT20/RJ-20P&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ-20X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 1211L&lt;BR&gt;
+ 8012EKQ&amp;nbsp;ALT&lt;BR&gt;
+ 8012EKR&amp;nbsp;ALT&lt;BR&gt;
+ 1211P&lt;BR&gt;
+ 8012EKJ&lt;BR&gt;
+ 8012EKL&lt;BR&gt;
+ 8012EKQ&lt;BR&gt;
+ 8012EKR&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 2101P&lt;BR&gt;
+ 2101W&lt;BR&gt;
+ 2101Y&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 2102L&lt;BR&gt;
+ 2102S&lt;BR&gt;
+ 2102Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ EVMCOG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 43P&lt;BR&gt;
+ 43W&lt;BR&gt;
+ 43Y&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 40L&lt;BR&gt;
+ 40P&lt;BR&gt;
+ 40Y&lt;BR&gt;
+ 70Y-T602&lt;BR&gt;
+ 70L&lt;BR&gt;
+ 70P&lt;BR&gt;
+ 70Y&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ RT/RTR12&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;
+ RJ/RJR12&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SQUARE MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MURATA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;SPECTROL&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MILSPEC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3250L&lt;BR&gt;
+ 3250P&lt;BR&gt;
+ 3250W&lt;BR&gt;
+ 3250X&lt;BR&gt;
+ 3252P&lt;BR&gt;
+ 3252W&lt;BR&gt;
+ 3252X&lt;BR&gt;
+ 3260P&lt;BR&gt;
+ 3260W&lt;BR&gt;
+ 3260X&lt;BR&gt;
+ 3262P&lt;BR&gt;
+ 3262W&lt;BR&gt;
+ 3262X&lt;BR&gt;
+ 3266P&lt;BR&gt;
+ 3266W&lt;BR&gt;
+ 3266X&lt;BR&gt;
+ 3290H&lt;BR&gt;
+ 3290P&lt;BR&gt;
+ 3290W&lt;BR&gt;
+ 3292P&lt;BR&gt;
+ 3292W&lt;BR&gt;
+ 3292X&lt;BR&gt;
+ 3296P&lt;BR&gt;
+ 3296W&lt;BR&gt;
+ 3296X&lt;BR&gt;
+ 3296Y&lt;BR&gt;
+ 3296Z&lt;BR&gt;
+ 3299P&lt;BR&gt;
+ 3299W&lt;BR&gt;
+ 3299X&lt;BR&gt;
+ 3299Y&lt;BR&gt;
+ 3299Z&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ -&lt;BR&gt;
+ 64W&amp;nbsp;ALT&lt;BR&gt;
+ -&lt;BR&gt;
+ 64P&amp;nbsp;ALT&lt;BR&gt;
+ 64W&amp;nbsp;ALT&lt;BR&gt;
+ 64X&amp;nbsp;ALT&lt;BR&gt;
+ 64P&lt;BR&gt;
+ 64W&lt;BR&gt;
+ 64X&lt;BR&gt;
+ 66X&amp;nbsp;ALT&lt;BR&gt;
+ 66P&amp;nbsp;ALT&lt;BR&gt;
+ 66W&amp;nbsp;ALT&lt;BR&gt;
+ 66P&lt;BR&gt;
+ 66W&lt;BR&gt;
+ 66X&lt;BR&gt;
+ 67P&lt;BR&gt;
+ 67W&lt;BR&gt;
+ 67X&lt;BR&gt;
+ 67Y&lt;BR&gt;
+ 67Z&lt;BR&gt;
+ 68P&lt;BR&gt;
+ 68W&lt;BR&gt;
+ 68X&lt;BR&gt;
+ 67Y&amp;nbsp;ALT&lt;BR&gt;
+ 67Z&amp;nbsp;ALT&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 5050&lt;BR&gt;
+ 5091&lt;BR&gt;
+ 5080&lt;BR&gt;
+ 5087&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T63YB&lt;BR&gt;
+ T63XB&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 5887&lt;BR&gt;
+ 5891&lt;BR&gt;
+ 5880&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T93Z&lt;BR&gt;
+ T93YA&lt;BR&gt;
+ T93XA&lt;BR&gt;
+ T93YB&lt;BR&gt;
+ T93XB&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8026EKP&lt;BR&gt;
+ 8026EKW&lt;BR&gt;
+ 8026EKM&lt;BR&gt;
+ 8026EKP&lt;BR&gt;
+ 8026EKB&lt;BR&gt;
+ 8026EKM&lt;BR&gt;
+ 1309X&lt;BR&gt;
+ 1309P&lt;BR&gt;
+ 1309W&lt;BR&gt;
+ 8024EKP&lt;BR&gt;
+ 8024EKW&lt;BR&gt;
+ 8024EKN&lt;BR&gt;
+ RJ-9P/CT9P&lt;BR&gt;
+ RJ-9W&lt;BR&gt;
+ RJ-9X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3103P&lt;BR&gt;
+ 3103Y&lt;BR&gt;
+ 3103Z&lt;BR&gt;
+ 3103P&lt;BR&gt;
+ 3103Y&lt;BR&gt;
+ 3103Z&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3105P/3106P&lt;BR&gt;
+ 3105W/3106W&lt;BR&gt;
+ 3105X/3106X&lt;BR&gt;
+ 3105Y/3106Y&lt;BR&gt;
+ 3105Z/3105Z&lt;BR&gt;
+ 3102P&lt;BR&gt;
+ 3102W&lt;BR&gt;
+ 3102X&lt;BR&gt;
+ 3102Y&lt;BR&gt;
+ 3102Z&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMCBG&lt;BR&gt;
+ EVMCCG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 55-1-X&lt;BR&gt;
+ 55-4-X&lt;BR&gt;
+ 55-3-X&lt;BR&gt;
+ 55-2-X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 50-2-X&lt;BR&gt;
+ 50-4-X&lt;BR&gt;
+ 50-3-X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 64P&lt;BR&gt;
+ 64W&lt;BR&gt;
+ 64X&lt;BR&gt;
+ 64Y&lt;BR&gt;
+ 64Z&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RT/RTR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RJ/RJR22&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RT/RTR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RJ/RJR26&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RT/RTR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ RJ/RJR24&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=8&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SINGLE TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MURATA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;SPECTROL&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD ALIGN=CENTER&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;MILSPEC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3323P&lt;BR&gt;
+ 3323S&lt;BR&gt;
+ 3323W&lt;BR&gt;
+ 3329H&lt;BR&gt;
+ 3329P&lt;BR&gt;
+ 3329W&lt;BR&gt;
+ 3339H&lt;BR&gt;
+ 3339P&lt;BR&gt;
+ 3339W&lt;BR&gt;
+ 3352E&lt;BR&gt;
+ 3352H&lt;BR&gt;
+ 3352K&lt;BR&gt;
+ 3352P&lt;BR&gt;
+ 3352T&lt;BR&gt;
+ 3352V&lt;BR&gt;
+ 3352W&lt;BR&gt;
+ 3362H&lt;BR&gt;
+ 3362M&lt;BR&gt;
+ 3362P&lt;BR&gt;
+ 3362R&lt;BR&gt;
+ 3362S&lt;BR&gt;
+ 3362U&lt;BR&gt;
+ 3362W&lt;BR&gt;
+ 3362X&lt;BR&gt;
+ 3386B&lt;BR&gt;
+ 3386C&lt;BR&gt;
+ 3386F&lt;BR&gt;
+ 3386H&lt;BR&gt;
+ 3386K&lt;BR&gt;
+ 3386M&lt;BR&gt;
+ 3386P&lt;BR&gt;
+ 3386S&lt;BR&gt;
+ 3386W&lt;BR&gt;
+ 3386X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 25P&lt;BR&gt;
+ 25S&lt;BR&gt;
+ 25RX&lt;BR&gt;
+ 82P&lt;BR&gt;
+ 82M&lt;BR&gt;
+ 82PA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 91E&lt;BR&gt;
+ 91X&lt;BR&gt;
+ 91T&lt;BR&gt;
+ 91B&lt;BR&gt;
+ 91A&lt;BR&gt;
+ 91V&lt;BR&gt;
+ 91W&lt;BR&gt;
+ 25W&lt;BR&gt;
+ 25V&lt;BR&gt;
+ 25P&lt;BR&gt;
+ -&lt;BR&gt;
+ 25S&lt;BR&gt;
+ 25U&lt;BR&gt;
+ 25RX&lt;BR&gt;
+ 25X&lt;BR&gt;
+ 72XW&lt;BR&gt;
+ 72XL&lt;BR&gt;
+ 72PM&lt;BR&gt;
+ 72RX&lt;BR&gt;
+ -&lt;BR&gt;
+ 72PX&lt;BR&gt;
+ 72P&lt;BR&gt;
+ 72RXW&lt;BR&gt;
+ 72RXL&lt;BR&gt;
+ 72X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ T7YB&lt;BR&gt;
+ T7YA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ TXD&lt;BR&gt;
+ TYA&lt;BR&gt;
+ TYP&lt;BR&gt;
+ -&lt;BR&gt;
+ TYD&lt;BR&gt;
+ TX&lt;BR&gt;
+ -&lt;BR&gt;
+ 150SX&lt;BR&gt;
+ 100SX&lt;BR&gt;
+ 102T&lt;BR&gt;
+ 101S&lt;BR&gt;
+ 190T&lt;BR&gt;
+ 150TX&lt;BR&gt;
+ 101&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 101SX&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ET6P&lt;BR&gt;
+ ET6S&lt;BR&gt;
+ ET6X&lt;BR&gt;
+ RJ-6W/8014EMW&lt;BR&gt;
+ RJ-6P/8014EMP&lt;BR&gt;
+ RJ-6X/8014EMX&lt;BR&gt;
+ TM7W&lt;BR&gt;
+ TM7P&lt;BR&gt;
+ TM7X&lt;BR&gt;
+ -&lt;BR&gt;
+ 8017SMS&lt;BR&gt;
+ -&lt;BR&gt;
+ 8017SMB&lt;BR&gt;
+ 8017SMA&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ CT-6W&lt;BR&gt;
+ CT-6H&lt;BR&gt;
+ CT-6P&lt;BR&gt;
+ CT-6R&lt;BR&gt;
+ -&lt;BR&gt;
+ CT-6V&lt;BR&gt;
+ CT-6X&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKV&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKX&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 8038EKP&lt;BR&gt;
+ 8038EKZ&lt;BR&gt;
+ 8038EKW&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3321H&lt;BR&gt;
+ 3321P&lt;BR&gt;
+ 3321N&lt;BR&gt;
+ 1102H&lt;BR&gt;
+ 1102P&lt;BR&gt;
+ 1102T&lt;BR&gt;
+ RVA0911V304A&lt;BR&gt;
+ -&lt;BR&gt;
+ RVA0911H413A&lt;BR&gt;
+ RVG0707V100A&lt;BR&gt;
+ RVA0607V(H)306A&lt;BR&gt;
+ RVA1214H213A&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 3104B&lt;BR&gt;
+ 3104C&lt;BR&gt;
+ 3104F&lt;BR&gt;
+ 3104H&lt;BR&gt;
+ -&lt;BR&gt;
+ 3104M&lt;BR&gt;
+ 3104P&lt;BR&gt;
+ 3104S&lt;BR&gt;
+ 3104W&lt;BR&gt;
+ 3104X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ EVMQ0G&lt;BR&gt;
+ EVMQIG&lt;BR&gt;
+ EVMQ3G&lt;BR&gt;
+ EVMS0G&lt;BR&gt;
+ EVMQ0G&lt;BR&gt;
+ EVMG0G&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMK4GA00B&lt;BR&gt;
+ EVM30GA00B&lt;BR&gt;
+ EVMK0GA00B&lt;BR&gt;
+ EVM38GA00B&lt;BR&gt;
+ EVMB6&lt;BR&gt;
+ EVLQ0&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMMSG&lt;BR&gt;
+ EVMMBG&lt;BR&gt;
+ EVMMAG&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMMCS&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM1&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM0&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ EVMM3&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 62-3-1&lt;BR&gt;
+ 62-1-2&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 67R&lt;BR&gt;
+ -&lt;BR&gt;
+ 67P&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 67X&lt;BR&gt;
+ 63V&lt;BR&gt;
+ 63S&lt;BR&gt;
+ 63M&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 63H&lt;BR&gt;
+ 63P&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ 63X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ RJ/RJR50&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+&lt;/TABLE&gt;
+&lt;P&gt;&amp;nbsp;&lt;P&gt;
+&lt;TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;
+ &lt;FONT color="#0000FF" SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SMD TRIM-POT CROSS REFERENCE&lt;/B&gt;&lt;/FONT&gt;
+ &lt;P&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;MULTI-TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURNS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;TOCOS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;AUX/KYOCERA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3224G&lt;BR&gt;
+ 3224J&lt;BR&gt;
+ 3224W&lt;BR&gt;
+ 3269P&lt;BR&gt;
+ 3269W&lt;BR&gt;
+ 3269X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 44G&lt;BR&gt;
+ 44J&lt;BR&gt;
+ 44W&lt;BR&gt;
+ 84P&lt;BR&gt;
+ 84W&lt;BR&gt;
+ 84X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST63Z&lt;BR&gt;
+ ST63Y&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST5P&lt;BR&gt;
+ ST5W&lt;BR&gt;
+ ST5X&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;&amp;nbsp;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD COLSPAN=7&gt;
+ &lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;SINGLE TURN&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BOURNS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;BI&amp;nbsp;TECH&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;DALE-VISHAY&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PHILIPS/MEPCO&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;PANASONIC&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;TOCOS&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD&gt;
+ &lt;FONT SIZE=3 FACE=ARIAL&gt;&lt;B&gt;AUX/KYOCERA&lt;/B&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+ &lt;TR&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 3314G&lt;BR&gt;
+ 3314J&lt;BR&gt;
+ 3364A/B&lt;BR&gt;
+ 3364C/D&lt;BR&gt;
+ 3364W/X&lt;BR&gt;
+ 3313G&lt;BR&gt;
+ 3313J&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ 23B&lt;BR&gt;
+ 23A&lt;BR&gt;
+ 21X&lt;BR&gt;
+ 21W&lt;BR&gt;
+ -&lt;BR&gt;
+ 22B&lt;BR&gt;
+ 22A&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ST5YL/ST53YL&lt;BR&gt;
+ ST5YJ/5T53YJ&lt;BR&gt;
+ ST-23A&lt;BR&gt;
+ ST-22B&lt;BR&gt;
+ ST-22&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ ST-4B&lt;BR&gt;
+ ST-4A&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ ST-3B&lt;BR&gt;
+ ST-3A&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ EVM-6YS&lt;BR&gt;
+ EVM-1E&lt;BR&gt;
+ EVM-1G&lt;BR&gt;
+ EVM-1D&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ G4B&lt;BR&gt;
+ G4A&lt;BR&gt;
+ TR04-3S1&lt;BR&gt;
+ TRG04-2S1&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;TD BGCOLOR="#cccccc" ALIGN=CENTER&gt;&lt;FONT FACE=ARIAL SIZE=3&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;
+ DVR-43A&lt;BR&gt;
+ CVR-42C&lt;BR&gt;
+ CVR-42A/C&lt;BR&gt;
+ -&lt;BR&gt;
+ -&lt;BR&gt;&lt;/FONT&gt;
+ &lt;/TD&gt;
+ &lt;/TR&gt;
+&lt;/TABLE&gt;
+&lt;P&gt;
+&lt;FONT SIZE=4 FACE=ARIAL&gt;&lt;B&gt;ALT =&amp;nbsp;ALTERNATE&lt;/B&gt;&lt;/FONT&gt;
+&lt;P&gt;
+
+&amp;nbsp;
+&lt;P&gt;
+&lt;/td&gt;
+&lt;/tr&gt;
+&lt;/table&gt;
+&lt;/BODY&gt;&lt;/HTML&gt;</description>
+<packages>
+<package name="C0402">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-0.245" y1="0.224" x2="0.245" y2="0.224" width="0.1524" layer="51"/>
+<wire x1="0.245" y1="-0.224" x2="-0.245" y2="-0.224" width="0.1524" layer="51"/>
+<wire x1="-1.473" y1="0.483" x2="1.473" y2="0.483" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.483" x2="1.473" y2="-0.483" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.483" x2="-1.473" y2="-0.483" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.483" x2="-1.473" y2="0.483" width="0.0508" layer="39"/>
+<smd name="1" x="-0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
+<smd name="2" x="0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
+<text x="-0.635" y="0.762" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-1.905" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.554" y1="-0.3048" x2="-0.254" y2="0.2951" layer="51"/>
+<rectangle x1="0.2588" y1="-0.3048" x2="0.5588" y2="0.2951" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.3" x2="0.1999" y2="0.3" layer="35"/>
+</package>
+<package name="C0504">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.294" y1="0.559" x2="0.294" y2="0.559" width="0.1016" layer="51"/>
+<wire x1="-0.294" y1="-0.559" x2="0.294" y2="-0.559" width="0.1016" layer="51"/>
+<smd name="1" x="-0.7" y="0" dx="1" dy="1.3" layer="1"/>
+<smd name="2" x="0.7" y="0" dx="1" dy="1.3" layer="1"/>
+<text x="-0.635" y="0.889" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-2.159" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.6604" y1="-0.6223" x2="-0.2804" y2="0.6276" layer="51"/>
+<rectangle x1="0.2794" y1="-0.6223" x2="0.6594" y2="0.6276" layer="51"/>
+<rectangle x1="-0.1001" y1="-0.4001" x2="0.1001" y2="0.4001" layer="35"/>
+</package>
+<package name="C0603">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.356" y1="0.432" x2="0.356" y2="0.432" width="0.1016" layer="51"/>
+<wire x1="-0.356" y1="-0.419" x2="0.356" y2="-0.419" width="0.1016" layer="51"/>
+<smd name="1" x="-0.85" y="0" dx="1.1" dy="1" layer="1"/>
+<smd name="2" x="0.85" y="0" dx="1.1" dy="1" layer="1"/>
+<text x="-0.889" y="0.762" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-2.032" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.8382" y1="-0.4699" x2="-0.3381" y2="0.4801" layer="51"/>
+<rectangle x1="0.3302" y1="-0.4699" x2="0.8303" y2="0.4801" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.3" x2="0.1999" y2="0.3" layer="35"/>
+</package>
+<package name="C0805">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.381" y1="0.66" x2="0.381" y2="0.66" width="0.1016" layer="51"/>
+<wire x1="-0.356" y1="-0.66" x2="0.381" y2="-0.66" width="0.1016" layer="51"/>
+<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
+<smd name="1" x="-0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<smd name="2" x="0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<text x="-0.889" y="1.016" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-2.286" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.0922" y1="-0.7239" x2="-0.3421" y2="0.7262" layer="51"/>
+<rectangle x1="0.3556" y1="-0.7239" x2="1.1057" y2="0.7262" layer="51"/>
+<rectangle x1="-0.1001" y1="-0.4001" x2="0.1001" y2="0.4001" layer="35"/>
+</package>
+<package name="C1005">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-0.245" y1="0.224" x2="0.245" y2="0.224" width="0.1524" layer="51"/>
+<wire x1="0.245" y1="-0.224" x2="-0.245" y2="-0.224" width="0.1524" layer="51"/>
+<wire x1="-1.473" y1="0.483" x2="1.473" y2="0.483" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.483" x2="1.473" y2="-0.483" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.483" x2="-1.473" y2="-0.483" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.483" x2="-1.473" y2="0.483" width="0.0508" layer="39"/>
+<smd name="1" x="-0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
+<smd name="2" x="0.65" y="0" dx="0.7" dy="0.9" layer="1"/>
+<text x="-0.635" y="0.762" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-1.905" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.554" y1="-0.3048" x2="-0.254" y2="0.2951" layer="51"/>
+<rectangle x1="0.2588" y1="-0.3048" x2="0.5588" y2="0.2951" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.3" x2="0.1999" y2="0.3" layer="35"/>
+</package>
+<package name="C1206">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.473" y1="0.983" x2="2.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="-0.983" x2="-2.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-2.473" y1="-0.983" x2="-2.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="0.983" x2="2.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
+<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
+<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
+<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
+<text x="-1.27" y="1.143" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.27" y="-2.413" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
+<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
+</package>
+<package name="C1210">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.473" y1="1.483" x2="2.473" y2="1.483" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="-1.483" x2="-2.473" y2="-1.483" width="0.0508" layer="39"/>
+<wire x1="-2.473" y1="-1.483" x2="-2.473" y2="1.483" width="0.0508" layer="39"/>
+<wire x1="-0.9652" y1="1.2446" x2="0.9652" y2="1.2446" width="0.1016" layer="51"/>
+<wire x1="-0.9652" y1="-1.2446" x2="0.9652" y2="-1.2446" width="0.1016" layer="51"/>
+<wire x1="2.473" y1="1.483" x2="2.473" y2="-1.483" width="0.0508" layer="39"/>
+<smd name="1" x="-1.4" y="0" dx="1.6" dy="2.7" layer="1"/>
+<smd name="2" x="1.4" y="0" dx="1.6" dy="2.7" layer="1"/>
+<text x="-1.397" y="1.651" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.397" y="-2.921" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.7018" y1="-1.2954" x2="-0.9517" y2="1.3045" layer="51"/>
+<rectangle x1="0.9517" y1="-1.3045" x2="1.7018" y2="1.2954" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.4001" x2="0.1999" y2="0.4001" layer="35"/>
+</package>
+<package name="C1310">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.294" y1="0.559" x2="0.294" y2="0.559" width="0.1016" layer="51"/>
+<wire x1="-0.294" y1="-0.559" x2="0.294" y2="-0.559" width="0.1016" layer="51"/>
+<smd name="1" x="-0.7" y="0" dx="1" dy="1.3" layer="1"/>
+<smd name="2" x="0.7" y="0" dx="1" dy="1.3" layer="1"/>
+<text x="-0.635" y="0.889" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-2.159" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.6604" y1="-0.6223" x2="-0.2804" y2="0.6276" layer="51"/>
+<rectangle x1="0.2794" y1="-0.6223" x2="0.6594" y2="0.6276" layer="51"/>
+<rectangle x1="-0.1001" y1="-0.3" x2="0.1001" y2="0.3" layer="35"/>
+</package>
+<package name="C1608">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.473" y1="0.983" x2="1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="0.983" x2="1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="1.473" y1="-0.983" x2="-1.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.473" y1="-0.983" x2="-1.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.356" y1="0.432" x2="0.356" y2="0.432" width="0.1016" layer="51"/>
+<wire x1="-0.356" y1="-0.419" x2="0.356" y2="-0.419" width="0.1016" layer="51"/>
+<smd name="1" x="-0.85" y="0" dx="1.1" dy="1" layer="1"/>
+<smd name="2" x="0.85" y="0" dx="1.1" dy="1" layer="1"/>
+<text x="-0.635" y="0.762" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.635" y="-2.032" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.8382" y1="-0.4699" x2="-0.3381" y2="0.4801" layer="51"/>
+<rectangle x1="0.3302" y1="-0.4699" x2="0.8303" y2="0.4801" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.3" x2="0.1999" y2="0.3" layer="35"/>
+</package>
+<package name="C1812">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.973" y1="1.983" x2="2.973" y2="1.983" width="0.0508" layer="39"/>
+<wire x1="2.973" y1="-1.983" x2="-2.973" y2="-1.983" width="0.0508" layer="39"/>
+<wire x1="-2.973" y1="-1.983" x2="-2.973" y2="1.983" width="0.0508" layer="39"/>
+<wire x1="-1.4732" y1="1.6002" x2="1.4732" y2="1.6002" width="0.1016" layer="51"/>
+<wire x1="-1.4478" y1="-1.6002" x2="1.4732" y2="-1.6002" width="0.1016" layer="51"/>
+<wire x1="2.973" y1="1.983" x2="2.973" y2="-1.983" width="0.0508" layer="39"/>
+<smd name="1" x="-1.95" y="0" dx="1.9" dy="3.4" layer="1"/>
+<smd name="2" x="1.95" y="0" dx="1.9" dy="3.4" layer="1"/>
+<text x="-1.905" y="1.905" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.905" y="-3.175" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.3876" y1="-1.651" x2="-1.4376" y2="1.649" layer="51"/>
+<rectangle x1="1.4478" y1="-1.651" x2="2.3978" y2="1.649" layer="51"/>
+<rectangle x1="-0.3" y1="-0.4001" x2="0.3" y2="0.4001" layer="35"/>
+</package>
+<package name="C1825">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.973" y1="3.483" x2="2.973" y2="3.483" width="0.0508" layer="39"/>
+<wire x1="2.973" y1="-3.483" x2="-2.973" y2="-3.483" width="0.0508" layer="39"/>
+<wire x1="-2.973" y1="-3.483" x2="-2.973" y2="3.483" width="0.0508" layer="39"/>
+<wire x1="-1.4986" y1="3.2766" x2="1.4732" y2="3.2766" width="0.1016" layer="51"/>
+<wire x1="-1.4732" y1="-3.2766" x2="1.4986" y2="-3.2766" width="0.1016" layer="51"/>
+<wire x1="2.973" y1="3.483" x2="2.973" y2="-3.483" width="0.0508" layer="39"/>
+<smd name="1" x="-1.95" y="0" dx="1.9" dy="6.8" layer="1"/>
+<smd name="2" x="1.95" y="0" dx="1.9" dy="6.8" layer="1"/>
+<text x="-1.905" y="3.683" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.905" y="-4.826" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.413" y1="-3.3528" x2="-1.463" y2="3.3472" layer="51"/>
+<rectangle x1="1.4478" y1="-3.3528" x2="2.3978" y2="3.3472" layer="51"/>
+<rectangle x1="-0.7" y1="-0.7" x2="0.7" y2="0.7" layer="35"/>
+</package>
+<package name="C2012">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-1.973" y1="0.983" x2="1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="1.973" y1="0.983" x2="1.973" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="1.973" y1="-0.983" x2="-1.973" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-1.973" y1="-0.983" x2="-1.973" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="-0.381" y1="0.66" x2="0.381" y2="0.66" width="0.1016" layer="51"/>
+<wire x1="-0.356" y1="-0.66" x2="0.381" y2="-0.66" width="0.1016" layer="51"/>
+<smd name="1" x="-0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<smd name="2" x="0.85" y="0" dx="1.3" dy="1.5" layer="1"/>
+<text x="-0.889" y="1.016" size="1.27" layer="25">&gt;NAME</text>
+<text x="-0.889" y="-2.286" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.0922" y1="-0.7239" x2="-0.3421" y2="0.7262" layer="51"/>
+<rectangle x1="0.3556" y1="-0.7239" x2="1.1057" y2="0.7262" layer="51"/>
+<rectangle x1="-0.1001" y1="-0.4001" x2="0.1001" y2="0.4001" layer="35"/>
+</package>
+<package name="C3216">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.473" y1="0.983" x2="2.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="-0.983" x2="-2.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-2.473" y1="-0.983" x2="-2.473" y2="0.983" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="0.983" x2="2.473" y2="-0.983" width="0.0508" layer="39"/>
+<wire x1="-0.965" y1="0.787" x2="0.965" y2="0.787" width="0.1016" layer="51"/>
+<wire x1="-0.965" y1="-0.787" x2="0.965" y2="-0.787" width="0.1016" layer="51"/>
+<smd name="1" x="-1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
+<smd name="2" x="1.4" y="0" dx="1.6" dy="1.8" layer="1"/>
+<text x="-1.27" y="1.143" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.27" y="-2.413" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.7018" y1="-0.8509" x2="-0.9517" y2="0.8491" layer="51"/>
+<rectangle x1="0.9517" y1="-0.8491" x2="1.7018" y2="0.8509" layer="51"/>
+<rectangle x1="-0.3" y1="-0.5001" x2="0.3" y2="0.5001" layer="35"/>
+</package>
+<package name="C3225">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.473" y1="1.483" x2="2.473" y2="1.483" width="0.0508" layer="39"/>
+<wire x1="2.473" y1="-1.483" x2="-2.473" y2="-1.483" width="0.0508" layer="39"/>
+<wire x1="-2.473" y1="-1.483" x2="-2.473" y2="1.483" width="0.0508" layer="39"/>
+<wire x1="-0.9652" y1="1.2446" x2="0.9652" y2="1.2446" width="0.1016" layer="51"/>
+<wire x1="-0.9652" y1="-1.2446" x2="0.9652" y2="-1.2446" width="0.1016" layer="51"/>
+<wire x1="2.473" y1="1.483" x2="2.473" y2="-1.483" width="0.0508" layer="39"/>
+<smd name="1" x="-1.4" y="0" dx="1.6" dy="2.7" layer="1"/>
+<smd name="2" x="1.4" y="0" dx="1.6" dy="2.7" layer="1"/>
+<text x="-1.397" y="1.651" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.397" y="-2.921" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.7018" y1="-1.2954" x2="-0.9517" y2="1.3045" layer="51"/>
+<rectangle x1="0.9517" y1="-1.3045" x2="1.7018" y2="1.2954" layer="51"/>
+<rectangle x1="-0.1999" y1="-0.5001" x2="0.1999" y2="0.5001" layer="35"/>
+</package>
+<package name="C4532">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.973" y1="1.983" x2="2.973" y2="1.983" width="0.0508" layer="39"/>
+<wire x1="2.973" y1="-1.983" x2="-2.973" y2="-1.983" width="0.0508" layer="39"/>
+<wire x1="-2.973" y1="-1.983" x2="-2.973" y2="1.983" width="0.0508" layer="39"/>
+<wire x1="-1.4732" y1="1.6002" x2="1.4732" y2="1.6002" width="0.1016" layer="51"/>
+<wire x1="-1.4478" y1="-1.6002" x2="1.4732" y2="-1.6002" width="0.1016" layer="51"/>
+<wire x1="2.973" y1="1.983" x2="2.973" y2="-1.983" width="0.0508" layer="39"/>
+<smd name="1" x="-1.95" y="0" dx="1.9" dy="3.4" layer="1"/>
+<smd name="2" x="1.95" y="0" dx="1.9" dy="3.4" layer="1"/>
+<text x="-1.905" y="2.032" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.905" y="-3.175" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.3876" y1="-1.651" x2="-1.4376" y2="1.649" layer="51"/>
+<rectangle x1="1.4478" y1="-1.651" x2="2.3978" y2="1.649" layer="51"/>
+<rectangle x1="-0.4001" y1="-0.7" x2="0.4001" y2="0.7" layer="35"/>
+</package>
+<package name="C4564">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+chip</description>
+<wire x1="-2.973" y1="3.483" x2="2.973" y2="3.483" width="0.0508" layer="39"/>
+<wire x1="2.973" y1="-3.483" x2="-2.973" y2="-3.483" width="0.0508" layer="39"/>
+<wire x1="-2.973" y1="-3.483" x2="-2.973" y2="3.483" width="0.0508" layer="39"/>
+<wire x1="-1.4986" y1="3.2766" x2="1.4732" y2="3.2766" width="0.1016" layer="51"/>
+<wire x1="-1.4732" y1="-3.2766" x2="1.4986" y2="-3.2766" width="0.1016" layer="51"/>
+<wire x1="2.973" y1="3.483" x2="2.973" y2="-3.483" width="0.0508" layer="39"/>
+<smd name="1" x="-1.95" y="0" dx="1.9" dy="6.8" layer="1"/>
+<smd name="2" x="1.95" y="0" dx="1.9" dy="6.8" layer="1"/>
+<text x="-1.905" y="3.683" size="1.27" layer="25">&gt;NAME</text>
+<text x="-1.905" y="-4.826" size="1.27" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.413" y1="-3.3528" x2="-1.463" y2="3.3472" layer="51"/>
+<rectangle x1="1.4478" y1="-3.3528" x2="2.3978" y2="3.3472" layer="51"/>
+<rectangle x1="-0.5001" y1="-1" x2="0.5001" y2="1" layer="35"/>
+</package>
+<package name="C025-024X044">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 2.4 x 4.4 mm</description>
+<wire x1="-2.159" y1="-0.635" x2="-2.159" y2="0.635" width="0.1524" layer="21"/>
+<wire x1="-2.159" y1="0.635" x2="-1.651" y2="1.143" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.159" y1="-0.635" x2="-1.651" y2="-1.143" width="0.1524" layer="21" curve="90"/>
+<wire x1="1.651" y1="1.143" x2="-1.651" y2="1.143" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-0.635" x2="2.159" y2="0.635" width="0.1524" layer="21"/>
+<wire x1="1.651" y1="-1.143" x2="-1.651" y2="-1.143" width="0.1524" layer="21"/>
+<wire x1="1.651" y1="1.143" x2="2.159" y2="0.635" width="0.1524" layer="21" curve="-90"/>
+<wire x1="1.651" y1="-1.143" x2="2.159" y2="-0.635" width="0.1524" layer="21" curve="90"/>
+<wire x1="-0.3048" y1="0.762" x2="-0.3048" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0.762" x2="0.3302" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="1.27" y1="0" x2="0.3302" y2="0" width="0.1524" layer="51"/>
+<wire x1="-1.27" y1="0" x2="-0.3048" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-1.778" y="1.397" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.778" y="-2.667" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025-025X050">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 2.5 x 5 mm</description>
+<wire x1="-2.159" y1="1.27" x2="2.159" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-1.27" x2="-2.159" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="1.016" x2="2.413" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="1.016" x2="-2.413" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="1.27" x2="2.413" y2="1.016" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="1.016" x2="-2.159" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-1.27" x2="2.413" y2="-1.016" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-1.016" x2="-2.159" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="1.524" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-2.794" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025-030X050">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 3 x 5 mm</description>
+<wire x1="-2.159" y1="1.524" x2="2.159" y2="1.524" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-1.524" x2="-2.159" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="1.27" x2="2.413" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="1.27" x2="-2.413" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="1.524" x2="2.413" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="1.27" x2="-2.159" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-1.524" x2="2.413" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-1.27" x2="-2.159" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="1.905" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-3.048" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025-040X050">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 4 x 5 mm</description>
+<wire x1="-2.159" y1="1.905" x2="2.159" y2="1.905" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-1.905" x2="-2.159" y2="-1.905" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="1.651" x2="2.413" y2="-1.651" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="1.651" x2="-2.413" y2="-1.651" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="1.905" x2="2.413" y2="1.651" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="1.651" x2="-2.159" y2="1.905" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-1.905" x2="2.413" y2="-1.651" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-1.651" x2="-2.159" y2="-1.905" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="2.159" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-3.429" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025-050X050">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 5 x 5 mm</description>
+<wire x1="-2.159" y1="2.286" x2="2.159" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-2.286" x2="-2.159" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="2.032" x2="2.413" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="2.032" x2="-2.413" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="2.286" x2="2.413" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="2.032" x2="-2.159" y2="2.286" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-2.286" x2="2.413" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-2.032" x2="-2.159" y2="-2.286" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="2.54" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-3.81" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025-060X050">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm, outline 6 x 5 mm</description>
+<wire x1="-2.159" y1="2.794" x2="2.159" y2="2.794" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-2.794" x2="-2.159" y2="-2.794" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="2.54" x2="2.413" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="2.54" x2="-2.413" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="2.794" x2="2.413" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="2.54" x2="-2.159" y2="2.794" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-2.794" x2="2.413" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-2.54" x2="-2.159" y2="-2.794" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="3.048" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.032" y="-2.413" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025_050-024X070">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 mm + 5 mm, outline 2.4 x 7 mm</description>
+<wire x1="-2.159" y1="-0.635" x2="-2.159" y2="0.635" width="0.1524" layer="51"/>
+<wire x1="-2.159" y1="0.635" x2="-1.651" y2="1.143" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.159" y1="-0.635" x2="-1.651" y2="-1.143" width="0.1524" layer="21" curve="90"/>
+<wire x1="1.651" y1="1.143" x2="-1.651" y2="1.143" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-0.635" x2="2.159" y2="0.635" width="0.1524" layer="51"/>
+<wire x1="1.651" y1="-1.143" x2="-1.651" y2="-1.143" width="0.1524" layer="21"/>
+<wire x1="1.651" y1="1.143" x2="2.159" y2="0.635" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-4.191" y1="-1.143" x2="-3.9624" y2="-1.143" width="0.1524" layer="21"/>
+<wire x1="-4.191" y1="1.143" x2="-3.9624" y2="1.143" width="0.1524" layer="21"/>
+<wire x1="-4.699" y1="-0.635" x2="-4.191" y2="-1.143" width="0.1524" layer="21" curve="90"/>
+<wire x1="1.651" y1="-1.143" x2="2.159" y2="-0.635" width="0.1524" layer="21" curve="90"/>
+<wire x1="-4.699" y1="0.635" x2="-4.191" y2="1.143" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-4.699" y1="-0.635" x2="-4.699" y2="0.635" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="1.143" x2="-2.5654" y2="1.143" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-1.143" x2="-2.5654" y2="-1.143" width="0.1524" layer="21"/>
+<wire x1="-0.3048" y1="0.762" x2="-0.3048" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0.762" x2="0.3302" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="1.27" y1="0" x2="0.3302" y2="0" width="0.1524" layer="51"/>
+<wire x1="-1.27" y1="0" x2="-0.3048" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-3.81" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="3" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.81" y="1.397" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.81" y="-2.667" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025_050-025X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 + 5 mm, outline 2.5 x 7.5 mm</description>
+<wire x1="-2.159" y1="1.27" x2="2.159" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-1.27" x2="-2.159" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="1.016" x2="-2.413" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="1.27" x2="2.413" y2="1.016" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="1.016" x2="-2.159" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-1.27" x2="2.413" y2="-1.016" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-1.016" x2="-2.159" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="4.953" y1="1.016" x2="4.953" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="1.27" x2="4.953" y2="1.016" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.699" y1="-1.27" x2="4.953" y2="-1.016" width="0.1524" layer="21" curve="90"/>
+<wire x1="2.794" y1="1.27" x2="4.699" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="-1.27" x2="2.794" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="1.016" x2="2.413" y2="0.762" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="-0.762" x2="2.413" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="0.254" x2="2.413" y2="-0.254" width="0.1524" layer="21"/>
+<wire x1="1.778" y1="0" x2="2.286" y2="0" width="0.1524" layer="51"/>
+<wire x1="2.286" y1="0" x2="2.794" y2="0" width="0.1524" layer="21"/>
+<wire x1="2.794" y1="0" x2="3.302" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.762" y1="0" x2="0.381" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="3" x="3.81" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.159" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.159" y="-2.794" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025_050-035X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 + 5 mm, outline 3.5 x 7.5 mm</description>
+<wire x1="-2.159" y1="1.778" x2="2.159" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-1.778" x2="-2.159" y2="-1.778" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="1.524" x2="-2.413" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="1.778" x2="2.413" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="1.524" x2="-2.159" y2="1.778" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-1.778" x2="2.413" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-1.524" x2="-2.159" y2="-1.778" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="4.953" y1="1.524" x2="4.953" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="1.778" x2="4.953" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.699" y1="-1.778" x2="4.953" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="2.794" y1="1.778" x2="4.699" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="-1.778" x2="2.794" y2="-1.778" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="1.524" x2="2.413" y2="1.016" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="-1.016" x2="2.413" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="0.508" x2="2.413" y2="-0.508" width="0.1524" layer="21"/>
+<wire x1="0.381" y1="0" x2="0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="2.286" y1="0" x2="2.794" y2="0" width="0.1524" layer="21"/>
+<wire x1="2.794" y1="0" x2="3.302" y2="0" width="0.1524" layer="51"/>
+<wire x1="2.286" y1="0" x2="1.778" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="3" x="3.81" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="2.159" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-3.302" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025_050-045X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 + 5 mm, outline 4.5 x 7.5 mm</description>
+<wire x1="-2.159" y1="2.286" x2="2.159" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-2.286" x2="-2.159" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="2.032" x2="-2.413" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="2.286" x2="2.413" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="2.032" x2="-2.159" y2="2.286" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-2.286" x2="2.413" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-2.032" x2="-2.159" y2="-2.286" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="4.953" y1="2.032" x2="4.953" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="2.286" x2="4.953" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.699" y1="-2.286" x2="4.953" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="2.794" y1="2.286" x2="4.699" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="-2.286" x2="2.794" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="2.032" x2="2.413" y2="1.397" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="-1.397" x2="2.413" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="0.762" x2="2.413" y2="-0.762" width="0.1524" layer="21"/>
+<wire x1="2.286" y1="0" x2="2.794" y2="0" width="0.1524" layer="21"/>
+<wire x1="2.794" y1="0" x2="3.302" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="2.286" y1="0" x2="1.778" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="3" x="3.81" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="2.667" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.286" y="-3.81" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C025_050-055X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 2.5 + 5 mm, outline 5.5 x 7.5 mm</description>
+<wire x1="-2.159" y1="2.794" x2="2.159" y2="2.794" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-2.794" x2="-2.159" y2="-2.794" width="0.1524" layer="21"/>
+<wire x1="-2.413" y1="2.54" x2="-2.413" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="2.794" x2="2.413" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.413" y1="2.54" x2="-2.159" y2="2.794" width="0.1524" layer="21" curve="-90"/>
+<wire x1="2.159" y1="-2.794" x2="2.413" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-2.413" y1="-2.54" x2="-2.159" y2="-2.794" width="0.1524" layer="21" curve="90"/>
+<wire x1="0.381" y1="0" x2="0.254" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="0.762" width="0.254" layer="21"/>
+<wire x1="0.254" y1="0" x2="0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0.762" x2="-0.254" y2="0" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.254" y2="-0.762" width="0.254" layer="21"/>
+<wire x1="-0.254" y1="0" x2="-0.381" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.381" y1="0" x2="-0.762" y2="0" width="0.1524" layer="51"/>
+<wire x1="4.953" y1="2.54" x2="4.953" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="2.794" x2="4.953" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.699" y1="-2.794" x2="4.953" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="2.794" y1="2.794" x2="4.699" y2="2.794" width="0.1524" layer="21"/>
+<wire x1="4.699" y1="-2.794" x2="2.794" y2="-2.794" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="2.54" x2="2.413" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="-2.032" x2="2.413" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="2.413" y1="0.762" x2="2.413" y2="-0.762" width="0.1524" layer="21"/>
+<wire x1="1.778" y1="0" x2="2.286" y2="0" width="0.1524" layer="51"/>
+<wire x1="2.286" y1="0" x2="2.794" y2="0" width="0.1524" layer="21"/>
+<wire x1="2.794" y1="0" x2="3.302" y2="0" width="0.1524" layer="51"/>
+<wire x1="0.381" y1="0" x2="0.762" y2="0" width="0.1524" layer="51"/>
+<pad name="1" x="-1.27" y="0" drill="0.8128" shape="octagon"/>
+<pad name="3" x="3.81" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="1.27" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.286" y="3.175" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.032" y="-2.286" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-024X044">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 2.4 x 4.4 mm</description>
+<wire x1="-2.159" y1="-0.635" x2="-2.159" y2="0.635" width="0.1524" layer="51"/>
+<wire x1="-2.159" y1="0.635" x2="-1.651" y2="1.143" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.159" y1="-0.635" x2="-1.651" y2="-1.143" width="0.1524" layer="21" curve="90"/>
+<wire x1="1.651" y1="1.143" x2="-1.651" y2="1.143" width="0.1524" layer="21"/>
+<wire x1="2.159" y1="-0.635" x2="2.159" y2="0.635" width="0.1524" layer="51"/>
+<wire x1="1.651" y1="-1.143" x2="-1.651" y2="-1.143" width="0.1524" layer="21"/>
+<wire x1="1.651" y1="1.143" x2="2.159" y2="0.635" width="0.1524" layer="21" curve="-90"/>
+<wire x1="1.651" y1="-1.143" x2="2.159" y2="-0.635" width="0.1524" layer="21" curve="90"/>
+<wire x1="-0.3048" y1="0.762" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0.762" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.762" width="0.3048" layer="21"/>
+<wire x1="1.27" y1="0" x2="0.3302" y2="0" width="0.1524" layer="21"/>
+<wire x1="-1.27" y1="0" x2="-0.3048" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-2.159" y="1.397" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-2.159" y="-2.667" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+<rectangle x1="2.159" y1="-0.381" x2="2.54" y2="0.381" layer="51"/>
+<rectangle x1="-2.54" y1="-0.381" x2="-2.159" y2="0.381" layer="51"/>
+</package>
+<package name="C050-025X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 2.5 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="1.016" x2="-3.683" y2="-1.016" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-1.27" x2="3.429" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-1.016" x2="3.683" y2="1.016" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.27" x2="-3.429" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.27" x2="3.683" y2="1.016" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-1.27" x2="3.683" y2="-1.016" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-1.016" x2="-3.429" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="1.016" x2="-3.429" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.429" y="1.651" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.794" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-045X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 4.5 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="2.032" x2="-3.683" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-2.286" x2="3.429" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-2.032" x2="3.683" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.286" x2="-3.429" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.286" x2="3.683" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-2.286" x2="3.683" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-2.032" x2="-3.429" y2="-2.286" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="2.032" x2="-3.429" y2="2.286" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.556" y="2.667" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.556" y="-3.81" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-030X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 3 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="1.27" x2="-3.683" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-1.524" x2="3.429" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-1.27" x2="3.683" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.524" x2="-3.429" y2="1.524" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.524" x2="3.683" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-1.524" x2="3.683" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-1.27" x2="-3.429" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="1.27" x2="-3.429" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.556" y="1.905" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.556" y="-3.048" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-050X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 5 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="2.286" x2="-3.683" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-2.54" x2="3.429" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-2.286" x2="3.683" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.54" x2="-3.429" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.54" x2="3.683" y2="2.286" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-2.54" x2="3.683" y2="-2.286" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-2.286" x2="-3.429" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="2.286" x2="-3.429" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.429" y="2.921" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.175" y="-2.159" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-055X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 5.5 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="2.54" x2="-3.683" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-2.794" x2="3.429" y2="-2.794" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-2.54" x2="3.683" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.794" x2="-3.429" y2="2.794" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="2.794" x2="3.683" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-2.794" x2="3.683" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-2.54" x2="-3.429" y2="-2.794" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="2.54" x2="-3.429" y2="2.794" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.429" y="3.175" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.302" y="-2.286" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-075X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 7.5 x 7.5 mm</description>
+<wire x1="-1.524" y1="0" x2="-0.4572" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.4572" y1="0" x2="-0.4572" y2="0.762" width="0.4064" layer="21"/>
+<wire x1="-0.4572" y1="0" x2="-0.4572" y2="-0.762" width="0.4064" layer="21"/>
+<wire x1="0.4318" y1="0.762" x2="0.4318" y2="0" width="0.4064" layer="21"/>
+<wire x1="0.4318" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.4318" y1="0" x2="0.4318" y2="-0.762" width="0.4064" layer="21"/>
+<wire x1="-3.683" y1="3.429" x2="-3.683" y2="-3.429" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-3.683" x2="3.429" y2="-3.683" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-3.429" x2="3.683" y2="3.429" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="3.683" x2="-3.429" y2="3.683" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="3.683" x2="3.683" y2="3.429" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-3.683" x2="3.683" y2="-3.429" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-3.429" x2="-3.429" y2="-3.683" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="3.429" x2="-3.429" y2="3.683" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.429" y="4.064" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.175" y="-2.921" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050H075X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+Horizontal, grid 5 mm, outline 7.5 x 7.5 mm</description>
+<wire x1="-3.683" y1="7.112" x2="-3.683" y2="0.508" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="0.508" x2="-3.302" y2="0.508" width="0.1524" layer="21"/>
+<wire x1="-3.302" y1="0.508" x2="-1.778" y2="0.508" width="0.1524" layer="51"/>
+<wire x1="-1.778" y1="0.508" x2="1.778" y2="0.508" width="0.1524" layer="21"/>
+<wire x1="1.778" y1="0.508" x2="3.302" y2="0.508" width="0.1524" layer="51"/>
+<wire x1="3.302" y1="0.508" x2="3.683" y2="0.508" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="0.508" x2="3.683" y2="7.112" width="0.1524" layer="21"/>
+<wire x1="3.175" y1="7.62" x2="-3.175" y2="7.62" width="0.1524" layer="21"/>
+<wire x1="-0.3048" y1="2.413" x2="-0.3048" y2="1.778" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="1.778" x2="-0.3048" y2="1.143" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="1.778" x2="-1.651" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="2.413" x2="0.3302" y2="1.778" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="1.778" x2="0.3302" y2="1.143" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="1.778" x2="1.651" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="7.112" x2="-3.175" y2="7.62" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.175" y1="7.62" x2="3.683" y2="7.112" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-2.54" y1="0" x2="-2.54" y2="0.254" width="0.508" layer="51"/>
+<wire x1="2.54" y1="0" x2="2.54" y2="0.254" width="0.508" layer="51"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.302" y="8.001" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.175" y="3.175" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+<rectangle x1="-2.794" y1="0.127" x2="-2.286" y2="0.508" layer="51"/>
+<rectangle x1="2.286" y1="0.127" x2="2.794" y2="0.508" layer="51"/>
+</package>
+<package name="C075-032X103">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 7.5 mm, outline 3.2 x 10.3 mm</description>
+<wire x1="4.826" y1="1.524" x2="-4.826" y2="1.524" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="-1.27" width="0.1524" layer="21"/>
+<wire x1="-4.826" y1="-1.524" x2="4.826" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="5.08" y1="-1.27" x2="5.08" y2="1.27" width="0.1524" layer="21"/>
+<wire x1="4.826" y1="1.524" x2="5.08" y2="1.27" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.826" y1="-1.524" x2="5.08" y2="-1.27" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.08" y1="-1.27" x2="-4.826" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.08" y1="1.27" x2="-4.826" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="0.508" y1="0" x2="2.54" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.54" y1="0" x2="-0.508" y2="0" width="0.1524" layer="21"/>
+<wire x1="-0.508" y1="0.889" x2="-0.508" y2="0" width="0.4064" layer="21"/>
+<wire x1="-0.508" y1="0" x2="-0.508" y2="-0.889" width="0.4064" layer="21"/>
+<wire x1="0.508" y1="0.889" x2="0.508" y2="0" width="0.4064" layer="21"/>
+<wire x1="0.508" y1="0" x2="0.508" y2="-0.889" width="0.4064" layer="21"/>
+<pad name="1" x="-3.81" y="0" drill="0.9144" shape="octagon"/>
+<pad name="2" x="3.81" y="0" drill="0.9144" shape="octagon"/>
+<text x="-4.826" y="1.905" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-4.826" y="-3.048" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C075-042X103">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 7.5 mm, outline 4.2 x 10.3 mm</description>
+<wire x1="4.826" y1="2.032" x2="-4.826" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="1.778" x2="-5.08" y2="-1.778" width="0.1524" layer="21"/>
+<wire x1="-4.826" y1="-2.032" x2="4.826" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="5.08" y1="-1.778" x2="5.08" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="4.826" y1="2.032" x2="5.08" y2="1.778" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.826" y1="-2.032" x2="5.08" y2="-1.778" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.08" y1="-1.778" x2="-4.826" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.08" y1="1.778" x2="-4.826" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-1.27" y1="0" x2="2.667" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.667" y1="0" x2="-2.159" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.159" y1="1.27" x2="-2.159" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.159" y1="0" x2="-2.159" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="1.27" x2="-1.27" y2="0" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="0" x2="-1.27" y2="-1.27" width="0.4064" layer="21"/>
+<pad name="1" x="-3.81" y="0" drill="0.9144" shape="octagon"/>
+<pad name="2" x="3.81" y="0" drill="0.9144" shape="octagon"/>
+<text x="-4.699" y="2.413" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-0.635" y="-1.651" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C075-052X106">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 7.5 mm, outline 5.2 x 10.6 mm</description>
+<wire x1="4.953" y1="2.54" x2="-4.953" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="-5.207" y1="2.286" x2="-5.207" y2="-2.286" width="0.1524" layer="21"/>
+<wire x1="-4.953" y1="-2.54" x2="4.953" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="5.207" y1="-2.286" x2="5.207" y2="2.286" width="0.1524" layer="21"/>
+<wire x1="4.953" y1="2.54" x2="5.207" y2="2.286" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.953" y1="-2.54" x2="5.207" y2="-2.286" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.207" y1="-2.286" x2="-4.953" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.207" y1="2.286" x2="-4.953" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-1.27" y1="0" x2="2.667" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.667" y1="0" x2="-2.159" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.159" y1="1.27" x2="-2.159" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.159" y1="0" x2="-2.159" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="1.27" x2="-1.27" y2="0" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="0" x2="-1.27" y2="-1.27" width="0.4064" layer="21"/>
+<pad name="1" x="-3.81" y="0" drill="0.9144" shape="octagon"/>
+<pad name="2" x="3.81" y="0" drill="0.9144" shape="octagon"/>
+<text x="-4.826" y="2.921" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-0.635" y="-2.032" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C102-043X133">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 10.2 mm, outline 4.3 x 13.3 mm</description>
+<wire x1="-3.175" y1="1.27" x2="-3.175" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.286" y1="1.27" x2="-2.286" y2="0" width="0.4064" layer="21"/>
+<wire x1="3.81" y1="0" x2="-2.286" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.286" y1="0" x2="-2.286" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-3.81" y1="0" x2="-3.175" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.175" y1="0" x2="-3.175" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-6.096" y1="2.032" x2="6.096" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="6.604" y1="1.524" x2="6.604" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="-2.032" x2="-6.096" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="-6.604" y1="-1.524" x2="-6.604" y2="1.524" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="2.032" x2="6.604" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="6.096" y1="-2.032" x2="6.604" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="-1.524" x2="-6.096" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="1.524" x2="-6.096" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-5.08" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="5.08" y="0" drill="1.016" shape="octagon"/>
+<text x="-6.096" y="2.413" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.524" y="-1.651" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C102-054X133">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 10.2 mm, outline 5.4 x 13.3 mm</description>
+<wire x1="-3.175" y1="1.27" x2="-3.175" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.286" y1="1.27" x2="-2.286" y2="0" width="0.4064" layer="21"/>
+<wire x1="3.81" y1="0" x2="-2.286" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.286" y1="0" x2="-2.286" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-3.81" y1="0" x2="-3.175" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.175" y1="0" x2="-3.175" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-6.096" y1="2.54" x2="6.096" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="6.604" y1="2.032" x2="6.604" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="-2.54" x2="-6.096" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="-6.604" y1="-2.032" x2="-6.604" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="2.54" x2="6.604" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="6.096" y1="-2.54" x2="6.604" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="-2.032" x2="-6.096" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="2.032" x2="-6.096" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-5.08" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="5.08" y="0" drill="1.016" shape="octagon"/>
+<text x="-6.096" y="2.921" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.524" y="-1.905" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C102-064X133">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 10.2 mm, outline 6.4 x 13.3 mm</description>
+<wire x1="-3.175" y1="1.27" x2="-3.175" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.286" y1="1.27" x2="-2.286" y2="0" width="0.4064" layer="21"/>
+<wire x1="3.81" y1="0" x2="-2.286" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.286" y1="0" x2="-2.286" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-3.81" y1="0" x2="-3.175" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.175" y1="0" x2="-3.175" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-6.096" y1="3.048" x2="6.096" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="6.604" y1="2.54" x2="6.604" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="-3.048" x2="-6.096" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="-6.604" y1="-2.54" x2="-6.604" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="6.096" y1="3.048" x2="6.604" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="6.096" y1="-3.048" x2="6.604" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="-2.54" x2="-6.096" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="2.54" x2="-6.096" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-5.08" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="5.08" y="0" drill="1.016" shape="octagon"/>
+<text x="-6.096" y="3.429" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.524" y="-2.032" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C102_152-062X184">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 10.2 mm + 15.2 mm, outline 6.2 x 18.4 mm</description>
+<wire x1="-2.286" y1="1.27" x2="-2.286" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.286" y1="0" x2="-2.286" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-3.175" y1="1.27" x2="-3.175" y2="0" width="0.4064" layer="21"/>
+<wire x1="-3.175" y1="0" x2="-3.175" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-3.683" y1="0" x2="-3.175" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.286" y1="0" x2="3.683" y2="0" width="0.1524" layer="21"/>
+<wire x1="6.477" y1="0" x2="8.636" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.096" y1="3.048" x2="6.223" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="6.223" y1="-3.048" x2="-6.096" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="-6.604" y1="-2.54" x2="-6.604" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="6.223" y1="3.048" x2="6.731" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="6.223" y1="-3.048" x2="6.731" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="-2.54" x2="-6.096" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-6.604" y1="2.54" x2="-6.096" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<wire x1="6.731" y1="2.54" x2="6.731" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="11.176" y1="3.048" x2="11.684" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="11.176" y1="-3.048" x2="11.684" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="11.176" y1="-3.048" x2="7.112" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="7.112" y1="3.048" x2="11.176" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="11.684" y1="2.54" x2="11.684" y2="-2.54" width="0.1524" layer="21"/>
+<pad name="1" x="-5.08" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="5.08" y="0" drill="1.016" shape="octagon"/>
+<pad name="3" x="10.033" y="0" drill="1.016" shape="octagon"/>
+<text x="-5.969" y="3.429" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-1.524" y="-2.286" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C150-054X183">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 15 mm, outline 5.4 x 18.3 mm</description>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="0" width="0.4064" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-5.08" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="1.27" x2="-4.191" y2="0" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="-4.191" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="9.017" y1="2.032" x2="9.017" y2="-2.032" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="-2.54" x2="-8.509" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="-9.017" y1="-2.032" x2="-9.017" y2="2.032" width="0.1524" layer="21"/>
+<wire x1="-8.509" y1="2.54" x2="8.509" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="2.54" x2="9.017" y2="2.032" width="0.1524" layer="21" curve="-90"/>
+<wire x1="8.509" y1="-2.54" x2="9.017" y2="-2.032" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="-2.032" x2="-8.509" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="2.032" x2="-8.509" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-7.493" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="7.493" y="0" drill="1.016" shape="octagon"/>
+<text x="-8.382" y="2.921" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.032" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C150-064X183">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 15 mm, outline 6.4 x 18.3 mm</description>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="0" width="0.4064" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-5.08" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="1.27" x2="-4.191" y2="0" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="-4.191" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="9.017" y1="2.54" x2="9.017" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="-3.048" x2="-8.509" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="-9.017" y1="-2.54" x2="-9.017" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="-8.509" y1="3.048" x2="8.509" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="3.048" x2="9.017" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="8.509" y1="-3.048" x2="9.017" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="-2.54" x2="-8.509" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="2.54" x2="-8.509" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-7.493" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="7.493" y="0" drill="1.016" shape="octagon"/>
+<text x="-8.509" y="3.429" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.032" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C150-072X183">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 15 mm, outline 7.2 x 18.3 mm</description>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="0" width="0.4064" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-5.08" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="1.27" x2="-4.191" y2="0" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="-4.191" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="9.017" y1="3.048" x2="9.017" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="-3.556" x2="-8.509" y2="-3.556" width="0.1524" layer="21"/>
+<wire x1="-9.017" y1="-3.048" x2="-9.017" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="-8.509" y1="3.556" x2="8.509" y2="3.556" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="3.556" x2="9.017" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<wire x1="8.509" y1="-3.556" x2="9.017" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="-3.048" x2="-8.509" y2="-3.556" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="3.048" x2="-8.509" y2="3.556" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-7.493" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="7.493" y="0" drill="1.016" shape="octagon"/>
+<text x="-8.509" y="3.937" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.286" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C150-084X183">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 15 mm, outline 8.4 x 18.3 mm</description>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="0" width="0.4064" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-5.08" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="1.27" x2="-4.191" y2="0" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="-4.191" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="9.017" y1="3.556" x2="9.017" y2="-3.556" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="-4.064" x2="-8.509" y2="-4.064" width="0.1524" layer="21"/>
+<wire x1="-9.017" y1="-3.556" x2="-9.017" y2="3.556" width="0.1524" layer="21"/>
+<wire x1="-8.509" y1="4.064" x2="8.509" y2="4.064" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="4.064" x2="9.017" y2="3.556" width="0.1524" layer="21" curve="-90"/>
+<wire x1="8.509" y1="-4.064" x2="9.017" y2="-3.556" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="-3.556" x2="-8.509" y2="-4.064" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="3.556" x2="-8.509" y2="4.064" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-7.493" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="7.493" y="0" drill="1.016" shape="octagon"/>
+<text x="-8.509" y="4.445" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.54" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C150-091X182">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 15 mm, outline 9.1 x 18.2 mm</description>
+<wire x1="-5.08" y1="1.27" x2="-5.08" y2="0" width="0.4064" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-5.08" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="1.27" x2="-4.191" y2="0" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="-4.191" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-4.191" y1="0" x2="6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="-5.08" y1="0" x2="-6.096" y2="0" width="0.1524" layer="21"/>
+<wire x1="9.017" y1="3.937" x2="9.017" y2="-3.937" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="-4.445" x2="-8.509" y2="-4.445" width="0.1524" layer="21"/>
+<wire x1="-9.017" y1="-3.937" x2="-9.017" y2="3.937" width="0.1524" layer="21"/>
+<wire x1="-8.509" y1="4.445" x2="8.509" y2="4.445" width="0.1524" layer="21"/>
+<wire x1="8.509" y1="4.445" x2="9.017" y2="3.937" width="0.1524" layer="21" curve="-90"/>
+<wire x1="8.509" y1="-4.445" x2="9.017" y2="-3.937" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="-3.937" x2="-8.509" y2="-4.445" width="0.1524" layer="21" curve="90"/>
+<wire x1="-9.017" y1="3.937" x2="-8.509" y2="4.445" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-7.493" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="7.493" y="0" drill="1.016" shape="octagon"/>
+<text x="-8.509" y="4.826" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.429" y="-2.54" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C225-062X268">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 22.5 mm, outline 6.2 x 26.8 mm</description>
+<wire x1="-12.827" y1="3.048" x2="12.827" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="13.335" y1="2.54" x2="13.335" y2="-2.54" width="0.1524" layer="21"/>
+<wire x1="12.827" y1="-3.048" x2="-12.827" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="-13.335" y1="-2.54" x2="-13.335" y2="2.54" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="12.827" y1="3.048" x2="13.335" y2="2.54" width="0.1524" layer="21" curve="-90"/>
+<wire x1="12.827" y1="-3.048" x2="13.335" y2="-2.54" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="-2.54" x2="-12.827" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="2.54" x2="-12.827" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-9.652" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="9.652" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-11.303" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="11.303" y="0" drill="1.016" shape="octagon"/>
+<text x="-12.7" y="3.429" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C225-074X268">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 22.5 mm, outline 7.4 x 26.8 mm</description>
+<wire x1="-12.827" y1="3.556" x2="12.827" y2="3.556" width="0.1524" layer="21"/>
+<wire x1="13.335" y1="3.048" x2="13.335" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="12.827" y1="-3.556" x2="-12.827" y2="-3.556" width="0.1524" layer="21"/>
+<wire x1="-13.335" y1="-3.048" x2="-13.335" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="12.827" y1="3.556" x2="13.335" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<wire x1="12.827" y1="-3.556" x2="13.335" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="-3.048" x2="-12.827" y2="-3.556" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="3.048" x2="-12.827" y2="3.556" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-9.652" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="9.652" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-11.303" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="11.303" y="0" drill="1.016" shape="octagon"/>
+<text x="-12.827" y="3.937" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C225-087X268">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 22.5 mm, outline 8.7 x 26.8 mm</description>
+<wire x1="-12.827" y1="4.318" x2="12.827" y2="4.318" width="0.1524" layer="21"/>
+<wire x1="13.335" y1="3.81" x2="13.335" y2="-3.81" width="0.1524" layer="21"/>
+<wire x1="12.827" y1="-4.318" x2="-12.827" y2="-4.318" width="0.1524" layer="21"/>
+<wire x1="-13.335" y1="-3.81" x2="-13.335" y2="3.81" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="12.827" y1="4.318" x2="13.335" y2="3.81" width="0.1524" layer="21" curve="-90"/>
+<wire x1="12.827" y1="-4.318" x2="13.335" y2="-3.81" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="-3.81" x2="-12.827" y2="-4.318" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="3.81" x2="-12.827" y2="4.318" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-9.652" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="9.652" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-11.303" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="11.303" y="0" drill="1.016" shape="octagon"/>
+<text x="-12.827" y="4.699" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C225-108X268">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 22.5 mm, outline 10.8 x 26.8 mm</description>
+<wire x1="-12.827" y1="5.334" x2="12.827" y2="5.334" width="0.1524" layer="21"/>
+<wire x1="13.335" y1="4.826" x2="13.335" y2="-4.826" width="0.1524" layer="21"/>
+<wire x1="12.827" y1="-5.334" x2="-12.827" y2="-5.334" width="0.1524" layer="21"/>
+<wire x1="-13.335" y1="-4.826" x2="-13.335" y2="4.826" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="12.827" y1="5.334" x2="13.335" y2="4.826" width="0.1524" layer="21" curve="-90"/>
+<wire x1="12.827" y1="-5.334" x2="13.335" y2="-4.826" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="-4.826" x2="-12.827" y2="-5.334" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="4.826" x2="-12.827" y2="5.334" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-9.652" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="9.652" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-11.303" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="11.303" y="0" drill="1.016" shape="octagon"/>
+<text x="-12.954" y="5.715" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C225-113X268">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 22.5 mm, outline 11.3 x 26.8 mm</description>
+<wire x1="-12.827" y1="5.588" x2="12.827" y2="5.588" width="0.1524" layer="21"/>
+<wire x1="13.335" y1="5.08" x2="13.335" y2="-5.08" width="0.1524" layer="21"/>
+<wire x1="12.827" y1="-5.588" x2="-12.827" y2="-5.588" width="0.1524" layer="21"/>
+<wire x1="-13.335" y1="-5.08" x2="-13.335" y2="5.08" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="12.827" y1="5.588" x2="13.335" y2="5.08" width="0.1524" layer="21" curve="-90"/>
+<wire x1="12.827" y1="-5.588" x2="13.335" y2="-5.08" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="-5.08" x2="-12.827" y2="-5.588" width="0.1524" layer="21" curve="90"/>
+<wire x1="-13.335" y1="5.08" x2="-12.827" y2="5.588" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-9.652" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="9.652" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-11.303" y="0" drill="1.016" shape="octagon"/>
+<pad name="2" x="11.303" y="0" drill="1.016" shape="octagon"/>
+<text x="-12.954" y="5.969" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-093X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 9.3 x 31.6 mm</description>
+<wire x1="-15.24" y1="4.572" x2="15.24" y2="4.572" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="4.064" x2="15.748" y2="-4.064" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-4.572" x2="-15.24" y2="-4.572" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-4.064" x2="-15.748" y2="4.064" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="4.572" x2="15.748" y2="4.064" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-4.572" x2="15.748" y2="-4.064" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-4.064" x2="-15.24" y2="-4.572" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="4.064" x2="-15.24" y2="4.572" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="4.953" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-113X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 11.3 x 31.6 mm</description>
+<wire x1="-15.24" y1="5.588" x2="15.24" y2="5.588" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="5.08" x2="15.748" y2="-5.08" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-5.588" x2="-15.24" y2="-5.588" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-5.08" x2="-15.748" y2="5.08" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="5.588" x2="15.748" y2="5.08" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-5.588" x2="15.748" y2="-5.08" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-5.08" x2="-15.24" y2="-5.588" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="5.08" x2="-15.24" y2="5.588" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="5.969" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-134X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 13.4 x 31.6 mm</description>
+<wire x1="-15.24" y1="6.604" x2="15.24" y2="6.604" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="6.096" x2="15.748" y2="-6.096" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-6.604" x2="-15.24" y2="-6.604" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-6.096" x2="-15.748" y2="6.096" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="6.604" x2="15.748" y2="6.096" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-6.604" x2="15.748" y2="-6.096" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-6.096" x2="-15.24" y2="-6.604" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="6.096" x2="-15.24" y2="6.604" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="6.985" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-205X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 20.5 x 31.6 mm</description>
+<wire x1="-15.24" y1="10.16" x2="15.24" y2="10.16" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="9.652" x2="15.748" y2="-9.652" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-10.16" x2="-15.24" y2="-10.16" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-9.652" x2="-15.748" y2="9.652" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="10.16" x2="15.748" y2="9.652" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-10.16" x2="15.748" y2="-9.652" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-9.652" x2="-15.24" y2="-10.16" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="9.652" x2="-15.24" y2="10.16" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="10.541" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-4.318" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C325-137X374">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 32.5 mm, outline 13.7 x 37.4 mm</description>
+<wire x1="-14.2748" y1="0" x2="-12.7" y2="0" width="0.1524" layer="21"/>
+<wire x1="-12.7" y1="1.905" x2="-12.7" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="1.905" x2="-11.811" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="0" x2="14.2748" y2="0" width="0.1524" layer="21"/>
+<wire x1="-11.811" y1="0" x2="-11.811" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-12.7" y1="0" x2="-12.7" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="18.542" y1="6.731" x2="18.542" y2="-6.731" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="6.731" x2="-18.542" y2="-6.731" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="-6.731" x2="18.542" y2="-6.731" width="0.1524" layer="21"/>
+<wire x1="18.542" y1="6.731" x2="-18.542" y2="6.731" width="0.1524" layer="21"/>
+<pad name="1" x="-16.256" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="16.256" y="0" drill="1.1938" shape="octagon"/>
+<text x="-18.2372" y="7.0612" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C325-162X374">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 32.5 mm, outline 16.2 x 37.4 mm</description>
+<wire x1="-14.2748" y1="0" x2="-12.7" y2="0" width="0.1524" layer="21"/>
+<wire x1="-12.7" y1="1.905" x2="-12.7" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="1.905" x2="-11.811" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="0" x2="14.2748" y2="0" width="0.1524" layer="21"/>
+<wire x1="-11.811" y1="0" x2="-11.811" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-12.7" y1="0" x2="-12.7" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="18.542" y1="8.001" x2="18.542" y2="-8.001" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="8.001" x2="-18.542" y2="-8.001" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="-8.001" x2="18.542" y2="-8.001" width="0.1524" layer="21"/>
+<wire x1="18.542" y1="8.001" x2="-18.542" y2="8.001" width="0.1524" layer="21"/>
+<pad name="1" x="-16.256" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="16.256" y="0" drill="1.1938" shape="octagon"/>
+<text x="-18.3642" y="8.3312" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C325-182X374">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 32.5 mm, outline 18.2 x 37.4 mm</description>
+<wire x1="-14.2748" y1="0" x2="-12.7" y2="0" width="0.1524" layer="21"/>
+<wire x1="-12.7" y1="1.905" x2="-12.7" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="1.905" x2="-11.811" y2="0" width="0.4064" layer="21"/>
+<wire x1="-11.811" y1="0" x2="14.2748" y2="0" width="0.1524" layer="21"/>
+<wire x1="-11.811" y1="0" x2="-11.811" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-12.7" y1="0" x2="-12.7" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="18.542" y1="9.017" x2="18.542" y2="-9.017" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="9.017" x2="-18.542" y2="-9.017" width="0.1524" layer="21"/>
+<wire x1="-18.542" y1="-9.017" x2="18.542" y2="-9.017" width="0.1524" layer="21"/>
+<wire x1="18.542" y1="9.017" x2="-18.542" y2="9.017" width="0.1524" layer="21"/>
+<pad name="1" x="-16.256" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="16.256" y="0" drill="1.1938" shape="octagon"/>
+<text x="-18.3642" y="9.3472" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C375-192X418">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 37.5 mm, outline 19.2 x 41.8 mm</description>
+<wire x1="-20.32" y1="8.509" x2="20.32" y2="8.509" width="0.1524" layer="21"/>
+<wire x1="20.828" y1="8.001" x2="20.828" y2="-8.001" width="0.1524" layer="21"/>
+<wire x1="20.32" y1="-8.509" x2="-20.32" y2="-8.509" width="0.1524" layer="21"/>
+<wire x1="-20.828" y1="-8.001" x2="-20.828" y2="8.001" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="20.32" y1="8.509" x2="20.828" y2="8.001" width="0.1524" layer="21" curve="-90"/>
+<wire x1="20.32" y1="-8.509" x2="20.828" y2="-8.001" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="-8.001" x2="-20.32" y2="-8.509" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="8.001" x2="-20.32" y2="8.509" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-16.002" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="16.002" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-18.796" y="0" drill="1.3208" shape="octagon"/>
+<pad name="2" x="18.796" y="0" drill="1.3208" shape="octagon"/>
+<text x="-20.447" y="8.89" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C375-203X418">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 37.5 mm, outline 20.3 x 41.8 mm</description>
+<wire x1="-20.32" y1="10.16" x2="20.32" y2="10.16" width="0.1524" layer="21"/>
+<wire x1="20.828" y1="9.652" x2="20.828" y2="-9.652" width="0.1524" layer="21"/>
+<wire x1="20.32" y1="-10.16" x2="-20.32" y2="-10.16" width="0.1524" layer="21"/>
+<wire x1="-20.828" y1="-9.652" x2="-20.828" y2="9.652" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="20.32" y1="10.16" x2="20.828" y2="9.652" width="0.1524" layer="21" curve="-90"/>
+<wire x1="20.32" y1="-10.16" x2="20.828" y2="-9.652" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="-9.652" x2="-20.32" y2="-10.16" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="9.652" x2="-20.32" y2="10.16" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-16.002" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="16.002" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-18.796" y="0" drill="1.3208" shape="octagon"/>
+<pad name="2" x="18.796" y="0" drill="1.3208" shape="octagon"/>
+<text x="-20.32" y="10.541" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C050-035X075">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 5 mm, outline 3.5 x 7.5 mm</description>
+<wire x1="-0.3048" y1="0.635" x2="-0.3048" y2="0" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-0.3048" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="-0.3048" y1="0" x2="-1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="0.3302" y1="0.635" x2="0.3302" y2="0" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="0.3302" y2="-0.635" width="0.3048" layer="21"/>
+<wire x1="0.3302" y1="0" x2="1.524" y2="0" width="0.1524" layer="21"/>
+<wire x1="-3.683" y1="1.524" x2="-3.683" y2="-1.524" width="0.1524" layer="21"/>
+<wire x1="-3.429" y1="-1.778" x2="3.429" y2="-1.778" width="0.1524" layer="21"/>
+<wire x1="3.683" y1="-1.524" x2="3.683" y2="1.524" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.778" x2="-3.429" y2="1.778" width="0.1524" layer="21"/>
+<wire x1="3.429" y1="1.778" x2="3.683" y2="1.524" width="0.1524" layer="21" curve="-90"/>
+<wire x1="3.429" y1="-1.778" x2="3.683" y2="-1.524" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="-1.524" x2="-3.429" y2="-1.778" width="0.1524" layer="21" curve="90"/>
+<wire x1="-3.683" y1="1.524" x2="-3.429" y2="1.778" width="0.1524" layer="21" curve="-90"/>
+<pad name="1" x="-2.54" y="0" drill="0.8128" shape="octagon"/>
+<pad name="2" x="2.54" y="0" drill="0.8128" shape="octagon"/>
+<text x="-3.556" y="2.159" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-3.556" y="-3.429" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C375-155X418">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 37.5 mm, outline 15.5 x 41.8 mm</description>
+<wire x1="-20.32" y1="7.62" x2="20.32" y2="7.62" width="0.1524" layer="21"/>
+<wire x1="20.828" y1="7.112" x2="20.828" y2="-7.112" width="0.1524" layer="21"/>
+<wire x1="20.32" y1="-7.62" x2="-20.32" y2="-7.62" width="0.1524" layer="21"/>
+<wire x1="-20.828" y1="-7.112" x2="-20.828" y2="7.112" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="20.32" y1="7.62" x2="20.828" y2="7.112" width="0.1524" layer="21" curve="-90"/>
+<wire x1="20.32" y1="-7.62" x2="20.828" y2="-7.112" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="-7.112" x2="-20.32" y2="-7.62" width="0.1524" layer="21" curve="90"/>
+<wire x1="-20.828" y1="7.112" x2="-20.32" y2="7.62" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-16.002" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="16.002" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-18.796" y="0" drill="1.3208" shape="octagon"/>
+<pad name="2" x="18.796" y="0" drill="1.3208" shape="octagon"/>
+<text x="-20.447" y="8.001" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C075-063X106">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 7.5 mm, outline 6.3 x 10.6 mm</description>
+<wire x1="4.953" y1="3.048" x2="-4.953" y2="3.048" width="0.1524" layer="21"/>
+<wire x1="-5.207" y1="2.794" x2="-5.207" y2="-2.794" width="0.1524" layer="21"/>
+<wire x1="-4.953" y1="-3.048" x2="4.953" y2="-3.048" width="0.1524" layer="21"/>
+<wire x1="5.207" y1="-2.794" x2="5.207" y2="2.794" width="0.1524" layer="21"/>
+<wire x1="4.953" y1="3.048" x2="5.207" y2="2.794" width="0.1524" layer="21" curve="-90"/>
+<wire x1="4.953" y1="-3.048" x2="5.207" y2="-2.794" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.207" y1="-2.794" x2="-4.953" y2="-3.048" width="0.1524" layer="21" curve="90"/>
+<wire x1="-5.207" y1="2.794" x2="-4.953" y2="3.048" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-1.27" y1="0" x2="2.667" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.667" y1="0" x2="-2.159" y2="0" width="0.1524" layer="21"/>
+<wire x1="-2.159" y1="1.27" x2="-2.159" y2="0" width="0.4064" layer="21"/>
+<wire x1="-2.159" y1="0" x2="-2.159" y2="-1.27" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="1.27" x2="-1.27" y2="0" width="0.4064" layer="21"/>
+<wire x1="-1.27" y1="0" x2="-1.27" y2="-1.27" width="0.4064" layer="21"/>
+<pad name="1" x="-3.81" y="0" drill="0.9144" shape="octagon"/>
+<pad name="2" x="3.81" y="0" drill="0.9144" shape="octagon"/>
+<text x="-4.826" y="3.429" size="1.27" layer="25" ratio="10">&gt;NAME</text>
+<text x="-0.635" y="-2.54" size="1.27" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-154X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 15.4 x 31.6 mm</description>
+<wire x1="-15.24" y1="7.62" x2="15.24" y2="7.62" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="7.112" x2="15.748" y2="-7.112" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-7.62" x2="-15.24" y2="-7.62" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-7.112" x2="-15.748" y2="7.112" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="7.62" x2="15.748" y2="7.112" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-7.62" x2="15.748" y2="-7.112" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-7.112" x2="-15.24" y2="-7.62" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="7.112" x2="-15.24" y2="7.62" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="8.001" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C275-173X316">
+<description>&lt;b&gt;CAPACITOR&lt;/b&gt;&lt;p&gt;
+grid 27.5 mm, outline 17.3 x 31.6 mm</description>
+<wire x1="-15.24" y1="8.509" x2="15.24" y2="8.509" width="0.1524" layer="21"/>
+<wire x1="15.748" y1="8.001" x2="15.748" y2="-8.001" width="0.1524" layer="21"/>
+<wire x1="15.24" y1="-8.509" x2="-15.24" y2="-8.509" width="0.1524" layer="21"/>
+<wire x1="-15.748" y1="-8.001" x2="-15.748" y2="8.001" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="1.905" x2="-6.731" y2="0" width="0.4064" layer="21"/>
+<wire x1="-6.731" y1="0" x2="-6.731" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="1.905" x2="-7.62" y2="0" width="0.4064" layer="21"/>
+<wire x1="-7.62" y1="0" x2="-7.62" y2="-1.905" width="0.4064" layer="21"/>
+<wire x1="15.24" y1="8.509" x2="15.748" y2="8.001" width="0.1524" layer="21" curve="-90"/>
+<wire x1="15.24" y1="-8.509" x2="15.748" y2="-8.001" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="-8.001" x2="-15.24" y2="-8.509" width="0.1524" layer="21" curve="90"/>
+<wire x1="-15.748" y1="8.001" x2="-15.24" y2="8.509" width="0.1524" layer="21" curve="-90"/>
+<wire x1="-11.557" y1="0" x2="-7.62" y2="0" width="0.1524" layer="21"/>
+<wire x1="-6.731" y1="0" x2="11.557" y2="0" width="0.1524" layer="21"/>
+<pad name="1" x="-13.716" y="0" drill="1.1938" shape="octagon"/>
+<pad name="2" x="13.716" y="0" drill="1.1938" shape="octagon"/>
+<text x="-15.24" y="8.89" size="1.778" layer="25" ratio="10">&gt;NAME</text>
+<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">&gt;VALUE</text>
+</package>
+<package name="C0402K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 0204 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 1005</description>
+<wire x1="-0.425" y1="0.2" x2="0.425" y2="0.2" width="0.1016" layer="51"/>
+<wire x1="0.425" y1="-0.2" x2="-0.425" y2="-0.2" width="0.1016" layer="51"/>
+<smd name="1" x="-0.6" y="0" dx="0.925" dy="0.74" layer="1"/>
+<smd name="2" x="0.6" y="0" dx="0.925" dy="0.74" layer="1"/>
+<text x="-0.5" y="0.425" size="1.016" layer="25">&gt;NAME</text>
+<text x="-0.5" y="-1.45" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.5" y1="-0.25" x2="-0.225" y2="0.25" layer="51"/>
+<rectangle x1="0.225" y1="-0.25" x2="0.5" y2="0.25" layer="51"/>
+</package>
+<package name="C0603K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 0603 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 1608</description>
+<wire x1="-0.725" y1="0.35" x2="0.725" y2="0.35" width="0.1016" layer="51"/>
+<wire x1="0.725" y1="-0.35" x2="-0.725" y2="-0.35" width="0.1016" layer="51"/>
+<smd name="1" x="-0.875" y="0" dx="1.05" dy="1.08" layer="1"/>
+<smd name="2" x="0.875" y="0" dx="1.05" dy="1.08" layer="1"/>
+<text x="-0.8" y="0.65" size="1.016" layer="25">&gt;NAME</text>
+<text x="-0.8" y="-1.65" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-0.8" y1="-0.4" x2="-0.45" y2="0.4" layer="51"/>
+<rectangle x1="0.45" y1="-0.4" x2="0.8" y2="0.4" layer="51"/>
+</package>
+<package name="C0805K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 0805 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 2012</description>
+<wire x1="-0.925" y1="0.6" x2="0.925" y2="0.6" width="0.1016" layer="51"/>
+<wire x1="0.925" y1="-0.6" x2="-0.925" y2="-0.6" width="0.1016" layer="51"/>
+<smd name="1" x="-1" y="0" dx="1.3" dy="1.6" layer="1"/>
+<smd name="2" x="1" y="0" dx="1.3" dy="1.6" layer="1"/>
+<text x="-1" y="0.875" size="1.016" layer="25">&gt;NAME</text>
+<text x="-1" y="-1.9" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-1" y1="-0.65" x2="-0.5" y2="0.65" layer="51"/>
+<rectangle x1="0.5" y1="-0.65" x2="1" y2="0.65" layer="51"/>
+</package>
+<package name="C1206K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 1206 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 3216</description>
+<wire x1="-1.525" y1="0.75" x2="1.525" y2="0.75" width="0.1016" layer="51"/>
+<wire x1="1.525" y1="-0.75" x2="-1.525" y2="-0.75" width="0.1016" layer="51"/>
+<smd name="1" x="-1.5" y="0" dx="1.5" dy="2" layer="1"/>
+<smd name="2" x="1.5" y="0" dx="1.5" dy="2" layer="1"/>
+<text x="-1.6" y="1.1" size="1.016" layer="25">&gt;NAME</text>
+<text x="-1.6" y="-2.1" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.6" y1="-0.8" x2="-1.1" y2="0.8" layer="51"/>
+<rectangle x1="1.1" y1="-0.8" x2="1.6" y2="0.8" layer="51"/>
+</package>
+<package name="C1210K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 1210 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 3225</description>
+<wire x1="-1.525" y1="1.175" x2="1.525" y2="1.175" width="0.1016" layer="51"/>
+<wire x1="1.525" y1="-1.175" x2="-1.525" y2="-1.175" width="0.1016" layer="51"/>
+<smd name="1" x="-1.5" y="0" dx="1.5" dy="2.9" layer="1"/>
+<smd name="2" x="1.5" y="0" dx="1.5" dy="2.9" layer="1"/>
+<text x="-1.6" y="1.55" size="1.016" layer="25">&gt;NAME</text>
+<text x="-1.6" y="-2.575" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.6" y1="-1.25" x2="-1.1" y2="1.25" layer="51"/>
+<rectangle x1="1.1" y1="-1.25" x2="1.6" y2="1.25" layer="51"/>
+</package>
+<package name="C1812K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 1812 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 4532</description>
+<wire x1="-2.175" y1="1.525" x2="2.175" y2="1.525" width="0.1016" layer="51"/>
+<wire x1="2.175" y1="-1.525" x2="-2.175" y2="-1.525" width="0.1016" layer="51"/>
+<smd name="1" x="-2.05" y="0" dx="1.8" dy="3.7" layer="1"/>
+<smd name="2" x="2.05" y="0" dx="1.8" dy="3.7" layer="1"/>
+<text x="-2.25" y="1.95" size="1.016" layer="25">&gt;NAME</text>
+<text x="-2.25" y="-2.975" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.25" y1="-1.6" x2="-1.65" y2="1.6" layer="51"/>
+<rectangle x1="1.65" y1="-1.6" x2="2.25" y2="1.6" layer="51"/>
+</package>
+<package name="C1825K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 1825 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 4564</description>
+<wire x1="-1.525" y1="3.125" x2="1.525" y2="3.125" width="0.1016" layer="51"/>
+<wire x1="1.525" y1="-3.125" x2="-1.525" y2="-3.125" width="0.1016" layer="51"/>
+<smd name="1" x="-1.5" y="0" dx="1.8" dy="6.9" layer="1"/>
+<smd name="2" x="1.5" y="0" dx="1.8" dy="6.9" layer="1"/>
+<text x="-1.6" y="3.55" size="1.016" layer="25">&gt;NAME</text>
+<text x="-1.6" y="-4.625" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-1.6" y1="-3.2" x2="-1.1" y2="3.2" layer="51"/>
+<rectangle x1="1.1" y1="-3.2" x2="1.6" y2="3.2" layer="51"/>
+</package>
+<package name="C2220K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 2220 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 5650</description>
+<wire x1="-2.725" y1="2.425" x2="2.725" y2="2.425" width="0.1016" layer="51"/>
+<wire x1="2.725" y1="-2.425" x2="-2.725" y2="-2.425" width="0.1016" layer="51"/>
+<smd name="1" x="-2.55" y="0" dx="1.85" dy="5.5" layer="1"/>
+<smd name="2" x="2.55" y="0" dx="1.85" dy="5.5" layer="1"/>
+<text x="-2.8" y="2.95" size="1.016" layer="25">&gt;NAME</text>
+<text x="-2.8" y="-3.975" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.8" y1="-2.5" x2="-2.2" y2="2.5" layer="51"/>
+<rectangle x1="2.2" y1="-2.5" x2="2.8" y2="2.5" layer="51"/>
+</package>
+<package name="C2225K">
+<description>&lt;b&gt;Ceramic Chip Capacitor KEMET 2225 Reflow solder&lt;/b&gt;&lt;p&gt;
+Metric Code Size 5664</description>
+<wire x1="-2.725" y1="3.075" x2="2.725" y2="3.075" width="0.1016" layer="51"/>
+<wire x1="2.725" y1="-3.075" x2="-2.725" y2="-3.075" width="0.1016" layer="51"/>
+<smd name="1" x="-2.55" y="0" dx="1.85" dy="6.8" layer="1"/>
+<smd name="2" x="2.55" y="0" dx="1.85" dy="6.8" layer="1"/>
+<text x="-2.8" y="3.6" size="1.016" layer="25">&gt;NAME</text>
+<text x="-2.8" y="-4.575" size="1.016" layer="27">&gt;VALUE</text>
+<rectangle x1="-2.8" y1="-3.15" x2="-2.2" y2="3.15" layer="51"/>
+<rectangle x1="2.2" y1="-3.15" x2="2.8" y2="3.15" layer="51"/>
+</package>
+</packages>
+<symbols>
+<symbol name="C-EU">
+<wire x1="0" y1="0" x2="0" y2="-0.508" width="0.1524" layer="94"/>
+<wire x1="0" y1="-2.54" x2="0" y2="-2.032" width="0.1524" layer="94"/>
+<text x="1.524" y="0.381" size="1.778" layer="95">&gt;NAME</text>
+<text x="1.524" y="-4.699" size="1.778" layer="96">&gt;VALUE</text>
+<rectangle x1="-2.032" y1="-2.032" x2="2.032" y2="-1.524" layer="94"/>
+<rectangle x1="-2.032" y1="-1.016" x2="2.032" y2="-0.508" layer="94"/>
+<pin name="1" x="0" y="2.54" visible="off" length="short" direction="pas" swaplevel="1" rot="R270"/>
+<pin name="2" x="0" y="-5.08" visible="off" length="short" direction="pas" swaplevel="1" rot="R90"/>
+</symbol>
+</symbols>
+<devicesets>
+<deviceset name="C-EU" prefix="C" uservalue="yes">
+<description>&lt;B&gt;CAPACITOR&lt;/B&gt;, European symbol</description>
+<gates>
+<gate name="G$1" symbol="C-EU" x="0" y="0"/>
+</gates>
+<devices>
+<device name="C0402" package="C0402">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0504" package="C0504">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0603" package="C0603">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0805" package="C0805">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1005" package="C1005">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1206" package="C1206">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1210" package="C1210">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1310" package="C1310">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1608" package="C1608">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1812" package="C1812">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1825" package="C1825">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C2012" package="C2012">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C3216" package="C3216">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C3225" package="C3225">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C4532" package="C4532">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C4564" package="C4564">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-024X044" package="C025-024X044">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-025X050" package="C025-025X050">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-030X050" package="C025-030X050">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-040X050" package="C025-040X050">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-050X050" package="C025-050X050">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025-060X050" package="C025-060X050">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C025_050-024X070" package="C025_050-024X070">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025_050-025X075" package="C025_050-025X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025_050-035X075" package="C025_050-035X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025_050-045X075" package="C025_050-045X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="025_050-055X075" package="C025_050-055X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-024X044" package="C050-024X044">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-025X075" package="C050-025X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-045X075" package="C050-045X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-030X075" package="C050-030X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-050X075" package="C050-050X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-055X075" package="C050-055X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-075X075" package="C050-075X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050H075X075" package="C050H075X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="075-032X103" package="C075-032X103">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="075-042X103" package="C075-042X103">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="075-052X106" package="C075-052X106">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="102-043X133" package="C102-043X133">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="102-054X133" package="C102-054X133">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="102-064X133" package="C102-064X133">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="102_152-062X184" package="C102_152-062X184">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="150-054X183" package="C150-054X183">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="150-064X183" package="C150-064X183">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="150-072X183" package="C150-072X183">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="150-084X183" package="C150-084X183">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="150-091X182" package="C150-091X182">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="225-062X268" package="C225-062X268">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="225-074X268" package="C225-074X268">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="225-087X268" package="C225-087X268">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="225-108X268" package="C225-108X268">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="225-113X268" package="C225-113X268">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-093X316" package="C275-093X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-113X316" package="C275-113X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-134X316" package="C275-134X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-205X316" package="C275-205X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="325-137X374" package="C325-137X374">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="325-162X374" package="C325-162X374">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="325-182X374" package="C325-182X374">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="375-192X418" package="C375-192X418">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="375-203X418" package="C375-203X418">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="050-035X075" package="C050-035X075">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="375-155X418" package="C375-155X418">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="075-063X106" package="C075-063X106">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-154X316" package="C275-154X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="275-173X316" package="C275-173X316">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0402K" package="C0402K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0603K" package="C0603K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C0805K" package="C0805K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1206K" package="C1206K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1210K" package="C1210K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1812K" package="C1812K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C1825K" package="C1825K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C2220K" package="C2220K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+<device name="C2225K" package="C2225K">
+<connects>
+<connect gate="G$1" pin="1" pad="1"/>
+<connect gate="G$1" pin="2" pad="2"/>
+</connects>
+<technologies>
+<technology name=""/>
+</technologies>
+</device>
+</devices>
+</deviceset>
+</devicesets>
+</library>
+</libraries>
+<attributes>
+</attributes>
+<variantdefs>
+</variantdefs>
+<classes>
+<class number="0" name="default" width="0" drill="0">
+</class>
+</classes>
+<parts>
+<part name="X1" library="con-chipcard-iso7816" deviceset="CHIPCARD-ISO-7816" device="ISO"/>
+<part name="IC1" library="atmel" deviceset="TINY10" device="S"/>
+<part name="TP1" library="testpad" deviceset="TP" device="TP10SQ"/>
+<part name="TP2" library="testpad" deviceset="TP" device="TP10SQ"/>
+<part name="TP3" library="testpad" deviceset="TP" device="TP10SQ"/>
+<part name="C1" library="resistor" deviceset="C-EU" device="C0805"/>
+<part name="TP4" library="testpad" deviceset="TP" device="TP10SQ">
+<attribute name="TP_SIGNAL_NAME" value=""/>
+</part>
+<part name="TP5" library="testpad" deviceset="TP" device="TP10SQ">
+<attribute name="TP_SIGNAL_NAME" value=""/>
+</part>
+<part name="TP6" library="testpad" deviceset="TP" device="TP10SQ">
+<attribute name="TP_SIGNAL_NAME" value=""/>
+</part>
+<part name="IC2" library="atmel" deviceset="TINY10" device="P"/>
+<part name="C2" library="resistor" deviceset="C-EU" device="C0805"/>
+<part name="TP7" library="testpad" deviceset="TP" device="TP10SQ">
+<attribute name="TP_SIGNAL_NAME" value=""/>
+</part>
+</parts>
+<sheets>
+<sheet>
+<plain>
+</plain>
+<instances>
+<instance part="X1" gate="G$1" x="35.56" y="60.96"/>
+<instance part="IC1" gate="G$1" x="35.56" y="33.02"/>
+<instance part="TP1" gate="G$1" x="68.58" y="27.94" rot="R270"/>
+<instance part="TP2" gate="G$1" x="68.58" y="30.48" rot="R270"/>
+<instance part="TP3" gate="G$1" x="68.58" y="33.02" rot="R270"/>
+<instance part="C1" gate="G$1" x="0" y="30.48" rot="R90"/>
+<instance part="TP4" gate="G$1" x="63.5" y="48.26" rot="R270"/>
+<instance part="TP5" gate="G$1" x="7.62" y="33.02"/>
+<instance part="TP6" gate="G$1" x="7.62" y="25.4" rot="R180"/>
+<instance part="IC2" gate="G$1" x="35.56" y="0"/>
+<instance part="C2" gate="G$1" x="7.62" y="-2.54" rot="R90"/>
+<instance part="TP7" gate="G$1" x="68.58" y="35.56" rot="R270"/>
+</instances>
+<busses>
+</busses>
+<nets>
+<net name="RST" class="0">
+<segment>
+<pinref part="IC1" gate="G$1" pin="(RESET)PB5"/>
+<wire x1="53.34" y1="40.64" x2="55.88" y2="40.64" width="0.1524" layer="91"/>
+<wire x1="55.88" y1="40.64" x2="60.96" y2="40.64" width="0.1524" layer="91"/>
+<wire x1="60.96" y1="40.64" x2="60.96" y2="48.26" width="0.1524" layer="91"/>
+<wire x1="60.96" y1="48.26" x2="7.62" y2="48.26" width="0.1524" layer="91"/>
+<wire x1="7.62" y1="48.26" x2="7.62" y2="60.96" width="0.1524" layer="91"/>
+<pinref part="X1" gate="G$1" pin="RST"/>
+<wire x1="7.62" y1="60.96" x2="22.86" y2="60.96" width="0.1524" layer="91"/>
+<pinref part="TP4" gate="G$1" pin="TP"/>
+<junction x="60.96" y="48.26"/>
+<wire x1="55.88" y1="40.64" x2="55.88" y2="7.62" width="0.1524" layer="91"/>
+<pinref part="IC2" gate="G$1" pin="(RESET)PB5"/>
+<wire x1="55.88" y1="7.62" x2="53.34" y2="7.62" width="0.1524" layer="91"/>
+<junction x="55.88" y="40.64"/>
+</segment>
+</net>
+<net name="CLK" class="0">
+<segment>
+<wire x1="66.04" y1="35.56" x2="66.04" y2="50.8" width="0.1524" layer="91"/>
+<wire x1="66.04" y1="50.8" x2="10.16" y2="50.8" width="0.1524" layer="91"/>
+<wire x1="10.16" y1="50.8" x2="10.16" y2="58.42" width="0.1524" layer="91"/>
+<pinref part="X1" gate="G$1" pin="CLK"/>
+<wire x1="10.16" y1="58.42" x2="22.86" y2="58.42" width="0.1524" layer="91"/>
+<pinref part="IC1" gate="G$1" pin="(XTAL1)PB3"/>
+<wire x1="66.04" y1="35.56" x2="60.96" y2="35.56" width="0.1524" layer="91"/>
+<wire x1="60.96" y1="35.56" x2="53.34" y2="35.56" width="0.1524" layer="91"/>
+<wire x1="60.96" y1="35.56" x2="60.96" y2="2.54" width="0.1524" layer="91"/>
+<pinref part="IC2" gate="G$1" pin="(XTAL1)PB3"/>
+<wire x1="60.96" y1="2.54" x2="53.34" y2="2.54" width="0.1524" layer="91"/>
+<junction x="60.96" y="35.56"/>
+<pinref part="TP7" gate="G$1" pin="TP"/>
+<junction x="66.04" y="35.56"/>
+</segment>
+</net>
+<net name="VCC" class="0">
+<segment>
+<pinref part="X1" gate="G$1" pin="VCC"/>
+<wire x1="22.86" y1="63.5" x2="5.08" y2="63.5" width="0.1524" layer="91"/>
+<wire x1="5.08" y1="63.5" x2="5.08" y2="30.48" width="0.1524" layer="91"/>
+<pinref part="IC1" gate="G$1" pin="VCC"/>
+<wire x1="5.08" y1="30.48" x2="7.62" y2="30.48" width="0.1524" layer="91"/>
+<pinref part="C1" gate="G$1" pin="2"/>
+<junction x="5.08" y="30.48"/>
+<pinref part="TP5" gate="G$1" pin="TP"/>
+<junction x="7.62" y="30.48"/>
+<wire x1="7.62" y1="30.48" x2="12.7" y2="30.48" width="0.1524" layer="91"/>
+<wire x1="12.7" y1="30.48" x2="17.78" y2="30.48" width="0.1524" layer="91"/>
+<wire x1="12.7" y1="30.48" x2="12.7" y2="-2.54" width="0.1524" layer="91"/>
+<pinref part="IC2" gate="G$1" pin="VCC"/>
+<wire x1="12.7" y1="-2.54" x2="17.78" y2="-2.54" width="0.1524" layer="91"/>
+<junction x="12.7" y="30.48"/>
+<pinref part="C2" gate="G$1" pin="2"/>
+<junction x="12.7" y="-2.54"/>
+</segment>
+</net>
+<net name="GND" class="0">
+<segment>
+<pinref part="IC1" gate="G$1" pin="GND"/>
+<wire x1="7.62" y1="27.94" x2="-2.54" y2="27.94" width="0.1524" layer="91"/>
+<wire x1="-2.54" y1="27.94" x2="-2.54" y2="30.48" width="0.1524" layer="91"/>
+<wire x1="-2.54" y1="30.48" x2="-2.54" y2="66.04" width="0.1524" layer="91"/>
+<wire x1="-2.54" y1="66.04" x2="63.5" y2="66.04" width="0.1524" layer="91"/>
+<wire x1="63.5" y1="66.04" x2="63.5" y2="63.5" width="0.1524" layer="91"/>
+<pinref part="X1" gate="G$1" pin="GND"/>
+<wire x1="63.5" y1="63.5" x2="48.26" y2="63.5" width="0.1524" layer="91"/>
+<pinref part="C1" gate="G$1" pin="1"/>
+<junction x="-2.54" y="30.48"/>
+<pinref part="TP6" gate="G$1" pin="TP"/>
+<junction x="7.62" y="27.94"/>
+<wire x1="7.62" y1="27.94" x2="15.24" y2="27.94" width="0.1524" layer="91"/>
+<wire x1="15.24" y1="27.94" x2="17.78" y2="27.94" width="0.1524" layer="91"/>
+<wire x1="15.24" y1="27.94" x2="15.24" y2="-5.08" width="0.1524" layer="91"/>
+<pinref part="IC2" gate="G$1" pin="GND"/>
+<wire x1="15.24" y1="-5.08" x2="17.78" y2="-5.08" width="0.1524" layer="91"/>
+<junction x="15.24" y="27.94"/>
+<pinref part="C2" gate="G$1" pin="1"/>
+<wire x1="5.08" y1="-2.54" x2="2.54" y2="-2.54" width="0.1524" layer="91"/>
+<wire x1="2.54" y1="-2.54" x2="2.54" y2="-5.08" width="0.1524" layer="91"/>
+<wire x1="2.54" y1="-5.08" x2="15.24" y2="-5.08" width="0.1524" layer="91"/>
+<junction x="15.24" y="-5.08"/>
+</segment>
+</net>
+<net name="DAT" class="0">
+<segment>
+<pinref part="X1" gate="G$1" pin="I/O"/>
+<wire x1="71.12" y1="58.42" x2="48.26" y2="58.42" width="0.1524" layer="91"/>
+<wire x1="71.12" y1="58.42" x2="71.12" y2="38.1" width="0.1524" layer="91"/>
+<pinref part="IC1" gate="G$1" pin="(XTAL2)PB4"/>
+<wire x1="71.12" y1="38.1" x2="58.42" y2="38.1" width="0.1524" layer="91"/>
+<wire x1="58.42" y1="38.1" x2="53.34" y2="38.1" width="0.1524" layer="91"/>
+<wire x1="58.42" y1="38.1" x2="58.42" y2="5.08" width="0.1524" layer="91"/>
+<pinref part="IC2" gate="G$1" pin="(XTAL2)PB4"/>
+<wire x1="58.42" y1="5.08" x2="53.34" y2="5.08" width="0.1524" layer="91"/>
+<junction x="58.42" y="38.1"/>
+</segment>
+</net>
+<net name="PB0" class="0">
+<segment>
+<pinref part="IC1" gate="G$1" pin="(AIN0)PB0"/>
+<pinref part="TP1" gate="G$1" pin="TP"/>
+<wire x1="66.04" y1="27.94" x2="53.34" y2="27.94" width="0.1524" layer="91"/>
+</segment>
+</net>
+<net name="PB1" class="0">
+<segment>
+<pinref part="IC1" gate="G$1" pin="(AIN1)PB1"/>
+<pinref part="TP2" gate="G$1" pin="TP"/>
+<wire x1="66.04" y1="30.48" x2="53.34" y2="30.48" width="0.1524" layer="91"/>
+</segment>
+</net>
+<net name="PB2" class="0">
+<segment>
+<pinref part="IC1" gate="G$1" pin="(T0)PB2"/>
+<pinref part="TP3" gate="G$1" pin="TP"/>
+<wire x1="66.04" y1="33.02" x2="53.34" y2="33.02" width="0.1524" layer="91"/>
+</segment>
+</net>
+</nets>
+</sheet>
+</sheets>
+</schematic>
+</drawing>
+</eagle>
diff --git a/sim/Makefile.am b/sim/Makefile.am
deleted file mode 100644
index b43e85f..0000000
--- a/sim/Makefile.am
+++ /dev/null
@@ -1,10 +0,0 @@
-AM_CPPFLAGS = -Wall -Wextra -g $(all_includes)
-
-bin_PROGRAMS = \
- cnetz_sim
-
-cnetz_sim_SOURCES = \
- sim.c
-cnetz_sim_LDADD = \
- $(COMMON_LA)
-
diff --git a/sim/README b/sim/README
deleted file mode 100644
index adbae3b..0000000
--- a/sim/README
+++ /dev/null
@@ -1,15 +0,0 @@
-This is a generator for the C-Netz Sim Card
-"Berechtigungskarte als Speicherkarte".
-
-The Smart Card "Berechtigungskarte als Prozessorkarte" is not supported.
-
-After generation, the hex data can be copied to the data array of simcard.ino
-and written to an SLE4428 or compatible.
-
-Note: The SLE card must not have protected serial number area. (ATR area)
-Also the card must show all 416 written bits via ATR, not only 32 bits.
-
-Tested:
-Works with BSA 51
-Does not work with all other phones I have.
-
diff --git a/sim/sim.c b/sim/sim.c
deleted file mode 100644
index 02e9bc6..0000000
--- a/sim/sim.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* SIM Card for C-Netz "Berechtigungskarte als Speicherkarte"
- *
- * (C) 2016 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 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/>.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-
-/* return 1, if 1-bits are odd, so parity becomes even */
-static int gen_parity(uint8_t *bits)
-{
- int i;
- uint8_t parity = 0;
-
- for (i = 0; i < 8; i++)
- parity ^= (bits[i] & 1);
-
- return parity;
-}
-
-static uint8_t *gen_memory(uint8_t futln_nat, uint8_t futln_fuvst, uint16_t futln_rest, uint16_t sicherungscode, uint16_t sonderheitsschluessel)
-{
- static uint8_t memory[416];
- int i;
-
- /* meaningless data */
- for (i = 0; i <= 10; i++)
- memory[i] = 1;
-
- /* magic data */
- memory[11] = 0;
- memory[12] = 1;
- memory[13] = 1;
- memory[14] = 1;
- memory[15] = 1;
-
- /* meaningless data */
- for (i = 16; i <= 17; i++)
- memory[i] = 0;
-
- /* magic data */
- memory[18] = 1;
- memory[19] = 1;
- memory[20] = 1;
-
- /* magic data */
- memory[21] = 0;
- memory[22] = 1;
- memory[23] = 0;
-
- /* meaningless data */
- for (i = 24; i <= 113; i++)
- memory[i] = 1;
-
- /* number */
- for (i = 114; i <= 116; i++)
- memory[i] = (futln_nat >> (i - 114)) & 1;
- for (i = 117; i <= 121; i++)
- memory[i] = (futln_fuvst >> (i - 117)) & 1;
- memory[122] = gen_parity(memory + 114);
- for (i = 123; i <= 130; i++)
- memory[i] = (futln_rest >> (i - 123)) & 1;
- memory[131] = gen_parity(memory + 123);
- for (i = 132; i <= 139; i++)
- memory[i] = (futln_rest >> (i - 132 + 8)) & 1;
- memory[140] = gen_parity(memory + 132);
-
- /* sicherungscode */
- for (i = 141; i <= 148; i++)
- memory[i] = (sicherungscode >> (i - 141)) & 1;
- memory[149] = gen_parity(memory + 141);
- for (i = 150; i <= 157; i++)
- memory[i] = (sicherungscode >> (i - 150 + 8)) & 1;
- memory[158] = gen_parity(memory + 150);
-
- /* sonderheitsschluessel */
- for (i = 159; i <= 166; i++)
- memory[i] = (sonderheitsschluessel >> (i - 159)) & 1;
- memory[167] = gen_parity(memory + 159);
- for (i = 168; i <= 175; i++)
- memory[i] = (sonderheitsschluessel >> (i - 168 + 8)) & 1;
- memory[176] = gen_parity(memory + 168);
-
- /* meaningless data */
- for (i = 177; i <= 351; i++)
- memory[i] = 1;
-
- /* all zero */
- for (i = 352; i <= 415; i++)
- memory[i] = 0;
-
- return memory;
-}
-
-int main(int argc, char *argv[])
-{
-
- if (argc <= 5) {
- printf("Usage: %s <futln_nat> <futln_fuvst> <futln_rest> <sicherungscode> <sonderheitsschluessel>\n", argv[0]);
- return 0;
- }
- int i;
- uint8_t futln_nat = atoi(argv[1]);
- uint8_t futln_fuvst = atoi(argv[2]);
- uint16_t futln_rest = atoi(argv[3]);
- uint16_t sicherungscode = atoi(argv[4]);
- uint16_t sonderheitsschluessel = atoi(argv[5]);
- printf("nat=%d\n", futln_nat);
- printf("fufvt=%d\n", futln_fuvst);
- printf("rest=%d\n", futln_rest);
- printf("sicherungscode=%d\n", sicherungscode);
- printf("sonderheitsschluessel=%d\n", sonderheitsschluessel);
-
- printf("Telefonnummer: %d%d%05d\n", futln_nat, futln_fuvst, futln_rest);
-
- uint8_t *bits = gen_memory(futln_nat, futln_fuvst, futln_rest, sicherungscode, sonderheitsschluessel);
- for (i = 0; i < 52; i++) {
-//printf("%d %d %d %d %d %d %d %d\n", bits[0], bits[1], bits[2] ,bits[3] ,bits[4] ,bits[5] ,bits[6] ,bits[7]);
- printf("0x%02x, ", bits[0] + (bits[1] << 1) + (bits[2] << 2) + (bits[3] << 3) + (bits[4] << 4) + (bits[5] << 5) + (bits[6] << 6) + (bits[7] << 7));
-//printf("\n");
- bits += 8;
- if ((i & 7) == 7)
- printf("\n");
- }
- printf("\n");
-
- return 0;
-}
-
diff --git a/src/Makefile.am b/src/Makefile.am
index 3950a81..3bd7136 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,8 +24,12 @@ SUBDIRS = \
libfilter \
libwave \
libfft \
- libmncc \
- libclipper
+ libclipper \
+ libserial \
+ libv27 \
+ libmtp \
+ libosmocc \
+ libg711
if HAVE_ALSA
SUBDIRS += \
@@ -48,7 +52,20 @@ SUBDIRS += \
r2000 \
imts \
jolly \
+ eurosignal \
tv \
radio \
+ zeitansage \
+ sim \
+ fuvst
+
+if HAVE_ALSA
+if HAVE_FUSE
+SUBDIRS += \
+ datenklo
+endif
+endif
+
+SUBDIRS += \
test
diff --git a/src/amps/Makefile.am b/src/amps/Makefile.am
index c64ccef..3d91473 100644
--- a/src/amps/Makefile.am
+++ b/src/amps/Makefile.am
@@ -32,6 +32,7 @@ amps_LDADD = \
$(top_builddir)/src/liboptions/liboptions.a \
$(top_builddir)/src/libdebug/libdebug.a \
$(top_builddir)/src/libmobile/libmobile.a \
+ $(top_builddir)/src/libosmocc/libosmocc.a \
$(top_builddir)/src/libdisplay/libdisplay.a \
$(top_builddir)/src/libcompandor/libcompandor.a \
$(top_builddir)/src/libgoertzel/libgoertzel.a \
@@ -42,8 +43,8 @@ amps_LDADD = \
$(top_builddir)/src/libfm/libfm.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libwave/libwave.a \
- $(top_builddir)/src/libmncc/libmncc.a \
$(top_builddir)/src/libsample/libsample.a \
+ $(top_builddir)/src/libg711/libg711.a \
-lm
if HAVE_ALSA
@@ -55,6 +56,7 @@ endif
if HAVE_SDR
amps_LDADD += \
$(top_builddir)/src/libsdr/libsdr.a \
+ $(top_builddir)/src/libam/libam.a \
$(top_builddir)/src/libfft/libfft.a \
$(UHD_LIBS) \
$(SOAPY_LIBS)
diff --git a/src/amps/amps.c b/src/amps/amps.c
index 4206adb..8ab3e56 100644
--- a/src/amps/amps.c
+++ b/src/amps/amps.c
@@ -45,7 +45,8 @@
#include "../libsample/sample.h"
#include "../libdebug/debug.h"
#include "../libmobile/call.h"
-#include "../libmncc/cause.h"
+#include "../libmobile/cause.h"
+#include "../libosmocc/message.h"
#include "amps.h"
#include "dsp.h"
#include "frame.h"
@@ -63,10 +64,6 @@
#define ALERT_TO 60.0 /* max time to wait for answer */
#define RELEASE_TIMER 5.0 /* max time to send release messages */
-/* Call reference for calls from mobile station to network
- This offset of 0x400000000 is required for MNCC interface. */
-static int new_callref = 0x40000000;
-
/* Convert channel number to frequency number of base station.
Set 'uplink' to 1 to get frequency of mobile station. */
double amps_channel2freq(int channel, int uplink)
@@ -494,7 +491,7 @@ static amps_t *search_pc(void)
}
/* Create transceiver instance and link to a list. */
-int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback)
+int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback)
{
sender_t *sender;
amps_t *amps;
@@ -565,7 +562,7 @@ int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *au
PDEBUG(DAMPS, DEBUG_DEBUG, "Creating 'AMPS' instance for channel = %s of band %s (sample rate %d).\n", kanal, band, samplerate);
/* init general part of transceiver */
- rc = sender_create(&amps->sender, kanal, amps_channel2freq(atoi(kanal), 0), amps_channel2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
+ rc = sender_create(&amps->sender, kanal, amps_channel2freq(atoi(kanal), 0), amps_channel2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, tx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
if (rc < 0) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to init transceiver process!\n");
goto error;
@@ -599,7 +596,7 @@ int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *au
uint32_t min1;
uint16_t min2;
amps_number2min("1234567890", &min1, &min2);
- transaction_t __attribute__((__unused__)) *trans = create_transaction(amps, TRANS_CALL_MO_ASSIGN, min1, min2, 0, 0, 0, amps->sender.kanal);
+ transaction_t __attribute__((__unused__)) *trans = create_transaction(amps, TRANS_CALL_MO_ASSIGN, min1, min2, 0, 0, 0, 0, amps->sender.kanal);
// amps_new_state(amps, STATE_BUSY);
#endif
@@ -820,7 +817,7 @@ _register:
PDEBUG_CHAN(DAMPS, DEBUG_INFO, " -> Home country: %s\n", country);
if (national_number)
PDEBUG_CHAN(DAMPS, DEBUG_INFO, " -> Home number: %s\n", national_number);
- trans = create_transaction(amps, TRANS_REGISTER_ACK, min1, min2, msg_type, ordq, order, 0);
+ trans = create_transaction(amps, TRANS_REGISTER_ACK, min1, min2, esn, msg_type, ordq, order, 0);
if (!trans) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to create transaction\n");
return;
@@ -847,7 +844,7 @@ _register:
PDEBUG(DAMPS, DEBUG_NOTICE, "No free channel, rejecting call\n");
reject:
if (!trans) {
- trans = create_transaction(amps, TRANS_CALL_REJECT, min1, min2, 0, 0, 3, 0);
+ trans = create_transaction(amps, TRANS_CALL_REJECT, min1, min2, esn, 0, 0, 3, 0);
if (!trans) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to create transaction\n");
return;
@@ -862,7 +859,7 @@ reject:
return;
}
if (!trans) {
- trans = create_transaction(amps, TRANS_CALL_MO_ASSIGN, min1, min2, 0, 0, 0, atoi(vc->sender.kanal));
+ trans = create_transaction(amps, TRANS_CALL_MO_ASSIGN, min1, min2, esn, 0, 0, 0, atoi(vc->sender.kanal));
strncpy(trans->dialing, dialing, sizeof(trans->dialing) - 1);
if (!trans) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to create transaction\n");
@@ -957,7 +954,7 @@ inval:
PDEBUG_CHAN(DAMPS, DEBUG_INFO, "Call to mobile station, paging station id '%s'\n", dialing);
/* 6. trying to page mobile station */
- trans = create_transaction(amps, TRANS_PAGE, min1, min2, 0, 0, 0, 0);
+ trans = create_transaction(amps, TRANS_PAGE, min1, min2, 0, 0, 0, 0, 0);
if (!trans) {
PDEBUG(DAMPS, DEBUG_ERROR, "Failed to create transaction\n");
return -CAUSE_TEMPFAIL;
@@ -1076,6 +1073,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
/* Timeout handling */
void transaction_timeout(struct timer *timer)
{
@@ -1118,8 +1117,6 @@ static amps_t *assign_voice_channel(transaction_t *trans)
{
amps_t *amps = trans->amps, *vc;
const char *callerid = amps_min2number(trans->min1, trans->min2);
- int callref = ++new_callref;
- int rc;
vc = search_channel(trans->chan);
if (!vc) {
@@ -1144,15 +1141,11 @@ static amps_t *assign_voice_channel(transaction_t *trans)
amps_flush_other_transactions(vc, trans);
if (!trans->callref) {
+ char esn_text[16];
+ sprintf(esn_text, "%u", trans->esn);
/* setup call */
PDEBUG(DAMPS, DEBUG_INFO, "Setup call to network.\n");
- rc = call_up_setup(callref, callerid, trans->dialing);
- if (rc < 0) {
- PDEBUG(DAMPS, DEBUG_NOTICE, "Call rejected (cause %d), releasing.\n", rc);
- amps_release(trans, 0);
- return NULL;
- }
- trans->callref = callref;
+ trans->callref = call_up_setup(callerid, trans->dialing, OSMO_CC_NETWORK_AMPS_ESN, esn_text);
}
return vc;
diff --git a/src/amps/amps.h b/src/amps/amps.h
index 0bfcf62..579fc0a 100644
--- a/src/amps/amps.h
+++ b/src/amps/amps.h
@@ -2,6 +2,7 @@
#include "../libmobile/sender.h"
#include "../libtimer/timer.h"
#include "../libcompandor/compandor.h"
+typedef struct amps amps_t;
#include "sysinfo.h"
#include "transaction.h"
@@ -35,7 +36,7 @@ enum fsk_rx_sync {
#define FSK_MAX_BITS 1032 /* maximum number of bits to process (FVC with dotting+sync) */
-typedef struct amps {
+struct amps {
sender_t sender;
compandor_t cstate;
int pre_emphasis; /* use pre_emphasis by this instance */
@@ -88,12 +89,12 @@ typedef struct amps {
int fsk_rx_sync_tolerant; /* be more tolerant to sync */
/* the dotting buffer stores the elapsed samples, so we can calculate
* an average time of zero-crossings during dotting sequence.
- * this buffer wrapps every 256 values */
+ * this buffer wrpps every 256 values */
double fsk_rx_dotting_elapsed[256]; /* dotting buffer with elapsed samples since last zero-crossing */
uint8_t fsk_rx_dotting_pos; /* position of next value in dotting buffer */
int fsk_rx_dotting_life; /* counter to expire when no sync was found after dotting */
double fsk_rx_dotting_average; /* last average slope position of dotting sequnece. */
- /* the ex buffer holds the duration of one bit, and wrapps every
+ /* the ex buffer holds the duration of one bit, and wraps every
* bit. */
double fsk_rx_bitcount; /* counts the bit. if it reaches or exceeds 1, the bit is complete and the next bit starts */
sample_t *fsk_rx_window; /* rx buffer for one bit */
@@ -102,7 +103,7 @@ typedef struct amps {
int fsk_rx_window_begin; /* where to begin detecting level */
int fsk_rx_window_end; /* where to end detecting level */
int fsk_rx_window_pos; /* current position in buffer */
- /* the rx bufffer received one frame until rx length */
+ /* the rx buffer received one frame until rx length */
char fsk_rx_frame[FSK_MAX_BITS + 1]; /* +1 because 0-termination */
int fsk_rx_frame_length; /* length of expected frame */
int fsk_rx_frame_count; /* count number of received bit */
@@ -122,7 +123,7 @@ typedef struct amps {
char rx_recc_dialing[33]; /* received dial string */
/* FOCC frame states */
int rx_focc_word_count; /* counts received words */
- int tx_focc_frame_count; /* used to schedule system informations */
+ int tx_focc_frame_count; /* used to schedule system information */
int tx_focc_send; /* if set, send message words */
uint32_t tx_focc_min1; /* mobile id */
uint16_t tx_focc_min2;
@@ -130,8 +131,8 @@ typedef struct amps {
uint8_t tx_focc_msg_type; /* message (3 values) */
uint8_t tx_focc_ordq;
uint8_t tx_focc_order;
- int tx_focc_word_count; /* counts transmitted words in a muli word message */
- int tx_focc_word_repeat; /* countrs repeats of mulit word message */
+ int tx_focc_word_count; /* counts transmitted words in a multi word message */
+ int tx_focc_word_repeat; /* counts repeats of multi word message */
/* FVC frame states */
int tx_fvc_send; /* if set, send message words */
int tx_fvc_chan; /* channel to assign for voice call */
@@ -159,7 +160,7 @@ typedef struct amps {
double when_received; /* time stamp of received frame start (start of dotting) */
double when_transmitted[16]; /* time stamps of filler frames with different count */
int when_count; /* counter of the filler frame */
-} amps_t;
+};
void amps_channel_list(void);
int amps_channel_by_short_name(const char *short_name);
@@ -173,7 +174,7 @@ const char *amps_min12number(uint32_t min1);
void amps_number2min(const char *number, uint32_t *min1, uint16_t *min2);
const char *amps_min2number(uint32_t min1, uint16_t min2);
const char *amps_scm(uint8_t scm);
-int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback);
+int amps_create(const char *kanal, enum amps_chan_type chan_type, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, amps_si *si, uint16_t sid, uint8_t sat, int polarity, int tolerant, int loopback);
void amps_destroy(sender_t *sender);
void amps_go_idle(amps_t *amps);
void amps_rx_signaling_tone(amps_t *amps, int tone, double quality);
diff --git a/src/amps/amps_tacs_main.c b/src/amps/amps_tacs_main.c
index 7edb214..8bb7f6a 100644
--- a/src/amps/amps_tacs_main.c
+++ b/src/amps/amps_tacs_main.c
@@ -227,7 +227,7 @@ static int handle_options(int short_option, int argi, char **argv)
return 1;
}
-int main_amps_tacs(int argc, char *argv[])
+int main_amps_tacs(const char *name, int argc, char *argv[])
{
int rc, argi;
const char *station_id = "";
@@ -264,7 +264,7 @@ int main_amps_tacs(int argc, char *argv[])
}
if (!num_kanal) {
- printf("No channel (\"Kanal\") is specified, I suggest channel %d.\n\n", (!tacs) ? 334 : 323);
+ printf("No channel (\"Kanal\") is specified, I suggest channel %d.\n\n", (!tacs) ? 333 : 323);
print_help(argv[0]);
return 0;
}
@@ -381,7 +381,7 @@ int main_amps_tacs(int argc, char *argv[])
amps_si si;
init_sysinfo(&si, ms_power, ms_power, dtx, dcc, sid >> 1, regh, regr, pureg, pdreg, locaid, regincr, bis);
- rc = amps_create(kanal[i], chan_type[i], audiodev[i], use_sdr, samplerate, rx_gain, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, &si, sid, scc, polarity, tolerant, loopback);
+ rc = amps_create(kanal[i], chan_type[i], audiodev[i], use_sdr, samplerate, rx_gain, tx_gain, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, &si, sid, scc, polarity, tolerant, loopback);
if (rc < 0) {
fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n");
goto fail;
@@ -392,7 +392,7 @@ int main_amps_tacs(int argc, char *argv[])
printf("Base station on channel %s ready (%s), please tune transmitter to %.4f MHz and receiver to %.4f MHz. (%.3f MHz offset)\n", kanal[i], chan_type_long_name(chan_type[i]), amps_channel2freq(atoi(kanal[i]), 0) / 1e6, amps_channel2freq(atoi(kanal[i]), 1) / 1e6, amps_channel2freq(atoi(kanal[i]), 2) / 1e6);
}
- main_mobile(&quit, latency, interval, NULL, station_id, 10);
+ main_mobile(name, &quit, latency, interval, NULL, station_id, 10);
fail:
/* destroy transceiver instance */
diff --git a/src/amps/dsp.c b/src/amps/dsp.c
index f8f7c14..21af267 100644
--- a/src/amps/dsp.c
+++ b/src/amps/dsp.c
@@ -22,7 +22,7 @@
*
* AMPS modulates the carrier frequency. If it is 8 kHz above, it is high level,
* if it is 8 kHz below, it is low level. The bits are coded using Manchester
- * code. A 1 is coded by low level, followed by a hight level. A 0 is coded by
+ * code. A 1 is coded by low level, followed by a high level. A 0 is coded by
* a high level, followed by a low level. This will cause at least one level
* change within each bit. Also the level changes between equal bits, see
* Manchester coding. The bit rate is 10 KHz.
@@ -101,18 +101,18 @@
#define AMPS_MAX_DEVIATION 8000.0
#define AMPS_MAX_MODULATION 10000.0
-#define AMPS_DBM0_DEVIATION 2900.0 /* deviation of dBm0 at 1 kHz */
-#define AMPS_FSK_DEVIATION (8000.0 / AMPS_DBM0_DEVIATION) /* no emphasis */
-#define AMPS_SAT_DEVIATION (2000.0 / AMPS_DBM0_DEVIATION) /* no emphasis */
-#define AMPS_MAX_DISPLAY (10000.0 / AMPS_DBM0_DEVIATION) /* no emphasis */
+#define AMPS_SPEECH_DEVIATION 2900.0 /* deviation of speech at 1 kHz */
+#define AMPS_FSK_DEVIATION (8000.0 / AMPS_SPEECH_DEVIATION) /* no emphasis */
+#define AMPS_SAT_DEVIATION (2000.0 / AMPS_SPEECH_DEVIATION) /* no emphasis */
+#define AMPS_MAX_DISPLAY (10000.0 / AMPS_SPEECH_DEVIATION) /* no emphasis */
#define AMPS_BITRATE 10000
/* for some reason, 4000 Hz deviation works better */
-#define TACS_DBM0_DEVIATION 4000.0 /* 2300 Hz deviation at 1 kHz (according to panasonic manual) */
+#define TACS_SPEECH_DEVIATION 4000.0 /* 2300 Hz deviation at 1 kHz (according to panasonic manual) */
#define TACS_MAX_DEVIATION 6400.0 /* (according to texas instruments and other sources) */
#define TACS_MAX_MODULATION 9500.0 /* (according to panasonic manual) */
-#define TACS_FSK_DEVIATION (6400.0 / TACS_DBM0_DEVIATION) /* no emphasis */
-#define TACS_SAT_DEVIATION (1700.0 / TACS_DBM0_DEVIATION) /* no emphasis (panasonic / TI) */
-#define TACS_MAX_DISPLAY (8000.0 / TACS_DBM0_DEVIATION) /* no emphasis */
+#define TACS_FSK_DEVIATION (6400.0 / TACS_SPEECH_DEVIATION) /* no emphasis */
+#define TACS_SAT_DEVIATION (1700.0 / TACS_SPEECH_DEVIATION) /* no emphasis (panasonic / TI) */
+#define TACS_MAX_DISPLAY (8000.0 / TACS_SPEECH_DEVIATION) /* no emphasis */
#define TACS_BITRATE 8000
#define SAT_DURATION 0.05 /* duration of SAT signal measurement */
#define SAT_QUALITY 0.85 /* quality needed to detect SAT signal */
@@ -202,7 +202,7 @@ int dsp_init_sender(amps_t *amps, int tolerant)
sender_set_fm(&amps->sender,
(!tacs) ? AMPS_MAX_DEVIATION : TACS_MAX_DEVIATION,
(!tacs) ? AMPS_MAX_MODULATION : TACS_MAX_MODULATION,
- (!tacs) ? AMPS_DBM0_DEVIATION : TACS_DBM0_DEVIATION,
+ (!tacs) ? AMPS_SPEECH_DEVIATION : TACS_SPEECH_DEVIATION,
(!tacs) ? AMPS_MAX_DISPLAY : TACS_MAX_DISPLAY);
if (amps->sender.samplerate < 96000) {
@@ -239,7 +239,7 @@ int dsp_init_sender(amps_t *amps, int tolerant)
}
amps->fsk_rx_window = spl;
- /* create devation and ramp */
+ /* create deviation and ramp */
amps->fsk_deviation = (!tacs) ? AMPS_FSK_DEVIATION : TACS_FSK_DEVIATION;
dsp_init_ramp(amps);
@@ -508,7 +508,7 @@ static void fsk_rx_bit(amps_t *amps, sample_t *spl, int len, int pos, int begin,
int bit;
double max = 0, min = 0;
- /* decode one bit. substact the first half from the second half.
+ /* decode one bit. subtract the first half from the second half.
* the result shows the direction of the bit change: 1 == positive.
*/
pos -= begin; /* possible wrap is handled below */
diff --git a/src/amps/frame.c b/src/amps/frame.c
index 496241b..7c99c85 100644
--- a/src/amps/frame.c
+++ b/src/amps/frame.c
@@ -2136,7 +2136,7 @@ struct amps_ie_desc amps_ie_desc[] = {
{ AMPS_IE_AUTH, "AUTH", "Support of authentication procedures described in TIA/EIA-136-510", ie_yes },
{ AMPS_IE_AUTHBS, "AUTHBS", "Output response of the authentication algorithm initiated by the Base Station Challenge Order", ie_hex },
{ AMPS_IE_AUTHR, "AUTHR", "Output response of the authentication algorithm", ie_hex },
- { AMPS_IE_AUTHU, "AUTHU", "Output of the authentication algorithm when responsing to a Unique Challenge Order", ie_hex },
+ { AMPS_IE_AUTHU, "AUTHU", "Output of the authentication algorithm when responding to a Unique Challenge Order", ie_hex },
{ AMPS_IE_Acked_Data, "Acked Data", "Used to identidy the selected privacy mode for a data/fax call", ie_acked_data },
{ AMPS_IE_Async_Data, "Async Data", "Async Data is supported on the current Analog Control Channel", ie_yes },
{ AMPS_IE_BIS, "BIS", "Busy-Idle status field", ie_bis },
@@ -2149,7 +2149,7 @@ struct amps_ie_desc amps_ie_desc[] = {
{ AMPS_IE_CHARACTER_3, "CHARACTER 3", "ASCII Character", ie_ascii },
{ AMPS_IE_CMAC, "CMAC", "Control mobile attenuation field", ie_cmac },
{ AMPS_IE_CMAX_1, "CMAX-1", "CMAX is the number of access channels in the system", ie_cmax },
- { AMPS_IE_COUNT, "COUNT", "A modulo-64 count for authenticaiton", NULL },
+ { AMPS_IE_COUNT, "COUNT", "A modulo-64 count for authentication", NULL },
{ AMPS_IE_CPA, "CPA", "Combined paging/access field", ie_yes },
{ AMPS_IE_CPN_RL, "CPN_RL", "Number of Characters in Calling Party Number", NULL },
{ AMPS_IE_CRC, "CRC", "Identifies used CRC", ie_crc },
@@ -3192,7 +3192,7 @@ static int amps_decode_word_recc(amps_t *amps, uint64_t word, int first)
}
amps->rx_recc_nawc--;
if (amps->rx_recc_nawc != nawc) {
- PDEBUG_CHAN(DFRAME, DEBUG_NOTICE, "Received additional word with NAWC missmatch!\n");
+ PDEBUG_CHAN(DFRAME, DEBUG_NOTICE, "Received additional word with NAWC mismatch!\n");
}
}
@@ -3661,7 +3661,7 @@ static int amps_decode_bits_recc(amps_t *amps, const char *bits, int first)
if (debuglevel == DEBUG_DEBUG || crc_ok_count > 0) {
PDEBUG_CHAN(DFRAME, DEBUG_INFO, "RX RECC: DCC=%d (%d of 5 CRCs are ok)\n", dcc, crc_ok_count);
if (dcc != amps->si.dcc) {
- PDEBUG(DFRAME, DEBUG_INFO, "received DCC=%d missmatches the base station's DCC=%d\n", dcc, amps->si.dcc);
+ PDEBUG(DFRAME, DEBUG_INFO, "received DCC=%d mismatches the base station's DCC=%d\n", dcc, amps->si.dcc);
return 0;
}
}
diff --git a/src/amps/main.c b/src/amps/main.c
index 4c8e445..163626e 100644
--- a/src/amps/main.c
+++ b/src/amps/main.c
@@ -17,5 +17,5 @@ int main(int argc, char *argv[])
init_invalidnumber();
init_congestion();
- return main_amps_tacs(argc, argv);
+ return main_amps_tacs("amps", argc, argv);
}
diff --git a/src/amps/main.h b/src/amps/main.h
index 23acd6a..116b612 100644
--- a/src/amps/main.h
+++ b/src/amps/main.h
@@ -2,5 +2,5 @@
extern const int tacs;
extern const int jtacs;
-int main_amps_tacs(int argc, char *argv[]);
+int main_amps_tacs(const char *name, int argc, char *argv[]);
diff --git a/src/amps/sysinfo.c b/src/amps/sysinfo.c
index 974f35e..1758de7 100644
--- a/src/amps/sysinfo.c
+++ b/src/amps/sysinfo.c
@@ -56,7 +56,7 @@ void init_sysinfo(amps_si *si, int cmac, int vmac, int dtx, int dcc, int sid1, i
/* all words */
si->dcc = dcc;
- /* VC assginment */
+ /* VC assignment */
si->vmac = vmac;
/* filler */
@@ -100,15 +100,15 @@ void init_sysinfo(amps_si *si, int cmac, int vmac, int dtx, int dcc, int sid1, i
for (i = 0; i < 16; i++)
si->overload.olc[i] = 1;
- /* Acces Tyoe */
+ /* Access Tyoe */
/* 'bis' must be 0, so the phone does not wait for busy bit.
* We cannot respond with B/I fast enough due to processing delay.
* So we don't set the B/I bit to busy on reception of message.
* The access type message (including this 'bis') must also be included.
*/
si->acc_type.bis = bis; /* must be clear to ignore B/I bit */
- si->acc_type.pci_home = 0; /* if set, bscap must allso be set */
- si->acc_type.pci_roam = 0; /* if set, bscap must allso be set */
+ si->acc_type.pci_home = 0; /* if set, bscap must also be set */
+ si->acc_type.pci_roam = 0; /* if set, bscap must also be set */
si->acc_type.bspc = 0;
si->acc_type.bscap = 0;
@@ -145,7 +145,7 @@ void prepare_sysinfo(amps_si *si)
si->num = i; /* train is running */
si->count = 0; /* first message in train */
if (i > (int)(sizeof(si->type) / sizeof(si->type[0]))) {
- fprintf(stderr, "si type array overflow, pleas fix!\n");
+ fprintf(stderr, "si type array overflow, please fix!\n");
abort();
}
}
diff --git a/src/amps/sysinfo.h b/src/amps/sysinfo.h
index bf16f65..a4a63e7 100644
--- a/src/amps/sysinfo.h
+++ b/src/amps/sysinfo.h
@@ -63,7 +63,7 @@ struct sysinfo_overload {
uint8_t olc[16];
};
-/* Acces Tyoe */
+/* Access Tyoe */
struct sysinfo_acc_type {
uint8_t bis;
uint8_t pci_home;
@@ -90,7 +90,7 @@ typedef struct system_information {
int overhead_repeat;
/* all words */
uint8_t dcc;
- /* VC assginment */
+ /* VC assignment */
uint8_t vmac;
/* broadcast */
struct sysinfo_filler filler;
diff --git a/src/amps/transaction.c b/src/amps/transaction.c
index 27766c5..2d25313 100644
--- a/src/amps/transaction.c
+++ b/src/amps/transaction.c
@@ -23,7 +23,7 @@
#include "../libsample/sample.h"
#include "../libdebug/debug.h"
#include "../libmobile/call.h"
-#include "../libmncc/cause.h"
+#include "../libmobile/cause.h"
#include "amps.h"
//#include "database.h"
@@ -65,7 +65,7 @@ static const char *trans_state_name(int state)
case TRANS_PAGE_REPLY:
return "PAGE REPLY";
default:
- return "<invald transaction state>";
+ return "<invalid transaction state>";
}
}
@@ -98,18 +98,18 @@ const char *trans_short_state_name(int state)
case TRANS_PAGE_REPLY:
return "PAGE";
default:
- return "<invald transaction state>";
+ return "<invalid transaction state>";
}
}
/* create transaction */
-transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uint32_t min1, uint16_t min2, uint8_t msg_type, uint8_t ordq, uint8_t order, uint16_t chan)
+transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uint32_t min1, uint16_t min2, uint32_t esn, uint8_t msg_type, uint8_t ordq, uint8_t order, uint16_t chan)
{
sender_t *sender;
transaction_t *trans = NULL;
amps_t *search_amps;
- /* search transaction for this subsriber */
+ /* search transaction for this subscriber */
for (sender = sender_head; sender; sender = sender->next) {
search_amps = (amps_t *) sender;
/* search transaction for this callref */
@@ -121,7 +121,7 @@ transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uin
const char *number = amps_min2number(trans->min1, trans->min2);
int old_callref = trans->callref;
amps_t *old_amps = trans->amps;
- PDEBUG(DTRANS, DEBUG_NOTICE, "Found alredy pending transaction for subscriber '%s', deleting!\n", number);
+ PDEBUG(DTRANS, DEBUG_NOTICE, "Found already pending transaction for subscriber '%s', deleting!\n", number);
destroy_transaction(trans);
if (old_amps) /* should be... */
amps_go_idle(old_amps);
@@ -140,6 +140,7 @@ transaction_t *create_transaction(amps_t *amps, enum amps_trans_state state, uin
trans_new_state(trans, state);
trans->min1 = min1;
trans->min2 = min2;
+ trans->esn = esn;
trans->msg_type = msg_type;
trans->ordq = ordq;
trans->order = order;
diff --git a/src/amps/transaction.h b/src/amps/transaction.h
index 5327481..2f3c00d 100644
--- a/src/amps/transaction.h
+++ b/src/amps/transaction.h
@@ -1,6 +1,4 @@
-typedef struct amps amps_t;
-
enum amps_trans_state {
TRANS_NULL = 0,
TRANS_REGISTER_ACK, /* attach request received, waiting to ack */
@@ -28,6 +26,7 @@ typedef struct transaction {
int page_retry; /* current number of paging (re)try */
uint32_t min1; /* current station ID (2 values) */
uint16_t min2;
+ uint32_t esn; /* ESN */
uint8_t msg_type; /* message type (3 values) */
uint8_t ordq;
uint8_t order;
@@ -39,7 +38,7 @@ typedef struct transaction {
int dtx; /* if set, DTX is used with this call */
} transaction_t;
-transaction_t *create_transaction(amps_t *amps, enum amps_trans_state trans_state, uint32_t min1, uint16_t min2, uint8_t msg_type, uint8_t ordq, uint8_t order, uint16_t chan);
+transaction_t *create_transaction(amps_t *amps, enum amps_trans_state trans_state, uint32_t min1, uint16_t min2, uint32_t esn, uint8_t msg_type, uint8_t ordq, uint8_t order, uint16_t chan);
void destroy_transaction(transaction_t *trans);
void link_transaction(transaction_t *trans, amps_t *amps);
void unlink_transaction(transaction_t *trans);
diff --git a/src/anetz/Makefile.am b/src/anetz/Makefile.am
index 76dbb4a..d11e0c1 100644
--- a/src/anetz/Makefile.am
+++ b/src/anetz/Makefile.am
@@ -21,6 +21,7 @@ anetz_LDADD = \
$(top_builddir)/src/liboptions/liboptions.a \
$(top_builddir)/src/libdebug/libdebug.a \
$(top_builddir)/src/libmobile/libmobile.a \
+ $(top_builddir)/src/libosmocc/libosmocc.a \
$(top_builddir)/src/libdisplay/libdisplay.a \
$(top_builddir)/src/libgoertzel/libgoertzel.a \
$(top_builddir)/src/libjitter/libjitter.a \
@@ -31,8 +32,8 @@ anetz_LDADD = \
$(top_builddir)/src/libfm/libfm.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libwave/libwave.a \
- $(top_builddir)/src/libmncc/libmncc.a \
$(top_builddir)/src/libsample/libsample.a \
+ $(top_builddir)/src/libg711/libg711.a \
-lm
if HAVE_ALSA
@@ -44,6 +45,7 @@ endif
if HAVE_SDR
anetz_LDADD += \
$(top_builddir)/src/libsdr/libsdr.a \
+ $(top_builddir)/src/libam/libam.a \
$(top_builddir)/src/libfft/libfft.a \
$(UHD_LIBS) \
$(SOAPY_LIBS)
diff --git a/src/anetz/anetz.c b/src/anetz/anetz.c
index d447377..c598b1a 100644
--- a/src/anetz/anetz.c
+++ b/src/anetz/anetz.c
@@ -28,14 +28,11 @@
#include "../libdebug/debug.h"
#include "../libtimer/timer.h"
#include "../libmobile/call.h"
-#include "../libmncc/cause.h"
+#include "../libmobile/cause.h"
+#include "../libosmocc/message.h"
#include "anetz.h"
#include "dsp.h"
-/* Call reference for calls from mobile station to network
- This offset of 0x400000000 is required for MNCC interface. */
-static int new_callref = 0x40000000;
-
/* Timers */
#define PAGING_TO 30 /* Nach dieser Zeit ist der Operator genervt... */
#define RELEASE_TO 3 /* Release time, so station keeps blocked for a while */
@@ -186,7 +183,7 @@ static void anetz_timeout(struct timer *timer);
static void anetz_go_idle(anetz_t *anetz);
/* Create transceiver instance and link to a list. */
-int anetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double page_gain, int page_sequence, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *operator)
+int anetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, double page_gain, int page_sequence, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *operator)
{
anetz_t *anetz;
int rc;
@@ -207,7 +204,7 @@ int anetz_create(const char *kanal, const char *audiodev, int use_sdr, int sampl
PDEBUG(DANETZ, DEBUG_DEBUG, "Creating 'A-Netz' instance for 'Kanal' = %s (sample rate %d).\n", kanal, samplerate);
/* init general part of transceiver */
- rc = sender_create(&anetz->sender, kanal, anetz_kanal2freq(atoi(kanal), 0), anetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
+ rc = sender_create(&anetz->sender, kanal, anetz_kanal2freq(atoi(kanal), 0), anetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, tx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
if (rc < 0) {
PDEBUG(DANETZ, DEBUG_ERROR, "Failed to init 'Sender' processing!\n");
goto error;
@@ -326,17 +323,8 @@ void anetz_receive_tone(anetz_t *anetz, int tone)
/* throughconnect speech when calling/answer tone is gone */
if (tone != 1) {
if (!anetz->callref) {
- int callref = ++new_callref;
- int rc;
-
PDEBUG_CHAN(DANETZ, DEBUG_INFO, "1750 Hz signal from mobile station is gone, setup call.\n");
- rc = call_up_setup(callref, NULL, anetz->operator);
- if (rc < 0) {
- PDEBUG_CHAN(DANETZ, DEBUG_NOTICE, "Call rejected (cause %d), sending release tone.\n", -rc);
- anetz_release(anetz);
- break;
- }
- anetz->callref = callref;
+ anetz->callref = call_up_setup(NULL, anetz->operator, OSMO_CC_NETWORK_ANETZ_NONE, "");
} else {
PDEBUG_CHAN(DANETZ, DEBUG_INFO, "1750 Hz signal from mobile station is gone, answer call.\n");
call_up_answer(anetz->callref, anetz->station_id);
@@ -540,5 +528,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/anetz/anetz.h b/src/anetz/anetz.h
index 1278315..30dc763 100644
--- a/src/anetz/anetz.h
+++ b/src/anetz/anetz.h
@@ -54,7 +54,7 @@ typedef struct anetz {
double anetz_kanal2freq(int kanal, int unterband);
int anetz_init(void);
-int anetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double page_gain, int page_sequence, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *operator);
+int anetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, double page_gain, int page_sequence, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *operator);
void anetz_destroy(sender_t *sender);
void anetz_loss_indication(anetz_t *anetz, double loss_time);
void anetz_receive_tone(anetz_t *anetz, int bit);
diff --git a/src/anetz/dsp.c b/src/anetz/dsp.c
index 14af0be..40144a5 100644
--- a/src/anetz/dsp.c
+++ b/src/anetz/dsp.c
@@ -35,15 +35,15 @@
#define PI 3.1415927
/* signaling */
-#define MAX_DEVIATION 15000.0
-#define MAX_MODULATION 4000.0
-#define DBM0_DEVIATION 10500.0 /* deviation of dBm0 at 1 kHz */
-#define TX_PEAK_TONE (10500.0 / DBM0_DEVIATION) /* 10.5 kHz, no emphasis */
-#define TX_PEAK_PAGE (15000.0 / DBM0_DEVIATION) /* 15 kHz, no emphasis */
-#define MAX_DISPLAY (15000.0 / DBM0_DEVIATION) /* 15 kHz, no emphasis */
-#define CHUNK_DURATION 0.010 /* 10 ms */
-#define TONE_THRESHOLD 0.05
-#define QUAL_THRESHOLD 0.5
+#define MAX_DEVIATION 15000.0
+#define MAX_MODULATION 4000.0
+#define SPEECH_DEVIATION 10500.0 /* deviation of speech at 1 kHz */
+#define TX_PEAK_TONE (10500.0 / SPEECH_DEVIATION) /* 10.5 kHz, no emphasis */
+#define TX_PEAK_PAGE (15000.0 / SPEECH_DEVIATION) /* 15 kHz, no emphasis */
+#define MAX_DISPLAY (15000.0 / SPEECH_DEVIATION) /* 15 kHz, no emphasis */
+#define CHUNK_DURATION 0.010 /* 10 ms */
+#define TONE_THRESHOLD 0.05
+#define QUAL_THRESHOLD 0.5
// FIXME: how long until we detect a tone?
#define TONE_DETECT_TH 8 /* chunk intervals to detect continuous tone */
@@ -89,7 +89,7 @@ int dsp_init_sender(anetz_t *anetz, double page_gain, int page_sequence, double
squelch_init(&anetz->squelch, anetz->sender.kanal, squelch_db, MUTE_TIME, LOSS_TIME);
/* set modulation parameters */
- sender_set_fm(&anetz->sender, MAX_DEVIATION * page_gain, MAX_MODULATION, DBM0_DEVIATION, MAX_DISPLAY);
+ sender_set_fm(&anetz->sender, MAX_DEVIATION * page_gain, MAX_MODULATION, SPEECH_DEVIATION, MAX_DISPLAY);
anetz->page_gain = page_gain;
anetz->page_sequence = page_sequence;
diff --git a/src/anetz/main.c b/src/anetz/main.c
index 4de9435..26cd985 100644
--- a/src/anetz/main.c
+++ b/src/anetz/main.c
@@ -180,7 +180,7 @@ int main(int argc, char *argv[])
/* create transceiver instance */
for (i = 0; i < num_kanal; i++) {
- rc = anetz_create(kanal[i], audiodev[i], use_sdr, samplerate, rx_gain, page_gain, page_sequence, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, squelch_db, operator);
+ rc = anetz_create(kanal[i], audiodev[i], use_sdr, samplerate, rx_gain, tx_gain, page_gain, page_sequence, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, squelch_db, operator);
if (rc < 0) {
fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n");
goto fail;
@@ -188,7 +188,7 @@ int main(int argc, char *argv[])
printf("Base station on channel %s ready, please tune transmitter to %.3f MHz and receiver to %.3f MHz. (%.3f MHz offset)\n", kanal[i], anetz_kanal2freq(atoi(kanal[i]), 0) / 1e6, anetz_kanal2freq(atoi(kanal[i]), 1) / 1e6, anetz_kanal2freq(atoi(kanal[i]), 2) / 1e6);
}
- main_mobile(&quit, latency, interval, NULL, station_id, 5);
+ main_mobile("anetz", &quit, latency, interval, NULL, station_id, 5);
fail:
/* destroy transceiver instance */
diff --git a/src/bnetz/Makefile.am b/src/bnetz/Makefile.am
index ecb611e..0e4789a 100644
--- a/src/bnetz/Makefile.am
+++ b/src/bnetz/Makefile.am
@@ -18,6 +18,7 @@ bnetz_LDADD = \
$(top_builddir)/src/liboptions/liboptions.a \
$(top_builddir)/src/libdebug/libdebug.a \
$(top_builddir)/src/libmobile/libmobile.a \
+ $(top_builddir)/src/libosmocc/libosmocc.a \
$(top_builddir)/src/libdisplay/libdisplay.a \
$(top_builddir)/src/libjitter/libjitter.a \
$(top_builddir)/src/libsquelch/libsquelch.a \
@@ -28,8 +29,8 @@ bnetz_LDADD = \
$(top_builddir)/src/libfm/libfm.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libwave/libwave.a \
- $(top_builddir)/src/libmncc/libmncc.a \
$(top_builddir)/src/libsample/libsample.a \
+ $(top_builddir)/src/libg711/libg711.a \
-lm
bnetz_dialer_SOURCES = \
@@ -43,7 +44,6 @@ bnetz_dialer_LDADD = \
$(top_builddir)/src/libfm/libfm.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libwave/libwave.a \
- $(top_builddir)/src/libmncc/libmncc.a \
$(top_builddir)/src/libsample/libsample.a \
$(ALSA_LIBS)
-lm
@@ -61,6 +61,7 @@ endif
if HAVE_SDR
bnetz_LDADD += \
$(top_builddir)/src/libsdr/libsdr.a \
+ $(top_builddir)/src/libam/libam.a \
$(top_builddir)/src/libfft/libfft.a \
$(UHD_LIBS) \
$(SOAPY_LIBS)
diff --git a/src/bnetz/bnetz.c b/src/bnetz/bnetz.c
index 4c597bb..725dd9b 100644
--- a/src/bnetz/bnetz.c
+++ b/src/bnetz/bnetz.c
@@ -27,15 +27,12 @@
#include "../libsample/sample.h"
#include "../libdebug/debug.h"
#include "../libmobile/call.h"
-#include "../libmncc/cause.h"
+#include "../libmobile/cause.h"
+#include "../libosmocc/message.h"
#include "bnetz.h"
#include "telegramm.h"
#include "dsp.h"
-/* Call reference for calls from mobile station to network
- This offset of 0x400000000 is required for MNCC interface. */
-static int new_callref = 0x40000000;
-
/* mobile originating call */
#define CARRIER_TO 0.08 /* 80 ms search for carrier */
#define DIALING_TO 3.8 /* timeout after channel allocation "Kanalbelegung" (according to FTZ 1727 Pfl 32 Clause 3.2.2.2.8) */
@@ -157,7 +154,7 @@ static void bnetz_timeout(struct timer *timer);
static void bnetz_go_idle(bnetz_t *bnetz);
/* Create transceiver instance and link to a list. */
-int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering)
+int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering)
{
bnetz_t *bnetz;
enum paging_signal paging_signal = PAGING_SIGNAL_NONE;
@@ -223,7 +220,7 @@ error_paging:
PDEBUG(DBNETZ, DEBUG_DEBUG, "Creating 'B-Netz' instance for 'Kanal' = %s 'Gruppenfreisignal' = %d (sample rate %d).\n", kanal, gfs, samplerate);
/* init general part of transceiver */
- rc = sender_create(&bnetz->sender, kanal, bnetz_kanal2freq(atoi(kanal), 0), bnetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, paging_signal);
+ rc = sender_create(&bnetz->sender, kanal, bnetz_kanal2freq(atoi(kanal), 0), bnetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, tx_gain, pre_emphasis, de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, paging_signal);
if (rc < 0) {
PDEBUG(DBNETZ, DEBUG_ERROR, "Failed to init transceiver process!\n");
goto error;
@@ -565,8 +562,6 @@ void bnetz_receive_telegramm(bnetz_t *bnetz, uint16_t telegramm)
break;
case DIAL_MODE_NUMBER2:
if (digit == 'e') {
- int callref = ++new_callref;
- int rc;
/* add 0 in front of number */
char dialing[sizeof(bnetz->dial_number) + 1] = "0";
strcpy(dialing + 1, bnetz->dial_number);
@@ -594,13 +589,7 @@ void bnetz_receive_telegramm(bnetz_t *bnetz, uint16_t telegramm)
/* setup call */
PDEBUG(DBNETZ, DEBUG_INFO, "Setup call to network.\n");
- rc = call_up_setup(callref, bnetz->station_id, dialing);
- if (rc < 0) {
- PDEBUG(DBNETZ, DEBUG_NOTICE, "Call rejected (cause %d), releasing.\n", -rc);
- bnetz_release(bnetz, TRENN_COUNT);
- return;
- }
- bnetz->callref = callref;
+ bnetz->callref = call_up_setup(bnetz->station_id, dialing, OSMO_CC_NETWORK_BNETZ_MUENZ, (bnetz->dial_type == DIAL_TYPE_METER_MUENZ) ? "MUENZ" : "");
break;
}
if (digit < '0' || digit > '9') {
@@ -862,5 +851,7 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
void dump_info(void) {}
diff --git a/src/bnetz/bnetz.h b/src/bnetz/bnetz.h
index c520902..4033a6b 100644
--- a/src/bnetz/bnetz.h
+++ b/src/bnetz/bnetz.h
@@ -87,12 +87,13 @@ typedef struct bnetz {
/* dsp states */
enum dsp_mode dsp_mode; /* current mode: audio, durable tone 0 or 1, "Telegramm" */
- fsk_t fsk; /* fsk modem instance */
- uint16_t rx_telegramm; /* rx shift register for receiveing telegramm */
+ fsk_mod_t fsk_mod; /* fsk modem instance */
+ fsk_demod_t fsk_demod;
+ uint16_t rx_telegramm; /* rx shift register for receiving telegramm */
double rx_telegramm_quality[16];/* quality of each bit in telegramm */
double rx_telegramm_level[16]; /* level of each bit in telegramm */
int rx_telegramm_qualidx; /* index of quality array above */
- uint16_t rx_tone; /* rx shift register for receiveing continuous tone */
+ uint16_t rx_tone; /* rx shift register for receiving continuous tone */
double rx_tone_quality[16]; /* quality of tone fragment (100th of second) */
double rx_tone_level[16]; /* level of tone fragment (100th of second) */
int rx_tone_qualidx; /* index of quality array above */
@@ -112,7 +113,7 @@ typedef struct bnetz {
double bnetz_kanal2freq(int kanal, int unterband);
int bnetz_init(void);
-int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering);
+int bnetz_create(const char *kanal, const char *audiodev, int use_sdr, int samplerate, double rx_gain, double tx_gain, int gfs, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback, double squelch_db, const char *paging, int metering);
void bnetz_destroy(sender_t *sender);
void bnetz_loss_indication(bnetz_t *bnetz, double loss_time);
void bnetz_receive_tone(bnetz_t *bnetz, int bit);
diff --git a/src/bnetz/dialer.c b/src/bnetz/dialer.c
index 05195e3..3d98dab 100644
--- a/src/bnetz/dialer.c
+++ b/src/bnetz/dialer.c
@@ -61,7 +61,7 @@ int tx_telegramm_pos = 0;
int latspl;
/* instances */
-fsk_t fsk;
+fsk_mod_t fsk_mod;
#ifdef HAVE_ALSA
void *audio = NULL;
#endif
@@ -69,7 +69,6 @@ wave_rec_t wave_tx_rec;
/* dummy functions */
int num_kanal = 1; /* only one channel used for debugging */
-void display_status_limit_scroll() {}
void *get_sender_by_empfangsfrequenz() { return NULL; }
void display_measurements_add() {}
void display_measurements_update() {}
@@ -154,7 +153,7 @@ static int handle_options(int short_option, int __attribute__((unused)) argi, ch
/* process next fsk bit.
- * if the dial string terminats, change to SILENCE mode
+ * if the dial string terminates, change to SILENCE mode
*/
static int fsk_send_bit(void __attribute__((unused)) *inst)
{
@@ -226,7 +225,7 @@ again:
break;
case TX_MODE_FSK:
/* send FSK until it stops, then fill with silence */
- count = fsk_send(&fsk, samples, length, 0);
+ count = fsk_mod_send(&fsk_mod, samples, length, 0);
samples += count;
length -= count;
if (length)
@@ -237,7 +236,7 @@ again:
}
}
-/* loop that gets audio from encoder and fowards it to sound card.
+/* loop that gets audio from encoder and forwards it to sound card.
* alternatively a sound file is written.
*/
static void process_signal(void)
@@ -286,7 +285,7 @@ int main(int argc, char *argv[])
/* init */
bnetz_init_telegramm();
- memset(&fsk, 0, sizeof(fsk));
+ memset(&fsk_mod, 0, sizeof(fsk_mod));
/* latency of send buffer in samples */
latspl = samplerate * latency / 1000;
@@ -340,14 +339,14 @@ int main(int argc, char *argv[])
sprintf(funkwahl, "wwww%c%s%se%c%s%se", start_digit, station_id, dialing + 1, start_digit, station_id, dialing + 1);
/* init fsk */
- if (fsk_init(&fsk, NULL, fsk_send_bit, NULL, samplerate, BIT_RATE, F0, F1, 1.0, 0, 0) < 0) {
+ if (fsk_mod_init(&fsk_mod, NULL, fsk_send_bit, samplerate, BIT_RATE, F0, F1, 1.0, 0, 0) < 0) {
PDEBUG(DDSP, DEBUG_ERROR, "FSK init failed!\n");
goto exit;
}
#ifdef HAVE_ALSA
/* init sound */
- audio = sound_open(audiodev, NULL, NULL, 1, 0.0, samplerate, latspl, 1.0, 4000.0);
+ audio = sound_open(audiodev, NULL, NULL, NULL, 1, 0.0, samplerate, latspl, 1.0, 4000.0, 2.0);
if (!audio) {
PDEBUG(DBNETZ, DEBUG_ERROR, "No sound device!\n");
goto exit;
@@ -389,7 +388,7 @@ exit:
#endif
/* exit fsk */
- fsk_cleanup(&fsk);
+ fsk_mod_cleanup(&fsk_mod);
return 0;
}
diff --git a/src/bnetz/dsp.c b/src/bnetz/dsp.c
index e05973a..c360771 100644
--- a/src/bnetz/dsp.c
+++ b/src/bnetz/dsp.c
@@ -37,25 +37,25 @@
*
* At 2000 Hz the deviation shall be 4 kHz, so with emphasis the deviation
* at 1000 Hz would be theoretically 2 kHz. This is factor 0.714 below
- * 2.8 kHz deviation we want at dBm0.
+ * 2.8 kHz deviation we want at speech level.
*/
/* signaling */
-#define MAX_DEVIATION 4000.0
-#define MAX_MODULATION 3000.0
-#define DBM0_DEVIATION 2800.0 /* deviation of dBm0 at 1 kHz */
-#define TX_PEAK_FSK (4000.0 / 2000.0 * 1000.0 / DBM0_DEVIATION)
-#define TX_PEAK_METER (2000.0 / 2900.0 * 1000.0 / DBM0_DEVIATION) /* FIXME: what is the metering pulse deviation??? we use half of the 4kHz deviation, so we can still use -6dB of the speech level */
-#define DAMPEN_METER 0.5 /* use -6dB to dampen speech while sending metering pulse (according to FTZ 1727 Pfl 32 Clause 3.2.6.6.5) */
-#define MAX_DISPLAY 1.4 /* something above dBm0 */
-#define BIT_RATE 100.0
-#define BIT_ADJUST 0.5 /* full adjustment on bit change */
-#define F0 2070.0
-#define F1 1950.0
-#define METERING_HZ 2900 /* metering pulse frequency */
-#define TONE_DETECT_CNT 7 /* 70 milliseconds to detect continuous tone */
-#define TONE_LOST_CNT 14 /* we use twice of the detect time, so we bridge a loss of "TONE_DETECT_CNT duration" */
-#define TONE_STDDEV_TH 0.2 /* threshold of bad quality (standard deviation) to reject tone */
+#define MAX_DEVIATION 4000.0
+#define MAX_MODULATION 3000.0
+#define SPEECH_DEVIATION 2800.0 /* deviation of speech at 1 kHz */
+#define TX_PEAK_FSK (4000.0 / 2000.0 * 1000.0 / SPEECH_DEVIATION)
+#define TX_PEAK_METER (2000.0 / 2900.0 * 1000.0 / SPEECH_DEVIATION) /* FIXME: what is the metering pulse deviation??? we use half of the 4kHz deviation, so we can still use -6dB of the speech level */
+#define DAMPEN_METER 0.5 /* use -6dB to dampen speech while sending metering pulse (according to FTZ 1727 Pfl 32 Clause 3.2.6.6.5) */
+#define MAX_DISPLAY 1.4 /* something above speech level */
+#define BIT_RATE 100.0
+#define BIT_ADJUST 0.5 /* full adjustment on bit change */
+#define F0 2070.0
+#define F1 1950.0
+#define METERING_HZ 2900 /* metering pulse frequency */
+#define TONE_DETECT_CNT 7 /* 70 milliseconds to detect continuous tone */
+#define TONE_LOST_CNT 14 /* we use twice of the detect time, so we bridge a loss of "TONE_DETECT_CNT duration" */
+#define TONE_STDDEV_TH 0.2 /* threshold of bad quality (standard deviation) to reject tone */
/* carrier loss detection */
#define MUTE_TIME 0.1 /* time to mute after loosing signal */
@@ -91,12 +91,16 @@ int dsp_init_sender(bnetz_t *bnetz, double squelch_db)
squelch_init(&bnetz->squelch, bnetz->sender.kanal, squelch_db, MUTE_TIME, LOSS_TIME);
/* set modulation parameters */
- sender_set_fm(&bnetz->sender, MAX_DEVIATION, MAX_MODULATION, DBM0_DEVIATION, MAX_DISPLAY);
+ sender_set_fm(&bnetz->sender, MAX_DEVIATION, MAX_MODULATION, SPEECH_DEVIATION, MAX_DISPLAY);
PDEBUG(DDSP, DEBUG_DEBUG, "Using FSK level of %.3f (%.3f KHz deviation @ 2000 Hz)\n", TX_PEAK_FSK, 4.0);
/* init fsk */
- if (fsk_init(&bnetz->fsk, bnetz, fsk_send_bit, fsk_receive_bit, bnetz->sender.samplerate, BIT_RATE, F0, F1, TX_PEAK_FSK, 0, BIT_ADJUST) < 0) {
+ if (fsk_mod_init(&bnetz->fsk_mod, bnetz, fsk_send_bit, bnetz->sender.samplerate, BIT_RATE, F0, F1, TX_PEAK_FSK, 0, 0) < 0) {
+ PDEBUG_CHAN(DDSP, DEBUG_ERROR, "FSK init failed!\n");
+ return -EINVAL;
+ }
+ if (fsk_demod_init(&bnetz->fsk_demod, bnetz, fsk_receive_bit, bnetz->sender.samplerate, BIT_RATE, F0, F1, BIT_ADJUST) < 0) {
PDEBUG_CHAN(DDSP, DEBUG_ERROR, "FSK init failed!\n");
return -EINVAL;
}
@@ -121,7 +125,8 @@ void dsp_cleanup_sender(bnetz_t *bnetz)
{
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Cleanup DSP for 'Sender'.\n");
- fsk_cleanup(&bnetz->fsk);
+ fsk_mod_cleanup(&bnetz->fsk_mod);
+ fsk_demod_cleanup(&bnetz->fsk_demod);
}
/* If good tone is received, we just set this tone, if not already and reset counters.
@@ -270,7 +275,7 @@ void sender_receive(sender_t *sender, sample_t *samples, int length, double rf_l
int i;
/* fsk/tone signal */
- fsk_receive(&bnetz->fsk, samples, length);
+ fsk_demod_receive(&bnetz->fsk_demod, samples, length);
/* process signal mute/loss, without signalling tone / FSK frames */
switch (squelch(&bnetz->squelch, rf_level_db, (double)length / (double)bnetz->sender.samplerate)) {
@@ -375,7 +380,7 @@ again:
case DSP_MODE_TELEGRAMM:
/* Encode tone/frame into audio stream. If frames have
* stopped, process again for rest of stream. */
- count = fsk_send(&bnetz->fsk, samples, length, 0);
+ count = fsk_mod_send(&bnetz->fsk_mod, samples, length, 0);
samples += count;
length -= count;
if (length)
@@ -412,7 +417,7 @@ void bnetz_set_dsp_mode(bnetz_t *bnetz, enum dsp_mode mode)
/* reset telegramm */
if (mode == DSP_MODE_TELEGRAMM && bnetz->dsp_mode != mode) {
bnetz->tx_telegramm = 0;
- fsk_tx_reset(&bnetz->fsk);
+ fsk_mod_tx_reset(&bnetz->fsk_mod);
}
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "DSP mode %s -> %s\n", bnetz_dsp_mode_name(bnetz->dsp_mode), bnetz_dsp_mode_name(mode));
diff --git a/src/bnetz/main.c b/src/bnetz/main.c
index b78352b..91bb2f5 100644
--- a/src/bnetz/main.c
+++ b/src/bnetz/main.c
@@ -185,7 +185,7 @@ int main(int argc, char *argv[])
/* create transceiver instance */
for (i = 0; i < num_kanal; i++) {
- rc = bnetz_create(kanal[i], audiodev[i], use_sdr, samplerate, rx_gain, gfs, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, squelch_db, paging, metering);
+ rc = bnetz_create(kanal[i], audiodev[i], use_sdr, samplerate, rx_gain, tx_gain, gfs, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, squelch_db, paging, metering);
if (rc < 0) {
fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n");
goto fail;
@@ -194,7 +194,7 @@ int main(int argc, char *argv[])
printf("To call phone, switch transmitter (using paging signal) to %.3f MHz.\n", bnetz_kanal2freq(19, 0) / 1e6);
}
- main_mobile(&quit, latency, interval, NULL, station_id, 5);
+ main_mobile("bnetz", &quit, latency, interval, NULL, station_id, 5);
fail:
/* destroy transceiver instance */
diff --git a/src/cnetz/Makefile.am b/src/cnetz/Makefile.am
index 75e57a6..7a9a1f3 100644
--- a/src/cnetz/Makefile.am
+++ b/src/cnetz/Makefile.am
@@ -3,6 +3,11 @@ AM_CPPFLAGS = -Wall -Wextra -g $(all_includes)
bin_PROGRAMS = \
cnetz
+noinst_LIBRARIES = libcnetztones.a
+
+libcnetztones_a_SOURCES = \
+ ansage.c
+
cnetz_SOURCES = \
cnetz.c \
transaction.c \
@@ -12,14 +17,16 @@ cnetz_SOURCES = \
dsp.c \
fsk_demod.c \
image.c \
- ansage.c \
+ stations.c \
main.c
cnetz_LDADD = \
$(COMMON_LA) \
../anetz/libgermanton.a \
+ libcnetztones.a \
$(top_builddir)/src/liboptions/liboptions.a \
$(top_builddir)/src/libdebug/libdebug.a \
$(top_builddir)/src/libmobile/libmobile.a \
+ $(top_builddir)/src/libosmocc/libosmocc.a \
$(top_builddir)/src/libdisplay/libdisplay.a \
$(top_builddir)/src/libcompandor/libcompandor.a \
$(top_builddir)/src/libjitter/libjitter.a \
@@ -30,8 +37,8 @@ cnetz_LDADD = \
$(top_builddir)/src/libfm/libfm.a \
$(top_builddir)/src/libfilter/libfilter.a \
$(top_builddir)/src/libwave/libwave.a \
- $(top_builddir)/src/libmncc/libmncc.a \
$(top_builddir)/src/libsample/libsample.a \
+ $(top_builddir)/src/libg711/libg711.a \
-lm
if HAVE_ALSA
@@ -43,6 +50,7 @@ endif
if HAVE_SDR
cnetz_LDADD += \
$(top_builddir)/src/libsdr/libsdr.a \
+ $(top_builddir)/src/libam/libam.a \
$(top_builddir)/src/libfft/libfft.a \
$(UHD_LIBS) \
$(SOAPY_LIBS)
diff --git a/src/cnetz/cnetz.c b/src/cnetz/cnetz.c
index 5d0dd69..08cb668 100644
--- a/src/cnetz/cnetz.c
+++ b/src/cnetz/cnetz.c
@@ -42,7 +42,7 @@
* If no SpK is available, the call is rejected. If queue (Warteschlange) is
* enabled, WSK(R) is scheduled. After transmission, the state changes to
* TRANS_MT_QUEUE. Upon timeout (no channel becomes available), the call is
- * rejected by scheduling VA(R). Upon available channel the call proceeeds with
+ * rejected by scheduling VA(R). Upon available channel the call proceeds with
* VAK(R) as described above.
*
* If an MO (mobile originating) call is made (received VWG(K)), a transaction
@@ -57,11 +57,11 @@
* (Warteschlange) is enabled, WWBP(R) is scheduled. After transmission, the
* state is changed to TRANS_MO_QUEUE. Upon timeout (no channel becomes
* available), the call is rejected by scheduling VA(R). Upon available channel
- * the call proceeeds with VAG(R) as described above.
+ * the call proceeds with VAG(R) as described above.
*
* Switching to SpK is performed two time slots after transmitting VAK(R) or
* VAG(R). The timer is started. The schedulers schedules 8 times BQ(K) and
- * awaits at least one BEL(K). If BEK(K) is received, the timer is stoped. If
+ * awaits at least one BEL(K). If BEK(K) is received, the timer is stopped. If
* BQ(K) was sent at least 8 times and if timer is stopped, the scheduler
* schedules VHQ(K). If no BEL(K) was received, AFK(K) is scheduled N_AFKT
* times, then the process on OgK (WBP+VAG or VAK) is repeated N times.
@@ -114,7 +114,7 @@
/*
* Notes on the combined channel hack:
*
- * For combined SpK+OgK hack, the channel is used as SpK as last choise. This
+ * For combined SpK+OgK hack, the channel is used as SpK as last choice. This
* allows to use only one transceiver for making C-Netz to work. Also it allows
* to use all transceivers for simultanious phone calls. Some phones may not
* work with that.
@@ -126,7 +126,7 @@
* The encoder generates a precise clocked signal using correction value given
* by command line. For multichannel, the second sound card's channel (slave) is
* synced to the first one (master), if calculation of signal phase might drift
- * due to routing errors.
+ * due to rounding errors.
*
* The decoder is synced to the phone, whenever it receives a valid frame.
*
@@ -145,22 +145,20 @@
#include "../libsample/sample.h"
#include "../libdebug/debug.h"
#include "../libmobile/call.h"
-#include "../libmncc/cause.h"
+#include "../libmobile/cause.h"
+#include "../libosmocc/message.h"
#include "cnetz.h"
#include "database.h"
#include "sysinfo.h"
#include "telegramm.h"
#include "dsp.h"
+#include "stations.h"
/* uncomment this to do echo debugging (-l) on Speech Channel */
//#define DEBUG_SPK
#define CUT_OFF_EMPHASIS_CNETZ 796.0 /* 200 uS time constant */
-/* Call reference for calls from mobile station to network
- This offset of 0x400000000 is required for MNCC interface. */
-static int new_callref = 0x40000000;
-
/* Convert channel number to frequency number of base station.
Set 'unterband' to 1 to get frequency of mobile station. */
double cnetz_kanal2freq(int kanal, int unterband)
@@ -180,6 +178,26 @@ double cnetz_kanal2freq(int kanal, int unterband)
return freq * 1e6;
}
+/* convert power level to P-bits by selecting next higher level */
+static uint8_t cnetz_power2bits(int power)
+{
+ switch (power) {
+ case 1:
+ return 3;
+ case 2:
+ case 3:
+ return 2;
+ case 4:
+ case 5:
+ return 1;
+ case 6:
+ case 7:
+ case 8:
+ default:
+ return 0;
+ }
+}
+
const char *cnetz_state_name(enum cnetz_state state)
{
static char invalid[16];
@@ -246,29 +264,26 @@ int cnetz_init(void)
}
/* Create transceiver instance and link to a list. */
-int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *audiodev, int use_sdr, enum demod_type demod, int samplerate, double rx_gain, int challenge_valid, uint64_t challenge, int response_valid, uint64_t response, int warteschlange, int metering, double dbm0_deviation, int ms_power, int measure_speed, double clock_speed[2], int polarity, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback)
+int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *audiodev, int use_sdr, enum demod_type demod, int samplerate, double rx_gain, double tx_gain, int challenge_valid, uint64_t challenge, int response_valid, uint64_t response, int warteschlange, int metering, double speech_deviation, int ms_power, int measure_speed, double clock_speed[2], int polarity, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback)
{
sender_t *sender;
cnetz_t *cnetz;
int rc;
- if ((atoi(kanal) & 1) && atoi(kanal) < 1 && atoi(kanal) > 1147) {
- PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid.\n", kanal);
+ if ((atoi(kanal) & 1) && (atoi(kanal) < 3 || atoi(kanal) > 1147)) {
+ PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid. For odd channel numbers, use channel 3 ... 1147.\n", kanal);
return -EINVAL;
}
if ((atoi(kanal) & 1) && atoi(kanal) > 947) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency channel %s, only newer phones support this!\n", kanal);
}
- if (!(atoi(kanal) & 1) && atoi(kanal) < 2 && atoi(kanal) > 918) {
- PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid.\n", kanal);
+ if (!(atoi(kanal) & 1) && (atoi(kanal) < 4 || atoi(kanal) > 918)) {
+ PDEBUG(DCNETZ, DEBUG_ERROR, "Channel ('Kanal') number %s invalid. For even channel numbers, use channel 4 ... 918.\n", kanal);
return -EINVAL;
}
if (!(atoi(kanal) & 1) && atoi(kanal) > 758) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "You defined an extended frequency %s, only newer phones support this!\n", kanal);
}
- if (atoi(kanal) == 1 || atoi(kanal) == 2) {
- PDEBUG(DCNETZ, DEBUG_NOTICE, "Channel ('Kanal') number %s is specified as 'unused', it might not work!\n", kanal);
- }
/* OgK must be on channel 131 */
if ((chan_type == CHAN_TYPE_OGK || chan_type == CHAN_TYPE_OGK_SPK) && atoi(kanal) != CNETZ_OGK_KANAL) {
@@ -305,7 +320,7 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
/* init general part of transceiver */
/* do not enable emphasis, since it is done by cnetz code, not by common sender code */
- rc = sender_create(&cnetz->sender, kanal, cnetz_kanal2freq(atoi(kanal), 0), cnetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
+ rc = sender_create(&cnetz->sender, kanal, cnetz_kanal2freq(atoi(kanal), 0), cnetz_kanal2freq(atoi(kanal), 1), audiodev, use_sdr, samplerate, rx_gain, tx_gain, 0, 0, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback, PAGING_SIGNAL_NONE);
if (rc < 0) {
PDEBUG(DCNETZ, DEBUG_ERROR, "Failed to init transceiver process!\n");
goto error;
@@ -320,7 +335,7 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
#endif
/* init audio processing */
- rc = dsp_init_sender(cnetz, measure_speed, clock_speed, demod, dbm0_deviation);
+ rc = dsp_init_sender(cnetz, measure_speed, clock_speed, demod, speech_deviation);
if (rc < 0) {
PDEBUG(DCNETZ, DEBUG_ERROR, "Failed to init signal processing!\n");
goto error;
@@ -338,26 +353,18 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
switch (polarity) {
case 1:
/* select cell 0 for positive polarity */
- cnetz->cell_nr = 0;
- cnetz->cell_auto = 0;
- if (si[cnetz->cell_nr].flip_polarity != 0) {
- fprintf(stderr, "cell %d must have positive polarity, please fix!\n", cnetz->cell_nr);
- abort();
- }
+ cnetz->negative_polarity = 0;
+ cnetz->auto_polarity = 0;
break;
case -1:
/* select cell 1 for negative polarity */
- cnetz->cell_nr = 1;
- cnetz->cell_auto = 0;
- if (si[cnetz->cell_nr].flip_polarity == 0) {
- fprintf(stderr, "cell %d must have negative polarity, please fix!\n", cnetz->cell_nr);
- abort();
- }
+ cnetz->negative_polarity = 1;
+ cnetz->auto_polarity = 0;
break;
default:
/* send two cells and select by the first message from mobile */
- cnetz->cell_nr = 0; /* use cell 0 until selected */
- cnetz->cell_auto = 1;
+ cnetz->negative_polarity = 0;
+ cnetz->auto_polarity = 1;
}
cnetz->pre_emphasis = pre_emphasis;
@@ -367,21 +374,23 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
goto error;
/* go into idle state */
- cnetz_set_dsp_mode(cnetz, DSP_MODE_OGK);
- cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_OGK, 0);
+ if (chan_type == CHAN_TYPE_OGK || chan_type == CHAN_TYPE_OGK_SPK)
+ cnetz_set_dsp_mode(cnetz, DSP_MODE_OGK);
+ else
+ cnetz_set_dsp_mode(cnetz, DSP_MODE_OFF);
cnetz_go_idle(cnetz);
#ifdef DEBUG_SPK
transaction_t *trans = create_transaction(cnetz, TRANS_DS, 2, 2, 22002, -1, -1);
trans->mo_call = 1;
- cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_K, 2);
+ cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_K, (cnetz->sched_ts + 2) & 31);
#else
/* create transaction for speech channel loopback */
if (loopback && chan_type == CHAN_TYPE_SPK) {
transaction_t *trans = create_transaction(cnetz, TRANS_VHQ_K, 2, 2, 22002, -1, -1);
trans->mo_call = 1;
cnetz_set_dsp_mode(cnetz, DSP_MODE_SPK_K);
- cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_K, 0);
+ cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_K, (cnetz->sched_ts + 1) & 31);
}
#endif
@@ -402,6 +411,7 @@ int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *
#endif
PDEBUG(DCNETZ, DEBUG_NOTICE, "Created 'Kanal' #%s of type '%s' = %s\n", kanal, chan_type_short_name(chan_type), chan_type_long_name(chan_type));
+ PDEBUG(DNMT, DEBUG_NOTICE, " -> Using cell ID: Nat=%d FuVst=%d Rest=%d Name='%s'\n", si.fuz_nat, si.fuz_fuvst, si.fuz_rest, get_station_name(si.fuz_nat, si.fuz_fuvst, si.fuz_rest));
return 0;
@@ -498,10 +508,11 @@ void cnetz_go_idle(cnetz_t *cnetz)
/* set scheduler to OgK or turn off SpK */
if (cnetz->dsp_mode == DSP_MODE_SPK_K || cnetz->dsp_mode == DSP_MODE_SPK_V) {
- /* go idle after next frame/slot */
- cnetz_set_sched_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF, 1);
+ /* switch next frame after distributed signaling boundary (multiple of 8 slots) */
+ cnetz_set_sched_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF, (cnetz->sched_ts + 8) & 24);
} else {
- cnetz_set_sched_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF, 0);
+ /* switch next frame */
+ cnetz_set_sched_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF, (cnetz->sched_ts + 1) & 31);
cnetz_set_dsp_mode(cnetz, (atoi(cnetz->sender.kanal) == CNETZ_OGK_KANAL) ? DSP_MODE_OGK : DSP_MODE_OFF);
}
@@ -522,7 +533,7 @@ static void cnetz_release(transaction_t *trans, uint8_t cause)
trans_new_state(trans, (trans->cnetz->dsp_mode == DSP_MODE_OGK) ? TRANS_VA : TRANS_AF);
trans->repeat = 0;
trans->release_cause = cause;
- trans->cnetz->sched_switch_mode = 0;
+ trans->cnetz->sched_dsp_mode_ts = -1;
timer_stop(&trans->timer);
}
@@ -546,6 +557,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
}
}
+void call_down_clock(void) {}
+
int call_down_setup(int callref, const char __attribute__((unused)) *caller_id, enum number_type __attribute__((unused)) caller_type, const char *dialing)
{
sender_t *sender;
@@ -555,29 +568,41 @@ int call_down_setup(int callref, const char __attribute__((unused)) *caller_id,
transaction_t *trans;
uint8_t futln_nat;
uint8_t futln_fuvst;
- uint16_t futln_rest;
+ int futln_rest; /* use int for checking size > 65535 */
+ int len;
int i;
/* 1. check if number is invalid, return INVALNUMBER */
- if (strlen(dialing) == 11 && !strncmp(dialing, "0160", 4))
+ len = strlen(dialing);
+ if (len >= 11 && !strncmp(dialing, "0161", 4)) {
dialing += 4;
- if (strlen(dialing) != 7) {
+ len -= 4;
+ }
+ if (len < 7 || len > 8) {
inval:
PDEBUG(DCNETZ, DEBUG_NOTICE, "Outgoing call to invalid number '%s', rejecting!\n", dialing);
return -CAUSE_INVALNUMBER;
}
- for (i = 0; i < 7; i++) {
+ for (i = 0; i < len; i++) {
if (dialing[i] < '0' || dialing[i] > '9')
goto inval;
}
- if (atoi(dialing + 2) > 65535) {
- PDEBUG(DCNETZ, DEBUG_NOTICE, "Last 5 digits '%s' must not exceed '65535', but they do!\n", dialing + 2);
- goto inval;
- }
futln_nat = dialing[0] - '0';
- futln_fuvst = dialing[1] - '0';
- futln_rest = atoi(dialing + 2);
+ if (len == 7)
+ futln_fuvst = dialing[1] - '0';
+ else {
+ futln_fuvst = (dialing[1] - '0') * 10 + (dialing[2] - '0');
+ if (futln_fuvst > 31) {
+ PDEBUG(DCNETZ, DEBUG_NOTICE, "Digit 2 and 3 '%02d' must not exceed '31', but they do!\n", futln_fuvst);
+ goto inval;
+ }
+ }
+ futln_rest = atoi(dialing + len - 5);
+ if (futln_rest > 65535) {
+ PDEBUG(DCNETZ, DEBUG_NOTICE, "Last 5 digits '%05d' must not exceed '65535', but they do!\n", futln_rest);
+ goto inval;
+ }
/* 2. check if the subscriber is attached */
rc = find_db(futln_nat, futln_fuvst, futln_rest, NULL, &extended);
@@ -947,25 +972,25 @@ const telegramm_t *cnetz_transmit_telegramm_rufblock(cnetz_t *cnetz)
memset(&telegramm, 0, sizeof(telegramm));
telegramm.opcode = OPCODE_LR_R;
- telegramm.max_sendeleistung = cnetz->ms_power;
- telegramm.bedingte_genauigkeit_der_fufst = si[cnetz->cell_nr].genauigkeit;
+ telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
+ telegramm.bedingte_genauigkeit_der_fufst = si.genauigkeit;
telegramm.zeitschlitz_nr = cnetz->sched_ts;
- telegramm.grenzwert_fuer_einbuchen_und_umbuchen = si[cnetz->cell_nr].grenz_einbuchen;
- telegramm.authentifikationsbit = si[cnetz->cell_nr].authentifikationsbit;
- telegramm.vermittlungstechnische_sperren = si[cnetz->cell_nr].vermittlungstechnische_sperren;
- telegramm.ws_kennung = si[cnetz->cell_nr].ws_kennung;
- telegramm.reduzierungsfaktor = si[cnetz->cell_nr].reduzierung;
- telegramm.fuz_nationalitaet = si[cnetz->cell_nr].fuz_nat;
- telegramm.fuz_fuvst_nr = si[cnetz->cell_nr].fuz_fuvst;
- telegramm.fuz_rest_nr = si[cnetz->cell_nr].fuz_rest;
- telegramm.kennung_fufst = si[cnetz->cell_nr].kennung_fufst;
- telegramm.nachbarschafts_prioritaets_bit = si[cnetz->cell_nr].nachbar_prio;
- telegramm.bewertung_nach_pegel_und_entfernung = si[cnetz->cell_nr].bewertung;
- telegramm.entfernungsangabe_der_fufst = si[cnetz->cell_nr].entfernung;
- telegramm.mittelungsfaktor_fuer_ausloesen = si[cnetz->cell_nr].mittel_ausloesen;
- telegramm.mittelungsfaktor_fuer_umschalten = si[cnetz->cell_nr].mittel_umschalten;
- telegramm.grenzwert_fuer_umschalten = si[cnetz->cell_nr].grenz_umschalten;
- telegramm.grenze_fuer_ausloesen = si[cnetz->cell_nr].grenz_ausloesen;
+ telegramm.grenzwert_fuer_einbuchen_und_umbuchen = si.grenz_einbuchen;
+ telegramm.authentifikationsbit = si.authentifikationsbit;
+ telegramm.vermittlungstechnische_sperren = si.vermittlungstechnische_sperren;
+ telegramm.ws_kennung = si.ws_kennung;
+ telegramm.reduzierungsfaktor = si.reduzierung;
+ telegramm.fuz_nationalitaet = si.fuz_nat;
+ telegramm.fuz_fuvst_nr = si.fuz_fuvst;
+ telegramm.fuz_rest_nr = si.fuz_rest;
+ telegramm.kennung_fufst = si.kennung_fufst;
+ telegramm.nachbarschafts_prioritaets_bit = si.nachbar_prio;
+ telegramm.bewertung_nach_pegel_und_entfernung = si.bewertung;
+ telegramm.entfernungsangabe_der_fufst = si.entfernung;
+ telegramm.mittelungsfaktor_fuer_ausloesen = si.mittel_ausloesen;
+ telegramm.mittelungsfaktor_fuer_umschalten = si.mittel_umschalten;
+ telegramm.grenzwert_fuer_umschalten = si.grenz_umschalten;
+ telegramm.grenze_fuer_ausloesen = si.grenz_ausloesen;
trans = search_transaction(cnetz, TRANS_EM | TRANS_UM | TRANS_WBN | TRANS_WBP | TRANS_VAG | TRANS_VAK | TRANS_ATQ | TRANS_VA | TRANS_WSK);
if (trans) {
@@ -1043,7 +1068,7 @@ vak:
/* change state to busy */
cnetz_new_state(spk, CNETZ_BUSY);
/* schedule switching two slots ahead */
- cnetz_set_sched_dsp_mode(spk, DSP_MODE_SPK_K, 2);
+ cnetz_set_sched_dsp_mode(spk, DSP_MODE_SPK_K, (cnetz->sched_ts + 2) & 31);
/* relink */
unlink_transaction(trans);
link_transaction(trans, spk);
@@ -1088,12 +1113,12 @@ const telegramm_t *cnetz_transmit_telegramm_meldeblock(cnetz_t *cnetz)
memset(&telegramm, 0, sizeof(telegramm));
telegramm.opcode = OPCODE_MLR_M;
- telegramm.max_sendeleistung = cnetz->ms_power;
+ telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
telegramm.ogk_verkehrsanteil = 0; /* must be 0 or phone might not respond to messages in different slot */
- telegramm.teilnehmergruppensperre = si[cnetz->cell_nr].teilnehmergruppensperre;
- telegramm.anzahl_gesperrter_teilnehmergruppen = si[cnetz->cell_nr].anzahl_gesperrter_teilnehmergruppen;
+ telegramm.teilnehmergruppensperre = si.teilnehmergruppensperre;
+ telegramm.anzahl_gesperrter_teilnehmergruppen = si.anzahl_gesperrter_teilnehmergruppen;
telegramm.ogk_vorschlag = CNETZ_OGK_KANAL;
- telegramm.fuz_rest_nr = si[cnetz->cell_nr].fuz_rest;
+ telegramm.fuz_rest_nr = si.fuz_rest;
trans = search_transaction(cnetz, TRANS_VWG | TRANS_MA);
if (trans) {
@@ -1133,15 +1158,15 @@ void cnetz_receive_telegramm_ogk(cnetz_t *cnetz, telegramm_t *telegramm, int blo
switch (opcode) {
case OPCODE_EM_R:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
rufnummer = telegramm2rufnummer(telegramm);
- if (si[cnetz->cell_nr].authentifikationsbit && telegramm->chipkarten_futelg_bit)
+ if (si.authentifikationsbit && telegramm->chipkarten_futelg_bit)
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received Attachment 'Einbuchen' message from Subscriber '%s' with chip card's ID %d (vendor id %d, hardware version %d, software version %d)\n", rufnummer, telegramm->kartenkennung, telegramm->herstellerkennung, telegramm->hardware_des_futelg, telegramm->software_des_futelg);
else
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received Attachment 'Einbuchen' message from Subscriber '%s' with %s card's security code %d\n", rufnummer, (telegramm->chipkarten_futelg_bit) ? "chip":"magnet", telegramm->sicherungs_code);
if (telegramm->erweitertes_frequenzbandbit)
- PDEBUG(DCNETZ, DEBUG_INFO, " -> Phone support extended frequency band\n");
+ PDEBUG(DCNETZ, DEBUG_INFO, " -> Phone supports extended frequency band\n");
if (cnetz->state != CNETZ_IDLE) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "Ignoring Attachment from subscriber '%s', because we are busy becoming SpK.\n", rufnummer);
break;
@@ -1154,15 +1179,15 @@ void cnetz_receive_telegramm_ogk(cnetz_t *cnetz, telegramm_t *telegramm, int blo
valid_frame = 1;
break;
case OPCODE_UM_R:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
rufnummer = telegramm2rufnummer(telegramm);
- if (si[cnetz->cell_nr].authentifikationsbit && telegramm->chipkarten_futelg_bit)
+ if (si.authentifikationsbit && telegramm->chipkarten_futelg_bit)
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received Roaming 'Umbuchen' message from Subscriber '%s' with chip card's ID %d (vendor id %d, hardware version %d, software version %d)\n", rufnummer, telegramm->kartenkennung, telegramm->herstellerkennung, telegramm->hardware_des_futelg, telegramm->software_des_futelg);
else
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received Roaming 'Umbuchen' message from Subscriber '%s' with %s card's security code %d\n", rufnummer, (telegramm->chipkarten_futelg_bit) ? "chip":"magnet", telegramm->sicherungs_code);
if (telegramm->erweitertes_frequenzbandbit)
- PDEBUG(DCNETZ, DEBUG_INFO, " -> Phone support extended frequency band\n");
+ PDEBUG(DCNETZ, DEBUG_INFO, " -> Phone supports extended frequency band\n");
if (cnetz->state != CNETZ_IDLE) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "Ignoring Roaming from subscriber '%s', because we are busy becoming SpK.\n", rufnummer);
break;
@@ -1176,17 +1201,20 @@ void cnetz_receive_telegramm_ogk(cnetz_t *cnetz, telegramm_t *telegramm, int blo
break;
case OPCODE_UWG_R:
case OPCODE_UWK_R:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
rufnummer = telegramm2rufnummer(telegramm);
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received Roaming request 'Umbuchantrag' message from Subscriber '%s' on queue\n", rufnummer);
break;
case OPCODE_VWG_R:
case OPCODE_SRG_R:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
rufnummer = telegramm2rufnummer(telegramm);
- PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received outgoing Call 'Verbindungswunsch gehend' message from Subscriber '%s'\n", rufnummer);
+ if (opcode == OPCODE_VWG_R)
+ PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received outgoing Call 'Verbindungswunsch gehend' message from Subscriber '%s'\n", rufnummer);
+ else
+ PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received outgoing emergency Call 'Sonderruf gehend' message from Subscriber '%s'\n", rufnummer);
if (cnetz->state != CNETZ_IDLE) {
PDEBUG(DCNETZ, DEBUG_NOTICE, "Ignoring Call from subscriber '%s', because we are busy becoming SpK.\n", rufnummer);
break;
@@ -1214,7 +1242,7 @@ void cnetz_receive_telegramm_ogk(cnetz_t *cnetz, telegramm_t *telegramm, int blo
valid_frame = 1;
break;
case OPCODE_ATO_R:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
rufnummer = telegramm2rufnummer(telegramm);
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received release 'Ausloesen des FuTelG im OgK-Betrieb bei WS' message from Subscriber '%s'\n", rufnummer);
@@ -1233,7 +1261,7 @@ void cnetz_receive_telegramm_ogk(cnetz_t *cnetz, telegramm_t *telegramm, int blo
valid_frame = 1;
break;
case OPCODE_MFT_M:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr))
+ if (!match_fuz(telegramm))
break;
trans = search_transaction_number(cnetz, telegramm->futln_nationalitaet, telegramm->futln_heimat_fuvst_nr, telegramm->futln_rest_nr);
if (!trans) {
@@ -1269,21 +1297,22 @@ const telegramm_t *cnetz_transmit_telegramm_spk_k(cnetz_t *cnetz)
transaction_t *trans = cnetz->trans_list;
cnetz_t *ogk;
- memset(&telegramm, 0, sizeof(telegramm));
if (!trans)
- return &telegramm;
-
- telegramm.max_sendeleistung = cnetz->ms_power;
- telegramm.sendeleistungsanpassung = 1;
- telegramm.entfernung = si[cnetz->cell_nr].entfernung;
- telegramm.fuz_nationalitaet = si[cnetz->cell_nr].fuz_nat;
- telegramm.fuz_fuvst_nr = si[cnetz->cell_nr].fuz_fuvst;
- telegramm.fuz_rest_nr = si[cnetz->cell_nr].fuz_rest;
+ return NULL;
+
+ memset(&telegramm, 0, sizeof(telegramm));
+
+ telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
+ telegramm.sendeleistungsanpassung = (cnetz->ms_power < 8) ? 1 : 0;
+ telegramm.entfernung = si.entfernung;
+ telegramm.fuz_nationalitaet = si.fuz_nat;
+ telegramm.fuz_fuvst_nr = si.fuz_fuvst;
+ telegramm.fuz_rest_nr = si.fuz_rest;
telegramm.futln_nationalitaet = trans->futln_nat;
telegramm.futln_heimat_fuvst_nr = trans->futln_fuvst;
telegramm.futln_rest_nr = trans->futln_rest;
telegramm.frequenz_nr = atoi(cnetz->sender.kanal);
- telegramm.bedingte_genauigkeit_der_fufst = si[cnetz->cell_nr].genauigkeit;
+ telegramm.bedingte_genauigkeit_der_fufst = si.genauigkeit;
telegramm.zufallszahl = cnetz->challenge;
switch (trans->state) {
@@ -1292,7 +1321,7 @@ const telegramm_t *cnetz_transmit_telegramm_spk_k(cnetz_t *cnetz)
telegramm.opcode = OPCODE_BQ_K;
if (++trans->repeat >= 8 && !timer_running(&trans->timer)) {
if (cnetz->challenge_valid) {
- if (si[cnetz->cell_nr].authentifikationsbit == 0) {
+ if (si.authentifikationsbit == 0) {
PDEBUG_CHAN(DCNETZ, DEBUG_NOTICE, "Cannot authenticate, because base station does not support it. (Authentication disabled in sysinfo.)\n");
goto no_auth;
}
@@ -1300,7 +1329,7 @@ const telegramm_t *cnetz_transmit_telegramm_spk_k(cnetz_t *cnetz)
PDEBUG_CHAN(DCNETZ, DEBUG_NOTICE, "Cannot authenticate, because mobile station does not support it. (Mobile station has magnetic card.)\n");
goto no_auth;
}
- PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Perform authentication with subscriber's card.\n");
+ PDEBUG_CHAN(DCNETZ, DEBUG_NOTICE, "Perform authentication with subscriber's card, use challenge: 0x%016" PRIx64 "\n", telegramm.zufallszahl);
trans_new_state(trans, TRANS_ZFZ);
timer_start(&trans->timer, 0.0375 * F_ZFZ); /* F_ZFZ frames */
} else {
@@ -1327,15 +1356,7 @@ no_auth:
if (!cnetz->sender.loopback && (cnetz->sched_ts & 7) == 7 && cnetz->sched_r_m && !timer_running(&trans->timer)) {
/* next sub frame */
if (trans->mo_call) {
- int rc;
- trans->callref = ++new_callref;
- rc = call_up_setup(trans->callref, transaction2rufnummer(trans), trans->dialing);
- if (rc < 0) {
- PDEBUG(DCNETZ, DEBUG_NOTICE, "Call rejected (cause %d), releasing.\n", -rc);
- trans->callref = 0;
- cnetz_release(trans, cnetz_cause_isdn2cnetz(-rc));
- goto call_failed;
- }
+ trans->callref = call_up_setup(transaction2rufnummer(trans), trans->dialing, OSMO_CC_NETWORK_CNETZ_NONE, "");
trans_new_state(trans, TRANS_DS);
trans->repeat = 0;
timer_start(&trans->timer, 0.0375 * F_DS); /* F_DS frames */
@@ -1356,7 +1377,7 @@ no_auth:
/* next sub frame */
trans_new_state(trans, TRANS_VHQ_V);
trans->repeat = 0;
- cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_V, 1);
+ cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_V, (cnetz->sched_ts + 1) & 31);
#ifndef DEBUG_SPK
timer_start(&trans->timer, 0.075 + 0.6 * F_VHQ); /* one slot + F_VHQ frames */
#endif
@@ -1373,12 +1394,11 @@ no_auth:
/* next sub frame */
trans_new_state(trans, TRANS_VHQ_V);
trans->repeat = 0;
- cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_V, 1);
+ cnetz_set_sched_dsp_mode(cnetz, DSP_MODE_SPK_V, (cnetz->sched_ts + 1) & 31);
timer_start(&trans->timer, 0.075 + 0.6 * F_VHQ); /* one slot + F_VHQ frames */
}
break;
case TRANS_AF:
-call_failed:
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Sending 'Ausloesen durch FuFSt' on traffic channel\n");
telegramm.opcode = OPCODE_AF_K;
if (++trans->repeat < N_AFKT)
@@ -1451,7 +1471,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
switch (opcode) {
case OPCODE_BEL_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1465,7 +1485,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
trans->try = 0;
break;
case OPCODE_DSQ_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1507,12 +1527,13 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
cnetz_release(trans, CNETZ_CAUSE_GASSENBESETZT); /* when authentication is not valid */
break;
}
+ PDEBUG_CHAN(DCNETZ, DEBUG_NOTICE, "Completed authentication with subscriber's card, challenge response: 0x%016" PRIx64 "\n", telegramm->authorisierungsparameter);
timer_stop(&trans->timer);
trans_new_state(trans, TRANS_VHQ_K);
timer_start(&trans->timer, 0.0375 * F_VHQK); /* F_VHQK frames */
break;
case OPCODE_VH_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1525,7 +1546,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
timer_stop(&trans->timer);
break;
case OPCODE_RTAQ_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1538,7 +1559,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
timer_start(&trans->timer, 0.0375 * F_RTA); /* F_RTA frames */
break;
case OPCODE_AH_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1547,7 +1568,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
PDEBUG_CHAN(DCNETZ, DEBUG_INFO, "Received answer frame 'Abheben' message.\n");
valid_frame = 1;
/* if already received this frame, or if we are already on VHQ or if we are releasing */
- if (trans->state == TRANS_AHQ || trans->state == TRANS_VHQ_K || trans->state == TRANS_AF)
+ if (trans->state == TRANS_AHQ || trans->state == TRANS_VHQ_K || trans->state == TRANS_VHQ_V || trans->state == TRANS_AF)
break;
cnetz->scrambler = telegramm->betriebs_art;
cnetz->scrambler_switch = 0;
@@ -1557,7 +1578,7 @@ void cnetz_receive_telegramm_spk_k(cnetz_t *cnetz, telegramm_t *telegramm)
call_up_answer(trans->callref, transaction2rufnummer(trans));
break;
case OPCODE_AT_K:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1591,9 +1612,10 @@ const telegramm_t *cnetz_transmit_telegramm_spk_v(cnetz_t *cnetz)
transaction_t *trans = cnetz->trans_list;
int meter = 0;
- memset(&telegramm, 0, sizeof(telegramm));
if (!trans)
- return &telegramm;
+ return NULL;
+
+ memset(&telegramm, 0, sizeof(telegramm));
if (cnetz->metering) {
double now = get_time();
@@ -1602,19 +1624,19 @@ const telegramm_t *cnetz_transmit_telegramm_spk_v(cnetz_t *cnetz)
meter = (now - trans->call_start) / (double)cnetz->metering + 1;
}
- telegramm.max_sendeleistung = cnetz->ms_power;
- telegramm.sendeleistungsanpassung = 1;
+ telegramm.max_sendeleistung = cnetz_power2bits(cnetz->ms_power);
+ telegramm.sendeleistungsanpassung = (cnetz->ms_power < 8) ? 1 : 0;
telegramm.ankuendigung_gespraechsende = 0;
telegramm.gebuehren_stand = meter;
- telegramm.fuz_nationalitaet = si[cnetz->cell_nr].fuz_nat;
- telegramm.fuz_fuvst_nr = si[cnetz->cell_nr].fuz_fuvst;
- telegramm.fuz_rest_nr = si[cnetz->cell_nr].fuz_rest;
+ telegramm.fuz_nationalitaet = si.fuz_nat;
+ telegramm.fuz_fuvst_nr = si.fuz_fuvst;
+ telegramm.fuz_rest_nr = si.fuz_rest;
telegramm.futln_nationalitaet = trans->futln_nat;
telegramm.futln_heimat_fuvst_nr = trans->futln_fuvst;
telegramm.futln_rest_nr = trans->futln_rest;
telegramm.frequenz_nr = atoi(cnetz->sender.kanal);
- telegramm.entfernung = si[cnetz->cell_nr].entfernung;
- telegramm.bedingte_genauigkeit_der_fufst = si[cnetz->cell_nr].genauigkeit;
+ telegramm.entfernung = si.entfernung;
+ telegramm.bedingte_genauigkeit_der_fufst = si.genauigkeit;
telegramm.gueltigkeit_des_gebuehrenstandes = 0;
telegramm.ausloesegrund = trans->release_cause;
@@ -1663,7 +1685,7 @@ void cnetz_receive_telegramm_spk_v(cnetz_t *cnetz, telegramm_t *telegramm)
case OPCODE_VH_V:
case OPCODE_USAI_V:
case OPCODE_USAE_V:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
@@ -1695,7 +1717,7 @@ void cnetz_receive_telegramm_spk_v(cnetz_t *cnetz, telegramm_t *telegramm)
cnetz->scrambler_switch = 0;
break;
case OPCODE_AT_V:
- if (!match_fuz(cnetz, telegramm, cnetz->cell_nr)) {
+ if (!match_fuz(telegramm)) {
break;
}
if (!match_futln(telegramm, trans->futln_nat, trans->futln_fuvst, trans->futln_rest)) {
diff --git a/src/cnetz/cnetz.h b/src/cnetz/cnetz.h
index abdab51..d541c2e 100644
--- a/src/cnetz/cnetz.h
+++ b/src/cnetz/cnetz.h
@@ -1,15 +1,16 @@
#include "../libcompandor/compandor.h"
#include "../libtimer/timer.h"
#include "../libmobile/sender.h"
-#include "fsk_demod.h"
#include "../libscrambler/scrambler.h"
+typedef struct cnetz cnetz_t;
+#include "fsk_demod.h"
#include "transaction.h"
#define CNETZ_OGK_KANAL 131
/* dsp modes of transmission */
enum dsp_mode {
- DSP_SCHED_NONE = 0, /* use for sheduling: nothing to shedule */
+ DSP_SCHED_NONE = 0, /* use for scheduling: nothing to schedule */
DSP_MODE_OFF, /* send nothing on unused SpK */
DSP_MODE_OGK, /* send "Telegramm" on OgK */
DSP_MODE_SPK_K, /* send concentrated "Telegramm" SpK */
@@ -63,7 +64,7 @@ struct clock_speed {
};
/* instance of cnetz sender */
-typedef struct cnetz {
+struct cnetz {
sender_t sender;
enum cnetz_chan_type chan_type; /* channel type */
scrambler_t scrambler_tx; /* mirror what we transmit to MS */
@@ -85,16 +86,16 @@ typedef struct cnetz {
/* all cnetz states */
enum cnetz_state state; /* main state of sender */
- /* cell nr selection */
- int cell_auto; /* if set, cell_nr is selected automatically */
- int cell_nr; /* current cell number to use (sysinfo) */
+ /* polarity detection */
+ int auto_polarity; /* if set, polarity of transmitter is selected */
+ int negative_polarity; /* current polarity 0: positive 1: negative */
/* scheduler */
int sched_ts; /* current time slot */
- int sched_last_ts[2]; /* last timeslot we transmitted, so we can match MS timeslot */
+ int sched_last_ts; /* last timeslot we transmitted, to sync time of the receiver */
int sched_r_m; /* Rufblock (0) / Meldeblock (1) */
- int sched_switch_mode; /* counts slots until mode is switched */
- enum dsp_mode sched_dsp_mode; /* what mode shall be switched to */
+ enum dsp_mode sched_dsp_mode; /* what mode shall be switched to */
+ int sched_dsp_mode_ts; /* time slot when to switch mode (-1 = don't switch) */
/* dsp states */
enum dsp_mode dsp_mode; /* current mode: audio, "Telegramm", .... */
@@ -130,7 +131,7 @@ typedef struct cnetz {
struct clock_speed clock_speed;
transaction_t *trans_list; /* list of transactions */
-} cnetz_t;
+};
double cnetz_kanal2freq(int kanal, int unterband);
void cnetz_channel_list(void);
@@ -138,7 +139,7 @@ int cnetz_channel_by_short_name(const char *short_name);
const char *chan_type_short_name(enum cnetz_chan_type chan_type);
const char *chan_type_long_name(enum cnetz_chan_type chan_type);
int cnetz_init(void);
-int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *audiodev, int use_sdr, enum demod_type demod, int samplerate, double rx_gain, int challenge_valid, uint64_t challenge, int response_valid, uint64_t response, int warteschlange, int metering, double dbm0_deviation, int ms_power, int measure_speed, double clock_speed[2], int polarity, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback);
+int cnetz_create(const char *kanal, enum cnetz_chan_type chan_type, const char *audiodev, int use_sdr, enum demod_type demod, int samplerate, double rx_gain, double tx_gain, int challenge_valid, uint64_t challenge, int response_valid, uint64_t response, int warteschlange, int metering, double speech_deviation, int ms_power, int measure_speed, double clock_speed[2], int polarity, int pre_emphasis, int de_emphasis, const char *write_rx_wave, const char *write_tx_wave, const char *read_rx_wave, const char *read_tx_wave, int loopback);
void cnetz_destroy(sender_t *sender);
void cnetz_go_idle(cnetz_t *cnetz);
void cnetz_sync_frame(cnetz_t *cnetz, double sync, int ts);
diff --git a/src/cnetz/database.c b/src/cnetz/database.c
index c6d3765..3a7a30b 100644
--- a/src/cnetz/database.c
+++ b/src/cnetz/database.c
@@ -94,7 +94,7 @@ int update_db(cnetz_t __attribute__((unused)) *cnetz, uint8_t futln_nat, uint8_t
{
cnetz_db_t *db, **dbp;
- /* search transaction for this subsriber */
+ /* search transaction for this subscriber */
db = cnetz_db_head;
while (db) {
if (db->futln_nat == futln_nat
diff --git a/src/cnetz/dsp.c b/src/cnetz/dsp.c
index 1ecd67b..aa44b1b 100644
--- a/src/cnetz/dsp.c
+++ b/src/cnetz/dsp.c
@@ -42,8 +42,8 @@
#define MAX_DEVIATION 4000.0
#define MAX_MODULATION 3000.0
-#define FSK_DEVIATION (2500.0 / dbm0_deviation) /* no emphasis */
-#define MAX_DISPLAY 1.4 /* something above dBm0, no emphasis */
+#define FSK_DEVIATION (2500.0 / speech_deviation) /* no emphasis */
+#define MAX_DISPLAY 1.4 /* something above speech level, no emphasis */
#define BITRATE 5280.0 /* bits per second */
#define BLOCK_BITS 198 /* duration of one time slot including pause at beginning and end */
#define CUT_OFF_OFFSET 300.0 /* cut off frequency for offset filter (level correction between subsequent audio chunks) */
@@ -54,6 +54,27 @@ scrambler_t scrambler_test_scrambler1;
scrambler_t scrambler_test_scrambler2;
#endif
+const char *cnetz_dsp_mode_name(enum dsp_mode mode)
+{
+ static char invalid[16];
+
+ switch (mode) {
+ case DSP_SCHED_NONE:
+ return "SCHED_NONE";
+ case DSP_MODE_OFF:
+ return "OFF";
+ case DSP_MODE_OGK:
+ return "OGK";
+ case DSP_MODE_SPK_K:
+ return "SPK_K";
+ case DSP_MODE_SPK_V:
+ return "SPK_V";
+ }
+
+ sprintf(invalid, "invalid(%d)", mode);
+ return invalid;
+}
+
static sample_t ramp_up[256], ramp_down[256];
void dsp_init(void)
@@ -80,7 +101,7 @@ static void dsp_init_ramp(cnetz_t *cnetz)
}
/* Init transceiver instance. */
-int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], enum demod_type demod, double dbm0_deviation)
+int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], enum demod_type demod, double speech_deviation)
{
int rc = 0;
double size;
@@ -89,7 +110,7 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Init FSK for 'Sender'.\n");
/* set modulation parameters */
- sender_set_fm(&cnetz->sender, MAX_DEVIATION, MAX_MODULATION, dbm0_deviation, MAX_DISPLAY);
+ sender_set_fm(&cnetz->sender, MAX_DEVIATION, MAX_MODULATION, speech_deviation, MAX_DISPLAY);
if (measure_speed) {
cnetz->measure_speed = measure_speed;
@@ -97,25 +118,25 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
}
if (clock_speed[0] > 1000 || clock_speed[0] < -1000 || clock_speed[1] > 1000 || clock_speed[1] < -1000) {
- PDEBUG(DDSP, DEBUG_ERROR, "Clock speed %.1f,%.1f ppm out of range! Plese use range between +-1000 ppm!\n", clock_speed[0], clock_speed[1]);
+ PDEBUG_CHAN(DDSP, DEBUG_ERROR, "Clock speed %.1f,%.1f ppm out of range! Please use range between +-1000 ppm!\n", clock_speed[0], clock_speed[1]);
return -EINVAL;
}
- PDEBUG(DDSP, DEBUG_INFO, "Using clock speed of %.1f ppm (RX) and %.1f ppm (TX) to correct sound card's clock.\n", clock_speed[0], clock_speed[1]);
+ PDEBUG_CHAN(DDSP, DEBUG_INFO, "Using clock speed of %.1f ppm (RX) and %.1f ppm (TX) to correct sound card's clock.\n", clock_speed[0], clock_speed[1]);
cnetz->fsk_bitduration = (double)cnetz->sender.samplerate / ((double)BITRATE / (1.0 + clock_speed[1] / 1000000.0));
cnetz->fsk_tx_bitstep = 1.0 / cnetz->fsk_bitduration;
- PDEBUG(DDSP, DEBUG_DEBUG, "Use %.4f samples for one bit duration @ %d.\n", cnetz->fsk_bitduration, cnetz->sender.samplerate);
+ PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Use %.4f samples for one bit duration @ %d.\n", cnetz->fsk_bitduration, cnetz->sender.samplerate);
size = cnetz->fsk_bitduration * (double)BLOCK_BITS * 16.0; /* 16 blocks for distributed frames */
cnetz->fsk_tx_buffer_size = size * 1.1; /* more to compensate clock speed */
cnetz->fsk_tx_buffer = calloc(sizeof(sample_t), cnetz->fsk_tx_buffer_size);
if (!cnetz->fsk_tx_buffer) {
- PDEBUG(DDSP, DEBUG_ERROR, "No memory!\n");
+ PDEBUG_CHAN(DDSP, DEBUG_ERROR, "No memory!\n");
rc = -ENOMEM;
goto error;
}
- /* create devation and ramp */
+ /* create deviation and ramp */
cnetz->fsk_deviation = FSK_DEVIATION;
dsp_init_ramp(cnetz);
@@ -125,7 +146,7 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
/* create speech buffer */
cnetz->dsp_speech_buffer = calloc(sizeof(sample_t), (int)(cnetz->fsk_bitduration * 70.0)); /* more to compensate clock speed. we just need it to fill 62 bits (60 bits, including pause bits). */
if (!cnetz->dsp_speech_buffer) {
- PDEBUG(DDSP, DEBUG_ERROR, "No memory!\n");
+ PDEBUG_CHAN(DDSP, DEBUG_ERROR, "No memory!\n");
rc = -ENOMEM;
goto error;
}
@@ -159,13 +180,15 @@ int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], en
#ifdef TEST_SCRAMBLE
rc = jitter_create(&scrambler_test_jb, cnetz->sender.samplerate / 5);
if (rc < 0) {
- PDEBUG(DDSP, DEBUG_ERROR, "Failed to init jitter buffer for scrambler test!\n");
+ PDEBUG_CHAN(DDSP, DEBUG_ERROR, "Failed to init jitter buffer for scrambler test!\n");
exit(0);
}
scrambler_setup(&scrambler_test_scrambler1, cnetz->sender.samplerate);
scrambler_setup(&scrambler_test_scrambler2, cnetz->sender.samplerate);
#endif
+ cnetz->sched_dsp_mode_ts = -1;
+
return 0;
error:
@@ -206,7 +229,7 @@ void calc_clock_speed(cnetz_t *cnetz, double samples, int tx, int result)
ti = get_time();
- /* skip some time to avoid false mesurement due to filling of buffers */
+ /* skip some time to avoid false measurement due to filling of buffers */
if (cs->meas_ti == 0.0) {
cs->meas_ti = ti + 1.0;
return;
@@ -408,7 +431,7 @@ static int fsk_block_encode(cnetz_t *cnetz, const char *bits, int ogk)
* the marker is placed in the middle of the 6th bit.
* because we have a transition (ramp) in the middle of each bit.
* the phone will see the position of the marker as start of the 6th bit.
- * the marker marks the pont where the speech is ramped up, so the phone
+ * the marker marks the point where the speech is ramped up, so the phone
* will see the speech completely ramped up after the 6th bit
*/
static int fsk_distributed_encode(cnetz_t *cnetz, const char *bits)
@@ -564,8 +587,9 @@ void sender_receive(sender_t *sender, sample_t *samples, int length, double __at
if (cnetz->dsp_mode != DSP_MODE_OFF) {
iir_process(&cnetz->lp, samples, length);
- fsk_fm_demod(&cnetz->fsk_demod, samples, length);
- }
+ fsk_fm_demod(&cnetz->fsk_demod, samples, length); /* process */
+ } else
+ fsk_fm_demod(&cnetz->fsk_demod, NULL, length); /* just count bit time */
return;
}
@@ -610,7 +634,7 @@ again:
/* start new telegramm, so we generate one */
if (pos == 0) {
- /* a new hyper frame starts */
+ /* a new super frame starts */
if (cnetz->sched_ts == 0 && cnetz->sched_r_m == 0) {
/* measure actual signal speed */
calc_clock_speed(cnetz, (double)cnetz->sender.samplerate * 2.4, 1, 1);
@@ -624,7 +648,7 @@ again:
cnetz_t *master = (cnetz_t *)cnetz->sender.master;
/* it may happen that the sample count does not match with the master,
* because one has a phase wrap before and the other after a sample.
- * then we do it next hyper frame cycle */
+ * then we do it next super frame cycle */
if (master->frame_last_scount == cnetz->fsk_tx_scount) {
PDEBUG(DDSP, DEBUG_DEBUG, "Sync phase of slave to master: master=%.15f, slave=%.15f, diff=%.15f\n", master->frame_last_phase, cnetz->fsk_tx_phase, master->frame_last_phase - cnetz->fsk_tx_phase);
cnetz->fsk_tx_phase = master->frame_last_phase;
@@ -635,50 +659,65 @@ again:
}
/* switch to speech channel */
- if (cnetz->sched_switch_mode && cnetz->sched_r_m == 0) {
- if (--cnetz->sched_switch_mode == 0) {
+ if (cnetz->sched_dsp_mode_ts >= 0 && cnetz->sched_r_m == 0) {
+ if (cnetz->sched_dsp_mode_ts == cnetz->sched_ts) {
/* OgK / SpK(K) / SpK(V) */
- PDEBUG_CHAN(DDSP, DEBUG_INFO, "Switching channel (mode)\n");
+ PDEBUG_CHAN(DDSP, DEBUG_INFO, "Now switching channel mode to %s at timeslot %d\n", cnetz_dsp_mode_name(cnetz->sched_dsp_mode), cnetz->sched_dsp_mode_ts);
+ cnetz->sched_dsp_mode_ts = -1;
cnetz_set_dsp_mode(cnetz, cnetz->sched_dsp_mode);
}
}
switch (cnetz->dsp_mode) {
case DSP_MODE_OGK:
- /* if automatic cell selection is used, toggle between
- * two cells until a response for one cell is received
+ /* if automatic polarity selection is used, toggle between
+ * two polarities (every 4 slots) until a response is received
+ * then continue to use the time slots of that polarity
*/
- if (cnetz->cell_auto)
- cnetz->cell_nr = (cnetz->sched_ts & 7) >> 2;
- /* send on timeslots depending on the cell_nr:
- * cell 0: 0, 8, 16, 24
- * cell 1: 4, 12, 20, 28
+ if (cnetz->auto_polarity)
+ cnetz->negative_polarity = (cnetz->sched_ts & 7) >> 2;
+ /* send on timeslots depending on the polarity:
+ * positive polarity: ts, ts+8, ts+16, ts+24
+ * negative polarity: ts+4, ts+12, ts+20, ts+28
*/
- if (((cnetz->sched_ts & 7) == 0 && cnetz->cell_nr == 0)
- || ((cnetz->sched_ts & 7) == 4 && cnetz->cell_nr == 1)) {
+ if (((cnetz->sched_ts & 7) == (si.timeslot & 7) && cnetz->negative_polarity == 0)
+ || ((cnetz->sched_ts & 7) == ((si.timeslot + 4) & 7) && cnetz->negative_polarity == 1)) {
if (cnetz->sched_r_m == 0) {
- /* set last time slot, so we can match received message from mobile station */
- cnetz->sched_last_ts[cnetz->cell_nr] = cnetz->sched_ts;
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Rufblock' at timeslot %d\n", cnetz->sched_ts);
+ /* set last time slot, so we know to which time slot the message from mobile station belongs to */
+ cnetz->sched_last_ts = cnetz->sched_ts;
bits = cnetz_encode_telegramm(cnetz);
+ if (bits) {
+ PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Rufblock' at timeslot %d\n", cnetz->sched_ts);
+ fsk_block_encode(cnetz, bits, 1);
+ } else
+ fsk_nothing_encode(cnetz);
} else {
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Meldeblock' at timeslot %d\n", cnetz->sched_ts);
bits = cnetz_encode_telegramm(cnetz);
+ if (bits) {
+ PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Meldeblock' at timeslot %d\n", cnetz->sched_ts);
+ fsk_block_encode(cnetz, bits, 1);
+ } else
+ fsk_nothing_encode(cnetz);
}
- fsk_block_encode(cnetz, bits, 1);
} else {
fsk_nothing_encode(cnetz);
}
break;
case DSP_MODE_SPK_K:
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Konzentrierte Signalisierung'\n");
bits = cnetz_encode_telegramm(cnetz);
- fsk_block_encode(cnetz, bits, 0);
+ if (bits) {
+ PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Konzentrierte Signalisierung' at timeslot %d.%d\n", cnetz->sched_ts, cnetz->sched_r_m * 5);
+ fsk_block_encode(cnetz, bits, 0);
+ } else
+ fsk_nothing_encode(cnetz);
break;
case DSP_MODE_SPK_V:
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Verteilte Signalisierung'\n");
bits = cnetz_encode_telegramm(cnetz);
- fsk_distributed_encode(cnetz, bits);
+ if (bits) {
+ PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "Transmitting 'Verteilte Signalisierung' starting at timeslot %d\n", cnetz->sched_ts);
+ fsk_distributed_encode(cnetz, bits);
+ } else
+ fsk_nothing_encode(cnetz);
break;
case DSP_MODE_OFF:
default:
@@ -841,39 +880,24 @@ void unshrink_speech(cnetz_t *cnetz, sample_t *speech_buffer, int count)
cnetz->sender.rxbuf_pos = pos;
}
-const char *cnetz_dsp_mode_name(enum dsp_mode mode)
-{
- static char invalid[16];
-
- switch (mode) {
- case DSP_SCHED_NONE:
- return "SCHED_NONE";
- case DSP_MODE_OFF:
- return "OFF";
- case DSP_MODE_OGK:
- return "OGK";
- case DSP_MODE_SPK_K:
- return "SPK_K";
- case DSP_MODE_SPK_V:
- return "SPK_V";
- }
-
- sprintf(invalid, "invalid(%d)", mode);
- return invalid;
-}
-
void cnetz_set_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode)
{
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, "DSP mode %s -> %s\n", cnetz_dsp_mode_name(cnetz->dsp_mode), cnetz_dsp_mode_name(mode));
- cnetz->dsp_mode = mode;
+ if (mode != cnetz->dsp_mode) {
+ PDEBUG_CHAN(DDSP, DEBUG_INFO, "DSP mode %s -> %s\n", cnetz_dsp_mode_name(cnetz->dsp_mode), cnetz_dsp_mode_name(mode));
+ cnetz->dsp_mode = mode;
+ }
/* we must get rid of partly received frame */
fsk_demod_reset(&cnetz->fsk_demod);
}
-void cnetz_set_sched_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode, int frames_ahead)
+void cnetz_set_sched_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode, int timeslot)
{
- PDEBUG_CHAN(DDSP, DEBUG_DEBUG, " Schedule DSP mode %s -> %s in %d frames\n", cnetz_dsp_mode_name(cnetz->dsp_mode), cnetz_dsp_mode_name(mode), frames_ahead);
+ if (cnetz->sched_dsp_mode_ts < 0 && mode == cnetz->dsp_mode) {
+ PDEBUG_CHAN(DDSP, DEBUG_INFO, "Schedule DSP mode %s not required, we are already in that mode\n", cnetz_dsp_mode_name(mode));
+ return;
+ }
+ PDEBUG_CHAN(DDSP, DEBUG_INFO, "Schedule DSP mode %s -> %s at timeslot %d\n", cnetz_dsp_mode_name(cnetz->dsp_mode), cnetz_dsp_mode_name(mode), timeslot);
cnetz->sched_dsp_mode = mode;
- cnetz->sched_switch_mode = frames_ahead;
+ cnetz->sched_dsp_mode_ts = timeslot;
}
diff --git a/src/cnetz/dsp.h b/src/cnetz/dsp.h
index 34e8f38..7af7c94 100644
--- a/src/cnetz/dsp.h
+++ b/src/cnetz/dsp.h
@@ -1,9 +1,9 @@
void dsp_init(void);
-int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], enum demod_type demod, double dbm0_deviation);
+int dsp_init_sender(cnetz_t *cnetz, int measure_speed, double clock_speed[2], enum demod_type demod, double speech_deviation);
void dsp_cleanup_sender(cnetz_t *cnetz);
void calc_clock_speed(cnetz_t *cnetz, double samples, int tx, int result);
void unshrink_speech(cnetz_t *cnetz, sample_t *speech_buffer, int count);
void cnetz_set_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode);
-void cnetz_set_sched_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode, int frames_ahead);
+void cnetz_set_sched_dsp_mode(cnetz_t *cnetz, enum dsp_mode mode, int timeslot);
diff --git a/src/cnetz/fsk_demod.c b/src/cnetz/fsk_demod.c
index 6362d9e..5ffc8fb 100644
--- a/src/cnetz/fsk_demod.c
+++ b/src/cnetz/fsk_demod.c
@@ -39,13 +39,13 @@
* 0-level of the phone's transmitter is. (level of carrier frequency) Also we
* use receiver and sound card that cause any level to return to 0 after some
* time, Even if the transmitter still transmits a level above or below the
- * carrier frequnecy. Insted we look at the change of the received signal. An
+ * carrier frequnecy. Instead we look at the change of the received signal. An
* upward change indicates 1. An downward change indicates 0. (This may also be
* reversed, if we find out, that we received a sync sequence in reversed
* polarity.) If there is no significant change in level, we keep the value of
* last change, regardless of what level we actually receive.
*
- * To determine a change from noise, we use a theshold. This is set to half of
+ * To determine a change from noise, we use a threshold. This is set to half of
* the level of last received change. This means that the next change may be
* down to a half lower. There is a special case during distributed signaling.
* The first level change of each data chunk raises or falls from 0-level
@@ -65,7 +65,7 @@
* determine the highest slope, the highest difference between subsequent
* samples is used. For every sample we move the window one bit to the right
* (next sample), check if change level matches the threshold and highest slope
- * is in the middle and so forth. Only if the highes slope is exactly in the
+ * is in the middle and so forth. Only if the highest slope is exactly in the
* middle, we declare a change. This means that we detect a slope about half of
* a bit duration later.
*
@@ -342,12 +342,12 @@ static inline void got_bit(fsk_fm_demod_t *fsk, int bit, double change_level)
case FSK_SYNC_NONE:
fsk->rx_sync = (fsk->rx_sync << 1) | bit;
/* use half level of last change for threshold change detection.
- * if there is no change detected for 5 bits, set theshold to
+ * if there is no change detected for 5 bits, set threshold to
* 1 percent, so the 7 pause bits before a frame will make sure
* that the change is below noise level, so the first sync
* bit is detected. then the change is set and adjusted
* for all other bits in the sync sequence.
- * after sync, the theshold is set to half of the average of
+ * after sync, the threshold is set to half of the average of
* all changes in the sync sequence */
if (change_level > 0.0) {
fsk->level_threshold = change_level / 2.0;
@@ -584,55 +584,58 @@ void fsk_fm_demod(fsk_fm_demod_t *fsk, sample_t *samples, int length)
/* process signaling block, sample by sample */
for (i = 0; i < length; i++) {
- fsk->bit_buffer_spl[fsk->bit_buffer_pos++] = samples[i];
- if (fsk->bit_buffer_pos == fsk->bit_buffer_len)
- fsk->bit_buffer_pos = 0;
+ /* samples == NULL, if no processing is wanted, then just count bit time */
+ if (samples) {
+ fsk->bit_buffer_spl[fsk->bit_buffer_pos++] = samples[i];
+ if (fsk->bit_buffer_pos == fsk->bit_buffer_len)
+ fsk->bit_buffer_pos = 0;
- /* for each sample process buffer */
- if (fsk->cnetz->dsp_mode != DSP_MODE_SPK_V) {
- if (fsk->demod_type == FSK_DEMOD_SLOPE)
- find_change_slope(fsk);
- else
- find_change_level(fsk);
- } else {
-#ifdef DEBUG_DECODER
- /* start debugging */
- debug = 1;
-#endif
- /* in distributed signaling, measure over 5 bits, but ignore 5th bit.
- * also reset next_bit, as soon as we reach the window */
- /* note that we start from 0.5, because we detect change 0.5 bits later,
- * because the detector of the change is in the middle of the 1 bit
- * search window */
- t = fmod(fsk->bit_time, BITS_PER_SPK_BLOCK);
- if (t < 0.5) {
- fsk->next_bit = 1.0 - fsk->bits_per_sample;
-#ifdef DEBUG_DECODER
- if (debug && fsk->bit_count)
- fprintf(fsk->debug_fp, "---- SPK(V) BLOCK START ----\n");
-#endif
- fsk->bit_count = 0;
- } else
- if (t >= 0.5 && t < 5.5) {
+ /* for each sample process buffer */
+ if (fsk->cnetz->dsp_mode != DSP_MODE_SPK_V) {
if (fsk->demod_type == FSK_DEMOD_SLOPE)
find_change_slope(fsk);
else
find_change_level(fsk);
- } else
- if (t >= 5.5 && t < 65.5) {
- /* get audio for the duration of 60 bits */
- /* prevent overflow, if speech_size != 0 and SPK_V
- * has been restarted. */
- if (fsk->speech_count < fsk->speech_size)
- fsk->speech_buffer[fsk->speech_count++] = samples[i];
- } else
- if (t >= 65.5) {
- if (fsk->speech_count) {
- unshrink_speech(fsk->cnetz, fsk->speech_buffer, fsk->speech_count);
- fsk->speech_count = 0;
+ } else {
+#ifdef DEBUG_DECODER
+ /* start debugging */
+ debug = 1;
+#endif
+ /* in distributed signaling, measure over 5 bits, but ignore 5th bit.
+ * also reset next_bit, as soon as we reach the window */
+ /* note that we start from 0.5, because we detect change 0.5 bits later,
+ * because the detector of the change is in the middle of the 1 bit
+ * search window */
+ t = fmod(fsk->bit_time, BITS_PER_SPK_BLOCK);
+ if (t < 0.5) {
+ fsk->next_bit = 1.0 - fsk->bits_per_sample;
+#ifdef DEBUG_DECODER
+ if (debug && fsk->bit_count)
+ fprintf(fsk->debug_fp, "---- SPK(V) BLOCK START ----\n");
+#endif
+ fsk->bit_count = 0;
+ } else
+ if (t >= 0.5 && t < 5.5) {
+ if (fsk->demod_type == FSK_DEMOD_SLOPE)
+ find_change_slope(fsk);
+ else
+ find_change_level(fsk);
+ } else
+ if (t >= 5.5 && t < 65.5) {
+ /* get audio for the duration of 60 bits */
+ /* prevent overflow, if speech_size != 0 and SPK_V
+ * has been restarted. */
+ if (fsk->speech_count < fsk->speech_size)
+ fsk->speech_buffer[fsk->speech_count++] = samples[i];
+ } else
+ if (t >= 65.5) {
+ if (fsk->speech_count) {
+ unshrink_speech(fsk->cnetz, fsk->speech_buffer, fsk->speech_count);
+ fsk->speech_count = 0;
+ }
}
- }
+ }
}
fsk->bit_time += fsk->bits_per_sample;
if (fsk->bit_time >= BITS_PER_SUPERFRAME) {
@@ -652,10 +655,11 @@ void fsk_correct_sync(fsk_fm_demod_t *fsk, double offset)
fsk->bit_time = fmod(fsk->bit_time - offset + BITS_PER_SUPERFRAME, BITS_PER_SUPERFRAME);
}
-/* copy sync from one instance to another (used to sync RX of SpK to OgK */
+/* copy sync from one instance to another (used to sync RX of SpK to OgK) */
void fsk_copy_sync(fsk_fm_demod_t *fsk_to, fsk_fm_demod_t *fsk_from)
{
fsk_to->bit_time = fsk_from->bit_time;
+ fsk_demod_reset(fsk_to);
}
void fsk_demod_reset(fsk_fm_demod_t *fsk)
diff --git a/src/cnetz/fsk_demod.h b/src/cnetz/fsk_demod.h
index 5e45a8b..fda73a5 100644
--- a/src/cnetz/fsk_demod.h
+++ b/src/cnetz/fsk_demod.h
@@ -1,6 +1,6 @@
-#define BITS_PER_SUPERFRAME 12672.0 /* super frame (Oberrahmen) has duration of excactly 2.4 seconds */
-#define BITS_PER_BLOCK 198.0 /* block has duration of excactly 37.5 milli seconds */
+#define BITS_PER_SUPERFRAME 12672.0 /* super frame (Oberrahmen) has duration of exactly 2.4 seconds */
+#define BITS_PER_BLOCK 198.0 /* block has duration of exactly 37.5 milli seconds */
#define BITS_PER_SPK_BLOCK 66.0 /* spk block has a duration of exactly 12.5 milli seconds */
/* fsk rx sync state */
@@ -16,8 +16,6 @@ enum demod_type {
FSK_DEMOD_LEVEL, /* check for zero crossing (good for SDR) */
};
-typedef struct cnetz cnetz_t;
-
typedef struct fsk_fm_demod {
cnetz_t *cnetz; /* pointer back to cnetz instance */
diff --git a/src/cnetz/main.c b/src/cnetz/main.c
index df0403a..3e5ba3e 100644
--- a/src/cnetz/main.c
+++ b/src/cnetz/main.c
@@ -36,6 +36,7 @@
#include "dsp.h"
#include "telegramm.h"
#include "ansage.h"
+#include "stations.h"
/* settings */
int num_chan_type = 0;
@@ -44,15 +45,17 @@ int measure_speed = 0;
double clock_speed[2] = { 0.0, 0.0 };
int set_clock_speed = 0;
const char *flip_polarity = "auto";
-int ms_power = 0; /* 0..3 */
+int ms_power = 6; /* 1..8 */
int warteschlange = 1;
int challenge_valid;
uint64_t challenge;
int response_valid;
uint64_t response;
+uint8_t timeslot = 0;
uint8_t fuz_nat = 1;
-uint8_t fuz_fuvst = 1;
-uint8_t fuz_rest = 38;
+uint8_t fuz_fuvst = 4;
+uint8_t fuz_rest = 66;
+const char *fuz_name = NULL;
uint8_t kennung_fufst = 1; /* normal prio */
uint8_t authentifikationsbit = 0;
uint8_t ws_kennung = 0; /* no queue */
@@ -71,7 +74,7 @@ int8_t futln_sperre_start = -1; /* no blocking */
int8_t futln_sperre_end = -1; /* no range */
enum demod_type demod = FSK_DEMOD_AUTO;
int metering = 20;
-double dbm0_deviation = 4000.0; /* best results with all my equipment */
+double speech_deviation = 4000.0; /* best results with all my equipment */
void print_help(const char *arg0)
{
@@ -90,16 +93,17 @@ void print_help(const char *arg0)
printf(" -F --flip-polarity no | yes | auto\n");
printf(" Flip polarity of transmitted FSK signal. If yes, the sound card\n");
printf(" generates a negative signal rather than a positive one. If auto, the\n");
- printf(" base station generates two virtual base stations with both polarities.\n");
+ printf(" base station uses double time slots with alternating polarity.\n");
printf(" Once a mobile registers, the correct polarity is selected and used.\n");
printf(" (default = %s)\n", flip_polarity);
printf(" Note: This has no effect with SDR.\n");
printf(" -P --ms-power <power level>\n");
- printf(" Give power level of the mobile station 0..3. (default = '%d')\n", ms_power);
- printf(" 0 = 50-125 mW; 1 = 0.5-1 W; 2 = 4-8 W; 3 = 10-20 W\n");
+ printf(" Give power level of the mobile station: 1, 2, 4, 6, 8 (default = '%d')\n", ms_power);
+ printf(" 1 = 7.5-20 W; 2 = 4-8 W; 4 = 0.5-1 W; 6 = 50-125 mW; 8 = 2-10 mW\n");
+ printf(" Power level 8 starts with level 6 and is then reduced on SpK.\n");
printf(" -A --authentication <challenge>\n");
printf(" Enable authorization flag on the base station and use given challenge\n");
- printf(" as autorization random. Depending on the key inside the card you will\n");
+ printf(" as authorization random. Depending on the key inside the card you will\n");
printf(" get a response. Any response is accepted. Phone must have smart card!\n");
printf(" The challenge can be any 64 bit (hex) number like: 0x0123456789abcdef\n");
printf(" Note: Authentication is automatically enabled for the base station\n");
@@ -116,7 +120,12 @@ void print_help(const char *arg0)
printf(" -V --voice-deviation <2400..4000 Hz>\n");
printf(" It is unclear what the actual voice deviation is. Please decrease, if\n");
printf(" mobile's microphone is too loud and speaker is too quiet.\n");
- printf(" (default = %.0f)\n", dbm0_deviation);
+ printf(" (default = %.0f)\n", speech_deviation);
+ printf(" -S --sysinfo timeslot=<0..31>\n");
+ printf(" Set time slot of OgK broadcast. There are 32 time slots, but every 8th\n");
+ printf(" slot is used. This means if you select time slot 0, also slots 8, 16\n");
+ printf(" and 24 will be used. If you select slot 14, also slots 6, 22 and 30\n");
+ printf(" will be used. (default = %d)\n", timeslot);
printf(" -S --sysinfo fuz-nat=<nat>\n");
printf(" Set country ID of base station. All IDs were used inside Germany only.\n");
printf(" (default = %d)\n", fuz_nat);
@@ -124,6 +133,11 @@ void print_help(const char *arg0)
printf(" Set switching center ID of base station. (default = %d)\n", fuz_fuvst);
printf(" -S --sysinfo fuz-rest=<id>\n");
printf(" Set cell ID of base station. (default = %d)\n", fuz_rest);
+ printf(" -S --sysinfo fuz=<nat>,<fuvst>,<rest>\n");
+ printf(" Set country, switching center and cell ID of base station at once.\n");
+ printf(" -S --sysinfo fuz-name=<name>\n");
+ printf(" Set country, switching center and cell ID by providing name or prefix\n");
+ printf(" Use 'list' to get a list of all base sstation names.\n");
printf(" -S --sysinfo kennung-fufst=<id>\n");
printf(" Set priority for selecting base station. (default = %d)\n", kennung_fufst);
printf(" 0 = Test (Only special mobile stations may register.)\n");
@@ -131,10 +145,10 @@ void print_help(const char *arg0)
printf(" 2 = Higher priority base station.\n");
printf(" 3 = Highest priority base station.\n");
printf(" Note: Priority has no effect, because there is only one base station.\n");
- printf(" -A --sysinfo authentifikationsbit=auth>\n");
+ printf(" -S --sysinfo auth=<auth>\n");
printf(" Enable authentication flag on the base station. Since we cannot\n");
printf(" authenticate, because we don't know the secret key and the algorithm,\n");
- printf(" we just accept any card. Useful get the vendor IDs of the phone.\n");
+ printf(" we just accept any card. Useful to get the vendor IDs of the phone.\n");
printf(" 0 = Disable. Even chip card phones behave like magnetic card phones.\n");
printf(" 1 = Enable. Chip card phones send their card ID.\n");
printf(" (default = %d)\n", authentifikationsbit);
@@ -259,7 +273,7 @@ static void add_options(void)
static int handle_options(int short_option, int argi, char **argv)
{
int rc;
- const char *p;
+ const char *p, *q;
switch (short_option) {
case 'T':
@@ -300,7 +314,11 @@ static int handle_options(int short_option, int argi, char **argv)
}
break;
case 'P':
- ms_power = atoi_limit(argv[argi], 0, 3);
+ ms_power = atoi_limit(argv[argi], 0, 9);
+ if (ms_power < 1 || ms_power == 3 || ms_power == 5 || ms_power == 7 || ms_power > 8) {
+ fprintf(stderr, "Given power level '%s' is illegal, use '-h' for help!\n", argv[argi]);
+ return -EINVAL;
+ }
break;
case 'A':
authentifikationsbit = 1;
@@ -320,7 +338,7 @@ static int handle_options(int short_option, int argi, char **argv)
metering = atoi(argv[argi]);
break;
case 'V':
- dbm0_deviation = atoi_limit(argv[argi], 2400, 4000);
+ speech_deviation = atoi_limit(argv[argi], 2400, 4000);
break;
case 'S':
p = strchr(argv[argi], '=');
@@ -329,15 +347,37 @@ static int handle_options(int short_option, int argi, char **argv)
return -EINVAL;
}
p++;
+ if (!strncasecmp(argv[argi], "timeslot=", p - argv[argi])) {
+ timeslot = atoi_limit(p, 0, 31);
+ } else
if (!strncasecmp(argv[argi], "fuz-nat=", p - argv[argi])) {
fuz_nat = atoi_limit(p, 0, 7);
} else
if (!strncasecmp(argv[argi], "fuz-fuvst=", p - argv[argi])) {
- fuz_fuvst = atoi_limit(p, 0, 32);
+ fuz_fuvst = atoi_limit(p, 0, 31);
} else
if (!strncasecmp(argv[argi], "fuz-rest=", p - argv[argi])) {
fuz_rest = atoi_limit(p, 0, 255);
} else
+ if (!strncasecmp(argv[argi], "fuz=", p - argv[argi])) {
+ q = strchr(p, ',');
+ if (!q) {
+error_fuz:
+ fprintf(stderr, "You must give 3 values for 'fuz'.\n");
+ return -EINVAL;
+ }
+ fuz_nat = atoi_limit(p, 0, 7);
+ p = q + 1;
+ q = strchr(p, ',');
+ if (!q)
+ goto error_fuz;
+ fuz_fuvst = atoi_limit(p, 0, 31);
+ p = q + 1;
+ fuz_rest = atoi_limit(p, 0, 255);
+ } else
+ if (!strncasecmp(argv[argi], "fuz-name=", p - argv[argi])) {
+ fuz_name = strdup(p);
+ } else
if (!strncasecmp(argv[argi], "kennung-fufst=", p - argv[argi])) {
kennung_fufst = atoi_limit(p, 0, 3);
} else
@@ -433,6 +473,8 @@ int main(int argc, char *argv[])
init_besetzton();
init_ansage();
+ init_station();
+
main_mobile_init();
/* handle options / config file */
@@ -452,6 +494,25 @@ int main(int argc, char *argv[])
}
}
+ /* resolve name of base station */
+ if (fuz_name) {
+ const char *error;
+
+ /* get data from name */
+ if (!strcmp(fuz_name, "list")) {
+ station_list();
+ return 0;
+ }
+ /* resolve */
+ error = get_station_id(fuz_name, &fuz_nat, &fuz_fuvst, &fuz_rest);
+ if (error) {
+ fprintf(stderr, "%s\n", error);
+ return -EINVAL;
+ }
+ }
+ /* set or complete name (in case of prefix was given) */
+ fuz_name = get_station_name(fuz_nat, fuz_fuvst, fuz_rest);
+
if (!num_kanal) {
printf("No channel (\"Kanal\") is specified, I suggest channel %d.\n\n", CNETZ_OGK_KANAL);
mandatory = 1;
@@ -504,7 +565,7 @@ int main(int argc, char *argv[])
}
if (anzahl_gesperrter_teilnehmergruppen)
printf("Blocked subscriber with number's last 4 bits from 0x%x to 0x%x\n", teilnehmergruppensperre, (teilnehmergruppensperre + anzahl_gesperrter_teilnehmergruppen - 1) & 0xf);
- init_sysinfo(fuz_nat, fuz_fuvst, fuz_rest, kennung_fufst, authentifikationsbit, ws_kennung, fuvst_sperren, grenz_einbuchen, grenz_umschalten, grenz_ausloesen, mittel_umschalten, mittel_ausloesen, genauigkeit, bewertung, entfernung, reduzierung, nachbar_prio, teilnehmergruppensperre, anzahl_gesperrter_teilnehmergruppen);
+ init_sysinfo(timeslot, fuz_nat, fuz_fuvst, fuz_rest, kennung_fufst, authentifikationsbit, ws_kennung, fuvst_sperren, grenz_einbuchen, grenz_umschalten, grenz_ausloesen, mittel_umschalten, mittel_ausloesen, genauigkeit, bewertung, entfernung, reduzierung, nachbar_prio, teilnehmergruppensperre, anzahl_gesperrter_teilnehmergruppen);
dsp_init();
rc = init_telegramm();
if (rc < 0) {
@@ -526,7 +587,7 @@ int main(int argc, char *argv[])
/* OgK must be the first channel, so it becomes master. This is required for syncing SPK channels */
if (i != 0) {
- fprintf(stderr, "The first channel you defined must be OgK (control) or OgK/SPK (control/speech) channel type. Quitting!\n");
+ fprintf(stderr, "The first channel you define must be OgK (control) or OgK/SPK (control/speech) channel type. Quitting!\n");
goto fail;
}
@@ -574,7 +635,7 @@ int main(int argc, char *argv[])
/* create transceiver instance */
for (i = 0; i < num_kanal; i++) {
- rc = cnetz_create(kanal[i], chan_type[i], audiodev[i], use_sdr, demod, samplerate, rx_gain, challenge_valid, challenge, response_valid, response, warteschlange, metering, dbm0_deviation, ms_power, (i == 0) ? measure_speed : 0, clock_speed, polarity, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback);
+ rc = cnetz_create(kanal[i], chan_type[i], audiodev[i], use_sdr, demod, samplerate, rx_gain, tx_gain, challenge_valid, challenge, response_valid, response, warteschlange, metering, speech_deviation, ms_power, (i == 0) ? measure_speed : 0, clock_speed, polarity, do_pre_emphasis, do_de_emphasis, write_rx_wave, write_tx_wave, read_rx_wave, read_tx_wave, loopback);
if (rc < 0) {
fprintf(stderr, "Failed to create \"Sender\" instance. Quitting!\n");
goto fail;
@@ -586,7 +647,7 @@ int main(int argc, char *argv[])
}
}
- main_mobile(&quit, latency, interval, NULL, station_id, 7);
+ main_mobile("cnetz", &quit, latency, interval, NULL, station_id, 7);
fail:
flush_db();
diff --git a/src/cnetz/stations.c b/src/cnetz/stations.c
new file mode 100644
index 0000000..1293cda
--- /dev/null
+++ b/src/cnetz/stations.c
@@ -0,0 +1,2408 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include "stations.h"
+
+/* The list of cell towers is ripped from BSA61 phone's firmware */
+
+static struct cnetz_stations {
+ char standort[64];
+ uint8_t nat, fuvst, rest;
+ int in1991, in1999;
+} cnetz_stations[] = {
+/* Standort Nat FuVST Rest 1991 1999 */
+ { "Oberh.32", 1, 2, 1, 0, 1999, },
+ { "Oberh. 0", 1, 2, 5, 0, 1999, },
+ { "Wupp.18", 1, 2, 6, 0, 1999, },
+ { "Oberh.21", 1, 2, 7, 1991, 1999, },
+ { "Duisb.21", 1, 2, 8, 1991, 1999, },
+ { "Heilighs", 1, 2, 9, 1991, 1999, },
+ { "Essen 1", 1, 2, 10, 0, 1999, },
+ { "Velb.Lan", 1, 2, 11, 1991, 1999, },
+ { "Duisb.40", 1, 2, 12, 1991, 1999, },
+ { "Bottrop0", 1, 2, 13, 1991, 1999, },
+ { "Gelsenk1", 1, 2, 14, 1991, 1999, },
+ { "Essen 35", 1, 2, 15, 1991, 1999, },
+ { "Duisb.25", 1, 2, 16, 1991, 1999, },
+ { "VelbNev2", 1, 2, 17, 1991, 1999, },
+ { "Wupp. 30", 1, 2, 18, 1991, 1999, },
+ { "Essen 28", 1, 2, 19, 1991, 1999, },
+ { "Kirchhl4", 1, 2, 20, 0, 1999, },
+ { "Gelsenk7", 1, 2, 21, 1991, 1999, },
+ { "Wupp. 34", 1, 2, 22, 1991, 1999, },
+ { "Wupp. 35", 1, 2, 23, 0, 1999, },
+ { "Oberh.23", 1, 2, 24, 0, 1999, },
+ { "Neviges4", 1, 2, 25, 0, 1999, },
+ { "Duisb.42", 1, 2, 26, 0, 1999, },
+ { "Rheinhsn", 1, 2, 27, 0, 1999, },
+ { "Essen 12", 1, 2, 28, 0, 1999, },
+ { "Homberg1", 1, 2, 29, 0, 1999, },
+ { "ReesMehr", 1, 2, 30, 0, 1999, },
+ { "Essen 13", 1, 2, 31, 1991, 1999, },
+ { "Essen 15", 1, 2, 32, 1991, 1999, },
+ { "Heiden 1", 1, 2, 33, 0, 1999, },
+ { "Voerde 2", 1, 2, 34, 1991, 1999, },
+ { "Duisb. 0", 1, 2, 35, 1991, 1999, },
+ { "Velbert1", 1, 2, 36, 1991, 1999, },
+ { "Oberh.26", 1, 2, 37, 1991, 1999, },
+ { "Gelsnk58", 1, 2, 38, 0, 1999, },
+ { "Essen 8", 1, 2, 39, 0, 1999, },
+ { "Wupp. 8", 1, 2, 40, 0, 1999, },
+ { "Oberh.18", 1, 2, 41, 0, 1999, },
+ { "Oberh.30", 1, 2, 43, 0, 1999, },
+ { "Wesel 0", 1, 2, 44, 0, 1999, },
+ { "Borken 0", 1, 2, 45, 0, 1999, },
+ { "Velen 20", 1, 2, 46, 0, 1999, },
+ { "Bocholt0", 1, 2, 47, 0, 1999, },
+ { "Huenxe 1", 1, 2, 48, 0, 1999, },
+ { "Isselbg1", 1, 2, 49, 0, 1999, },
+ { "EmElten1", 1, 2, 50, 0, 1999, },
+ { "Bochum 3", 1, 2, 51, 0, 1999, },
+ { "Dorsten0", 1, 2, 52, 0, 1999, },
+ { "Schermb2", 1, 2, 53, 0, 1999, },
+ { "Raesfeld", 1, 2, 54, 0, 1999, },
+ { "Wupp. 4", 1, 2, 55, 0, 1999, },
+ { "Hueckwg2", 1, 2, 57, 0, 1999, },
+ { "Herne 1", 1, 2, 58, 0, 1999, },
+ { "Bochum47", 1, 2, 59, 0, 1999, },
+ { "Hattingn", 1, 2, 60, 0, 1999, },
+ { "Sprockhv", 1, 2, 61, 0, 1999, },
+ { "Gladbk20", 1, 2, 62, 0, 1999, },
+ { "Ahaus 0", 1, 2, 63, 0, 1999, },
+ { "Bochum 1", 1, 2, 64, 0, 1999, },
+ { "Herten", 1, 2, 66, 0, 1999, },
+ { "Oberh. 1", 1, 2, 68, 1991, 1999, },
+ { "Wulfen 0", 1, 2, 70, 0, 1999, },
+ { "Essen0Ke", 1, 2, 76, 1991, 1999, },
+ { "Vreden 0", 1, 2, 79, 0, 1999, },
+ { "Gronau 0", 1, 2, 81, 0, 1999, },
+ { "Dinslak2", 1, 2, 82, 1991, 1999, },
+ { "Bochum78", 1, 2, 84, 0, 1999, },
+ { "Bochum 0", 1, 2, 88, 0, 1999, },
+ { "Ob9 Bake", 1, 2, 89, 1991, 1999, },
+ { "Coesfeld", 1, 2, 92, 0, 1999, },
+ { "Schoepp1", 1, 2, 93, 0, 1999, },
+ { "Stadtloh", 1, 2, 98, 0, 1999, },
+ { "Wupp2Bak", 1, 2, 99, 1991, 1999, },
+ { "Neuss 10", 2, 2, 1, 0, 1999, },
+ { "Dssd57Me", 2, 2, 2, 0, 1999, },
+ { "Neuss 7", 2, 2, 4, 0, 1999, },
+ { "Ratingn5", 2, 2, 6, 0, 1999, },
+ { "Solingn2", 2, 2, 7, 0, 1999, },
+ { "Dssd 18", 2, 2, 8, 0, 1999, },
+ { "Dssd 58", 2, 2, 9, 0, 1999, },
+ { "Neuss 14", 2, 2, 10, 1991, 1999, },
+ { "NeussNor", 2, 2, 11, 1991, 1999, },
+ { "Dssd 30", 2, 2, 12, 1991, 1999, },
+ { "Langenf3", 2, 2, 13, 0, 1999, },
+ { "Dssd 75", 2, 2, 14, 0, 1999, },
+ { "Mettman7", 2, 2, 15, 0, 1999, },
+ { "Dssd 19", 2, 2, 17, 0, 1999, },
+ { "Grevenb3", 2, 2, 18, 0, 1999, },
+ { "Grevenb2", 2, 2, 19, 0, 1999, },
+ { "Ratingn1", 2, 2, 20, 1991, 1999, },
+ { "Dssd 40", 2, 2, 22, 0, 1999, },
+ { "Neuss 8", 2, 2, 23, 1991, 1999, },
+ { "Dssd 4", 2, 2, 24, 1991, 1999, },
+ { "Hilden 6", 2, 2, 26, 1991, 1999, },
+ { "Dssd 12", 2, 2, 27, 1991, 1999, },
+ { "Ratingn3", 2, 2, 29, 0, 1999, },
+ { "Remsch.4", 2, 2, 30, 0, 1999, },
+ { "Krefeld4", 2, 2, 31, 0, 1999, },
+ { "MeerbuL0", 2, 2, 33, 0, 1999, },
+ { "Remsch.4", 2, 2, 34, 1991, 0, },
+ { "Osterat1", 2, 2, 35, 0, 1999, },
+ { "Krefeld5", 2, 2, 36, 0, 1999, },
+ { "MeerbuB1", 2, 2, 37, 1991, 1999, },
+ { "Dssd 27", 2, 2, 38, 1991, 1999, },
+ { "Dssd 53", 2, 2, 39, 1991, 1999, },
+ { "Dormag.", 2, 2, 40, 1991, 0, },
+ { "Lev.Opl.", 2, 2, 41, 1991, 0, },
+ { "Willich1", 2, 2, 42, 0, 1999, },
+ { "Solingn1", 2, 2, 43, 1991, 1999, },
+ { "Mgl 18", 2, 2, 44, 0, 1999, },
+ { "Haan", 2, 2, 45, 0, 1999, },
+ { "Krefeld7", 2, 2, 46, 0, 1999, },
+ { "Dssd 9", 2, 2, 47, 0, 1999, },
+ { "Dssd 2", 2, 2, 49, 0, 1999, },
+ { "Langnf89", 2, 2, 52, 0, 1999, },
+ { "Mettman2", 2, 2, 66, 1991, 1999, },
+ { "Wupp. 23", 2, 2, 78, 0, 1999, },
+ { "Dssd10Ba", 2, 2, 88, 1991, 1999, },
+ { "Bursche.", 2, 2, 93, 1991, 0, },
+ { "Aachen 9", 3, 2, 1, 0, 1999, },
+ { "Krefld19", 3, 2, 2, 1991, 1999, },
+ { "Mgl 60", 3, 2, 3, 0, 1999, },
+ { "Mgl 3", 3, 2, 4, 1991, 1999, },
+ { "Viersen4", 3, 2, 5, 1991, 1999, },
+ { "Bedburg0", 3, 2, 8, 0, 1999, },
+ { "Grev.Ka.", 3, 2, 11, 1991, 0, },
+ { "Mgl.Rhy8", 3, 2, 13, 0, 1999, },
+ { "Selfkant", 3, 2, 15, 0, 1999, },
+ { "WillAnr0", 3, 2, 17, 0, 1999, },
+ { "Wuersel2", 3, 2, 19, 0, 1999, },
+ { "Mgl 8", 3, 2, 22, 0, 1999, },
+ { "Huertgwd", 3, 2, 25, 1991, 0, },
+ { "Langerw1", 3, 2, 26, 0, 1999, },
+ { "Xanten 1", 3, 2, 27, 1991, 1999, },
+ { "Wesel", 3, 2, 28, 1991, 0, },
+ { "Kleve 7", 3, 2, 29, 1991, 1999, },
+ { "Elten", 3, 2, 30, 1991, 0, },
+ { "Geldern0", 3, 2, 31, 1991, 1999, },
+ { "Moers 0", 3, 2, 32, 1991, 1999, },
+ { "Viersen0", 3, 2, 33, 0, 1999, },
+ { "Juechen1", 3, 2, 36, 0, 1999, },
+ { "Nettetal", 3, 2, 40, 1991, 1999, },
+ { "Viersen1", 3, 2, 42, 1991, 1999, },
+ { "Schwalm9", 3, 2, 43, 1991, 1999, },
+ { "Juechen4", 3, 2, 44, 1991, 1999, },
+ { "MglRhey7", 3, 2, 45, 1991, 1999, },
+ { "Stolbg.4", 3, 2, 46, 1991, 1999, },
+ { "Stolbg.3", 3, 2, 47, 1991, 0, },
+ { "Eschwei2", 3, 2, 48, 1991, 1999, },
+ { "Alsdorf3", 3, 2, 49, 1991, 1999, },
+ { "AaKornel", 3, 2, 50, 1991, 1999, },
+ { "Aachn700", 3, 2, 51, 0, 1999, },
+ { "Aachn120", 3, 2, 52, 1991, 1999, },
+ { "Aachn500", 3, 2, 53, 1991, 1999, },
+ { "Erkelenz", 3, 2, 54, 1991, 1999, },
+ { "Schleidn", 3, 2, 56, 1991, 0, },
+ { "Geilenk0", 3, 2, 57, 1991, 1999, },
+ { "Heinsbg0", 3, 2, 58, 1991, 1999, },
+ { "Juelich3", 3, 2, 59, 1991, 1999, },
+ { "Simmerat", 3, 2, 61, 1991, 0, },
+ { "Nettersh", 3, 2, 62, 1991, 0, },
+ { "Kevelaer", 3, 2, 63, 0, 1999, },
+ { "Straelen", 3, 2, 64, 1991, 1999, },
+ { "NeukVluy", 3, 2, 65, 1991, 1999, },
+ { "Bocholt0", 3, 2, 66, 1991, 0, },
+ { "Kalkar 7", 3, 2, 67, 0, 1999, },
+ { "Krefeld4", 3, 2, 69, 1991, 0, },
+ { "Willich", 3, 2, 71, 1991, 0, },
+ { "Wegberg", 3, 2, 77, 0, 1999, },
+ { "Grev.br.", 3, 2, 79, 1991, 0, },
+ { "HerzgRa2", 3, 2, 80, 0, 1999, },
+ { "Kevela10", 3, 2, 81, 0, 1999, },
+ { "Sonsbeck", 3, 2, 82, 0, 1999, },
+ { "Mgl 401", 3, 2, 84, 0, 1999, },
+ { "Aachen 1", 3, 2, 86, 1991, 1999, },
+ { "Kempen 4", 3, 2, 87, 0, 1999, },
+ { "Linnich1", 3, 2, 88, 0, 1999, },
+ { "Goch 0", 3, 2, 90, 0, 1999, },
+ { "Rheinbg2", 3, 2, 98, 0, 1999, },
+ { "Aldenhov", 3, 2, 99, 0, 1999, },
+ { "Dtmd3Bak", 4, 2, 1, 1991, 1999, },
+ { "Gevelsb.", 4, 2, 12, 1991, 0, },
+ { "Hagen 2", 4, 2, 13, 1991, 0, },
+ { "Witten12", 4, 2, 14, 1991, 0, },
+ { "Bochum 0", 4, 2, 17, 1991, 0, },
+ { "Herne 1", 4, 2, 18, 1991, 0, },
+ { "Holzwi.", 4, 2, 25, 1991, 0, },
+ { "Cast.Ra.", 4, 2, 27, 1991, 0, },
+ { "Dortm.10", 4, 2, 28, 1991, 0, },
+ { "Lethma.7", 4, 2, 29, 1991, 0, },
+ { "Witten10", 4, 2, 31, 1991, 0, },
+ { "Luenen 0", 4, 2, 33, 1991, 0, },
+ { "Boenen", 4, 2, 34, 1991, 0, },
+ { "Iserlohn", 4, 2, 36, 1991, 0, },
+ { "Menden11", 4, 2, 37, 1991, 0, },
+ { "Kamen", 4, 2, 38, 1991, 0, },
+ { "Werne", 4, 2, 39, 1991, 0, },
+ { "Hamm", 4, 2, 40, 1991, 0, },
+ { "Dtmd-Sc.", 4, 2, 49, 1991, 0, },
+ { "Schwerte", 4, 2, 73, 1991, 0, },
+ { "Recklhs.", 4, 2, 74, 1991, 0, },
+ { "Datteln", 4, 2, 80, 1991, 0, },
+ { "Wattensc", 4, 2, 83, 1991, 0, },
+ { "Stiepel", 4, 2, 84, 1991, 0, },
+ { "Altenbg0", 5, 2, 1, 0, 1999, },
+ { "Lennest1", 5, 2, 2, 1991, 1999, },
+ { "Attendo7", 5, 2, 3, 1991, 1999, },
+ { "Marl 0", 5, 2, 4, 1991, 0, },
+ { "NeheimH7", 5, 2, 5, 1991, 1999, },
+ { "Muenst42", 5, 2, 6, 1991, 1999, },
+ { "Marsberg", 5, 2, 7, 0, 1999, },
+ { "Lippst.0", 5, 2, 8, 1991, 1999, },
+ { "Roelvede", 5, 2, 9, 0, 1999, },
+ { "Mesched7", 5, 2, 10, 0, 1999, },
+ { "Hallenb7", 5, 2, 11, 0, 1999, },
+ { "Soest 10", 5, 2, 12, 0, 1999, },
+ { "Schalksm", 5, 2, 13, 0, 1999, },
+ { "Olsberg7", 5, 2, 14, 0, 1999, },
+ { "Ostbever", 5, 2, 15, 0, 1999, },
+ { "Arnsberg", 5, 2, 16, 0, 1999, },
+ { "Beckum 3", 5, 2, 17, 1991, 1999, },
+ { "Sendenh", 5, 2, 18, 1991, 1999, },
+ { "Altena 8", 5, 2, 19, 0, 1999, },
+ { "Ahlen 0", 5, 2, 20, 0, 1999, },
+ { "Luedinh2", 5, 2, 21, 1991, 1999, },
+ { "Mesched1", 5, 2, 22, 1991, 1999, },
+ { "Werl 0", 5, 2, 23, 1991, 1999, },
+ { "Moehnese", 5, 2, 24, 1991, 1999, },
+ { "SchmBoed", 5, 2, 25, 1991, 1999, },
+ { "Winterbg", 5, 2, 26, 1991, 1999, },
+ { "CastRaux", 5, 2, 27, 0, 1999, },
+ { "MSNienbe", 5, 2, 28, 0, 1999, },
+ { "Letmathe", 5, 2, 29, 0, 1999, },
+ { "Lueden.2", 5, 2, 30, 1991, 1999, },
+ { "Witten10", 5, 2, 31, 1991, 1999, },
+ { "Meinerzh", 5, 2, 32, 1991, 1999, },
+ { "Luenen 0", 5, 2, 33, 1991, 1999, },
+ { "Plettenb", 5, 2, 34, 1991, 1999, },
+ { "Werdohl7", 5, 2, 35, 1991, 1999, },
+ { "Nottuln2", 5, 2, 36, 1991, 1999, },
+ { "Telgte 0", 5, 2, 37, 1991, 1999, },
+ { "Ruethen0", 5, 2, 38, 0, 1999, },
+ { "Emsdettn", 5, 2, 39, 0, 1999, },
+ { "OeldeStr", 5, 2, 40, 1991, 1999, },
+ { "MSAlbach", 5, 2, 41, 1991, 1999, },
+ { "Coesfeld", 5, 2, 42, 1991, 0, },
+ { "Greven 0", 5, 2, 43, 1991, 1999, },
+ { "Brechten", 5, 2, 44, 1991, 1999, },
+ { "Dorlar 1", 5, 2, 45, 0, 1999, },
+ { "Halver 6", 5, 2, 46, 0, 1999, },
+ { "Herschd3", 5, 2, 47, 0, 1999, },
+ { "Dtmd.230", 5, 2, 49, 0, 1999, },
+ { "Aschebg2", 5, 2, 50, 0, 1999, },
+ { "Warendf0", 5, 2, 51, 0, 1999, },
+ { "Gevelsb7", 5, 2, 52, 0, 1999, },
+ { "Duelmen0", 5, 2, 54, 0, 1999, },
+ { "Sundern1", 5, 2, 55, 1991, 1999, },
+ { "Bueren 1", 5, 2, 56, 1991, 1999, },
+ { "Bril.Mes", 5, 2, 57, 1991, 1999, },
+ { "Dtmd. 10", 5, 2, 58, 0, 1999, },
+ { "Witten91", 5, 2, 59, 0, 1999, },
+ { "Unna 3", 5, 2, 60, 0, 1999, },
+ { "HagnDahl", 5, 2, 61, 0, 1999, },
+ { "Haltern7", 5, 2, 62, 0, 1999, },
+ { "Herdecke", 5, 2, 63, 0, 1999, },
+ { "Boenen 0", 5, 2, 64, 0, 1999, },
+ { "Holzwick", 5, 2, 65, 0, 1999, },
+ { "Hamm 1", 5, 2, 66, 0, 1999, },
+ { "Menden11", 5, 2, 67, 0, 1999, },
+ { "Kamen 0", 5, 2, 68, 0, 1999, },
+ { "Werne 0", 5, 2, 69, 0, 1999, },
+ { "Waltrop1", 5, 2, 70, 0, 1999, },
+ { "HammUent", 5, 2, 71, 0, 1999, },
+ { "Hagen 2", 5, 2, 72, 0, 1999, },
+ { "Schwert4", 5, 2, 73, 0, 1999, },
+ { "Recklhs1", 5, 2, 74, 0, 1999, },
+ { "Breckerf", 5, 2, 75, 0, 1999, },
+ { "Balve 7", 5, 2, 76, 0, 1999, },
+ { "Gevelsb5", 5, 2, 77, 0, 1999, },
+ { "Dtmd. 85", 5, 2, 78, 0, 1999, },
+ { "Iserlo13", 5, 2, 79, 0, 1999, },
+ { "Datteln3", 5, 2, 80, 0, 1999, },
+ { "Haltern2", 5, 2, 84, 0, 1999, },
+ { "Hagen 9", 5, 2, 85, 0, 1999, },
+ { "Witten12", 5, 2, 87, 0, 1999, },
+ { "Schoepp.", 5, 2, 93, 1991, 0, },
+ { "Herschd1", 5, 2, 94, 1991, 1999, },
+ { "Marl 0", 5, 2, 96, 0, 1999, },
+ { "Frechen0", 6, 2, 1, 0, 1999, },
+ { "Kln35Mes", 6, 2, 2, 0, 1999, },
+ { "BergGld4", 6, 2, 3, 0, 1999, },
+ { "Niedkass", 6, 2, 4, 1991, 1999, },
+ { "Kln 0", 6, 2, 5, 1991, 1999, },
+ { "Kln 8 Ba", 6, 2, 6, 1991, 1999, },
+ { "Bonn 460", 6, 2, 7, 0, 1999, },
+ { "Kln 27", 6, 2, 8, 1991, 1999, },
+ { "Merten 1", 6, 2, 9, 1991, 1999, },
+ { "Frechen8", 6, 2, 10, 0, 1999, },
+ { "KerpHorr", 6, 2, 11, 0, 1999, },
+ { "Erftstad", 6, 2, 12, 1991, 1999, },
+ { "Kln 34", 6, 2, 13, 0, 1999, },
+ { "Pulheim0", 6, 2, 14, 1991, 1999, },
+ { "KlnPrz50", 6, 2, 15, 1991, 1999, },
+ { "Bergheim", 6, 2, 16, 1991, 1999, },
+ { "Kln 860", 6, 2, 17, 0, 1999, },
+ { "KwtObpl1", 6, 2, 18, 0, 1999, },
+ { "Siegb.70", 6, 2, 19, 0, 1999, },
+ { "Rommersk", 6, 2, 20, 1991, 0, },
+ { "BergGld2", 6, 2, 21, 1991, 1999, },
+ { "Kln 170", 6, 2, 22, 1991, 1999, },
+ { "Kln 25", 6, 2, 23, 1991, 1999, },
+ { "Kln 370", 6, 2, 24, 1991, 1999, },
+ { "Kln 430", 6, 2, 25, 1991, 1999, },
+ { "Kln 760", 6, 2, 26, 1991, 1999, },
+ { "Kln 640", 6, 2, 27, 1991, 1999, },
+ { "Kln 28", 6, 2, 28, 1991, 1999, },
+ { "Bruehl99", 6, 2, 29, 1991, 1999, },
+ { "KerpVill", 6, 2, 30, 0, 1999, },
+ { "Kln 350", 6, 2, 31, 0, 1999, },
+ { "Bonn 0", 6, 2, 33, 0, 1999, },
+ { "Bonn 320", 6, 2, 34, 0, 1999, },
+ { "Bonn 620", 6, 2, 35, 0, 1999, },
+ { "Bonn 670", 6, 2, 36, 0, 1999, },
+ { "Siegb.41", 6, 2, 37, 0, 1999, },
+ { "Siegb.20", 6, 2, 38, 0, 1999, },
+ { "Lohmar 2", 6, 2, 39, 0, 1999, },
+ { "Siegb.0", 6, 2, 40, 0, 1999, },
+ { "Lohmar 1", 6, 2, 41, 0, 1999, },
+ { "Bonn 13", 6, 2, 42, 0, 1999, },
+ { "Dueren30", 6, 2, 43, 0, 1999, },
+ { "Heimbach", 6, 2, 44, 0, 1999, },
+ { "Huertgw4", 6, 2, 45, 0, 1999, },
+ { "KerpBuir", 6, 2, 46, 0, 1999, },
+ { "Monschau", 6, 2, 47, 0, 1999, },
+ { "Hennef 1", 6, 2, 48, 0, 1999, },
+ { "Nideggen", 6, 2, 49, 0, 1999, },
+ { "Zuelpich", 6, 2, 50, 0, 1999, },
+ { "Rheinba2", 6, 2, 51, 0, 1999, },
+ { "Euskir.4", 6, 2, 52, 0, 1999, },
+ { "WeilersW", 6, 2, 53, 0, 1999, },
+ { "BadMstEi", 6, 2, 54, 0, 1999, },
+ { "Mechern4", 6, 2, 55, 0, 1999, },
+ { "Schleid1", 6, 2, 56, 0, 1999, },
+ { "KwtObpl0", 6, 2, 57, 0, 1999, },
+ { "Noerveni", 6, 2, 58, 0, 1999, },
+ { "Dormagn7", 6, 2, 60, 0, 1999, },
+ { "Simmerat", 6, 2, 61, 0, 1999, },
+ { "Nettersh", 6, 2, 62, 0, 1999, },
+ { "SchlGem3", 6, 2, 63, 0, 1999, },
+ { "Wermelsk", 6, 2, 64, 0, 1999, },
+ { "Bursch.3", 6, 2, 65, 0, 1999, },
+ { "Wesseli0", 6, 2, 66, 1991, 1999, },
+ { "Huerth 0", 6, 2, 67, 1991, 1999, },
+ { "Roesrat2", 6, 2, 68, 1991, 1999, },
+ { "Bursch10", 6, 2, 69, 0, 1999, },
+ { "Kln 23", 6, 2, 70, 1991, 1999, },
+ { "Dormagen", 6, 2, 71, 0, 1999, },
+ { "Bonn 2", 6, 2, 72, 0, 1999, },
+ { "RommersK", 6, 2, 73, 0, 1999, },
+ { "Bonn 630", 6, 2, 76, 0, 1999, },
+ { "Bensberg", 6, 2, 78, 1991, 1999, },
+ { "Frechen", 6, 2, 81, 1991, 0, },
+ { "Leverk0", 6, 2, 91, 1991, 1999, },
+ { "Overath5", 7, 2, 1, 1991, 1999, },
+ { "Dierdorf", 7, 2, 2, 1991, 1999, },
+ { "Koen./Ob", 7, 2, 3, 1991, 0, },
+ { "Daun_4", 7, 2, 4, 1991, 1999, },
+ { "Much 1", 7, 2, 6, 0, 1999, },
+ { "Saffig10", 7, 2, 7, 1991, 1999, },
+ { "GummBa40", 7, 2, 8, 0, 1999, },
+ { "Asbach10", 7, 2, 9, 0, 1999, },
+ { "Eitorf 2", 7, 2, 10, 0, 1999, },
+ { "Windhgn", 7, 2, 11, 1991, 1999, },
+ { "BdHonn80", 7, 2, 12, 1991, 1999, },
+ { "Nuembr10", 7, 2, 13, 1991, 1999, },
+ { "Kobl. 10", 7, 2, 14, 1991, 1999, },
+ { "HoehrGre", 7, 2, 15, 1991, 1999, },
+ { "Montab.3", 7, 2, 16, 0, 1999, },
+ { "Vettels.", 7, 2, 17, 1991, 0, },
+ { "Weibern2", 7, 2, 18, 1991, 1999, },
+ { "BdMarie1", 7, 2, 19, 1991, 1999, },
+ { "BdBertri", 7, 2, 20, 1991, 1999, },
+ { "BlankeA5", 7, 2, 21, 0, 1999, },
+ { "Wissen 2", 7, 2, 22, 0, 1999, },
+ { "Betzdorf", 7, 2, 23, 1991, 1999, },
+ { "Eschenb.", 7, 2, 24, 1991, 0, },
+ { "Wendn186", 7, 2, 26, 0, 1999, },
+ { "Puderb.3", 7, 2, 28, 0, 1999, },
+ { "Kuerten3", 7, 2, 30, 1991, 1999, },
+ { "BdHonn.0", 7, 2, 31, 1991, 1999, },
+ { "Euskir.4", 7, 2, 32, 1991, 0, },
+ { "Wipperf2", 7, 2, 33, 0, 1999, },
+ { "Kuerten1", 7, 2, 34, 1991, 1999, },
+ { "GummBa.0", 7, 2, 35, 0, 1999, },
+ { "Bonn 670", 7, 2, 36, 1991, 0, },
+ { "Windeck2", 7, 2, 37, 1991, 1999, },
+ { "BdNeuena", 7, 2, 38, 1991, 1999, },
+ { "Linz 4", 7, 2, 39, 0, 1999, },
+ { "Lennestd", 7, 2, 40, 1991, 0, },
+ { "Kreuztal", 7, 2, 41, 1991, 1999, },
+ { "Bonn 13", 7, 2, 42, 1991, 0, },
+ { "BdBerleb", 7, 2, 43, 1991, 1999, },
+ { "BdLaasph", 7, 2, 44, 0, 1999, },
+ { "Nethphen", 7, 2, 45, 0, 1999, },
+ { "Olpe 0", 7, 2, 47, 0, 1999, },
+ { "DrolshgB", 7, 2, 48, 0, 1999, },
+ { "Hilchenb", 7, 2, 49, 0, 1999, },
+ { "Freudnbg", 7, 2, 50, 0, 1999, },
+ { "Burbach3", 7, 2, 51, 0, 1999, },
+ { "WaldbrBd", 7, 2, 52, 0, 1999, },
+ { "EllenzP2", 7, 2, 53, 0, 1999, },
+ { "Insul 2", 7, 2, 54, 0, 1999, },
+ { "Linz 2", 7, 2, 55, 0, 1999, },
+ { "WildbgH1", 7, 2, 56, 0, 1999, },
+ { "Kelberg3", 7, 2, 57, 0, 1999, },
+ { "Kesseli1", 7, 2, 58, 0, 1999, },
+ { "Eckenh.3", 7, 2, 59, 0, 1999, },
+ { "Rengsdf4", 7, 2, 60, 0, 1999, },
+ { "Mendig 3", 7, 2, 61, 0, 1999, },
+ { "Cochem 1", 7, 2, 62, 0, 1999, },
+ { "Mayen 3", 7, 2, 63, 0, 1999, },
+ { "Neuwied2", 7, 2, 64, 0, 1999, },
+ { "Hachenbg", 7, 2, 65, 0, 1999, },
+ { "Westerbg", 7, 2, 66, 0, 1999, },
+ { "Asbach 5", 7, 2, 67, 0, 1999, },
+ { "Loef 1", 7, 2, 68, 0, 1999, },
+ { "Engelsk6", 7, 2, 69, 0, 1999, },
+ { "Altenki0", 7, 2, 70, 0, 1999, },
+ { "Siegen15", 7, 2, 71, 0, 1999, },
+ { "Bonn 2 K", 7, 2, 72, 1991, 0, },
+ { "NeunkSe1", 7, 2, 73, 0, 1999, },
+ { "Ochtend2", 7, 2, 74, 0, 1999, },
+ { "Weilers.", 7, 2, 77, 1991, 0, },
+ { "Bad Ems1", 7, 2, 79, 0, 1999, },
+ { "Marienh1", 7, 2, 80, 0, 1999, },
+ { "GummBa16", 7, 2, 82, 0, 1999, },
+ { "FlammerF", 7, 2, 83, 0, 1999, },
+ { "Waldbro1", 7, 2, 84, 0, 1999, },
+ { "Bendorf1", 7, 2, 85, 0, 1999, },
+ { "Engelsk3", 7, 2, 86, 0, 1999, },
+ { "Selters2", 7, 2, 87, 0, 1999, },
+ { "Adenau 7", 7, 2, 88, 0, 1999, },
+ { "KaisEsch", 7, 2, 89, 0, 1999, },
+ { "Nassau 1", 7, 2, 90, 0, 1999, },
+ { "BdMarie2", 7, 2, 91, 0, 1999, },
+ { "Antweil1", 7, 2, 92, 0, 1999, },
+ { "Ruppich3", 7, 2, 93, 0, 1999, },
+ { "Lindlar1", 7, 2, 95, 0, 1999, },
+ { "Siegen 1", 7, 2, 96, 1991, 1999, },
+ { "GummBa13", 7, 2, 97, 1991, 1999, },
+ { "Lohmar 1", 7, 2, 98, 1991, 0, },
+ { "Rheinbr0", 7, 2, 99, 0, 1999, },
+ { "Raegelin", 1, 3, 1, 1991, 1999, },
+ { "Rostock", 1, 3, 2, 1991, 0, },
+ { "Fuerstnb", 1, 3, 3, 1991, 1999, },
+ { "Massow", 1, 3, 4, 1991, 1999, },
+ { "Beeskow", 1, 3, 5, 0, 1999, },
+ { "Finowfur", 1, 3, 6, 0, 1999, },
+ { "Bernau 6", 1, 3, 7, 0, 1999, },
+ { "Ziesar 0", 1, 3, 8, 1991, 1999, },
+ { "Wittenbg", 1, 3, 9, 1991, 1999, },
+ { "WerderHv", 1, 3, 10, 1991, 1999, },
+ { "Seelow 0", 1, 3, 11, 1991, 1999, },
+ { "Tresebur", 1, 3, 12, 0, 1999, },
+ { "Briesen", 1, 3, 13, 0, 1999, },
+ { "Perlebg5", 1, 3, 14, 0, 1999, },
+ { "Mnchebg4", 1, 3, 15, 0, 1999, },
+ { "Herzfeld", 1, 3, 16, 0, 1999, },
+ { "Storkow4", 1, 3, 17, 0, 1999, },
+ { "Neubra14", 1, 3, 18, 0, 1999, },
+ { "Treuenbr", 1, 3, 19, 0, 1999, },
+ { "Prenzlau", 1, 3, 20, 0, 1999, },
+ { "Pasewalk", 1, 3, 22, 0, 1999, },
+ { "NaumbgRi", 1, 3, 23, 0, 1999, },
+ { "Ratheno4", 1, 3, 24, 0, 1999, },
+ { "BApitzSt", 1, 3, 26, 0, 1999, },
+ { "Jaegerst", 1, 3, 27, 0, 1999, },
+ { "Templin2", 1, 3, 28, 0, 1999, },
+ { "Luckenw2", 1, 3, 29, 0, 1999, },
+ { "Lehnin 0", 1, 3, 30, 0, 1999, },
+ { "Frankf10", 1, 3, 31, 0, 1999, },
+ { "Michendf", 1, 3, 32, 0, 1999, },
+ { "Trebbin2", 1, 3, 33, 0, 1999, },
+ { "Gramzow0", 1, 3, 35, 0, 1999, },
+ { "BdFreien", 1, 3, 36, 0, 1999, },
+ { "Falknhg4", 1, 3, 37, 0, 1999, },
+ { "Fuerstw7", 1, 3, 38, 0, 1999, },
+ { "Angermue", 1, 3, 39, 0, 1999, },
+ { "Wittsto5", 1, 3, 40, 0, 1999, },
+ { "Dambeck2", 1, 3, 41, 0, 1999, },
+ { "Neuzelle", 1, 3, 42, 0, 1999, },
+ { "Raben 1", 1, 3, 43, 0, 1999, },
+ { "Toepchin", 1, 3, 44, 0, 1999, },
+ { "Brandenb", 1, 3, 45, 0, 1999, },
+ { "Jueterbo", 1, 3, 46, 0, 1999, },
+ { "Krahne", 1, 3, 47, 0, 1999, },
+ { "Lieberos", 1, 3, 48, 0, 1999, },
+ { "Wiesenbu", 1, 3, 49, 0, 1999, },
+ { "Mirow 1", 1, 3, 50, 0, 1999, },
+ { "Rhinow 1", 1, 3, 51, 0, 1999, },
+ { "Rheinsb3", 1, 3, 52, 0, 1999, },
+ { "Petkus 3", 1, 3, 53, 0, 1999, },
+ { "Blanken1", 1, 3, 54, 0, 1999, },
+ { "Neustrel", 1, 3, 55, 0, 1999, },
+ { "Greiffen", 1, 3, 57, 0, 1999, },
+ { "Pritzwal", 1, 3, 58, 0, 1999, },
+ { "Schwedt6", 1, 3, 59, 0, 1999, },
+ { "Schmoell", 1, 3, 62, 0, 1999, },
+ { "Woldegk4", 1, 3, 65, 0, 1999, },
+ { "Neurupp6", 1, 3, 66, 0, 1999, },
+ { "Belzig 2", 1, 3, 67, 0, 1999, },
+ { "Gransee1", 1, 3, 69, 0, 1999, },
+ { "Kyritz 4", 1, 3, 70, 0, 1999, },
+ { "GrDoelln", 1, 3, 71, 0, 1999, },
+ { "Premnitz", 1, 3, 72, 0, 1999, },
+ { "Gloewen2", 1, 3, 73, 0, 1999, },
+ { "Luebben2", 1, 3, 74, 0, 1999, },
+ { "Bestense", 1, 3, 76, 0, 1999, },
+ { "Pausin 1", 1, 3, 77, 0, 1999, },
+ { "Golssen0", 1, 3, 78, 0, 1999, },
+ { "Luebenau", 1, 3, 79, 0, 1999, },
+ { "AltMahls", 1, 3, 80, 0, 1999, },
+ { "Eichhors", 1, 3, 81, 0, 1999, },
+ { "Muehlnbk", 1, 3, 83, 0, 1999, },
+ { "Hennings", 1, 3, 84, 0, 1999, },
+ { "Ludwigsf", 1, 3, 86, 0, 1999, },
+ { "Ruedersd", 1, 3, 87, 0, 1999, },
+ { "Strausbg", 1, 3, 88, 0, 1999, },
+ { "Zossen", 1, 3, 89, 0, 1999, },
+ { "Mahlow 4", 1, 3, 90, 0, 1999, },
+ { "Bernau 3", 1, 3, 91, 0, 1999, },
+ { "Oranienb", 1, 3, 92, 0, 1999, },
+ { "Falkense", 1, 3, 93, 0, 1999, },
+ { "Liebenwa", 1, 3, 94, 0, 1999, },
+ { "Eberswal", 1, 3, 96, 0, 1999, },
+ { "Erkner 5", 1, 3, 97, 0, 1999, },
+ { "KWusterh", 1, 3, 98, 0, 1999, },
+ { "Fichtenw", 1, 3, 99, 0, 1999, },
+ { "B23 Bake", 2, 3, 1, 1991, 1999, },
+ { "Schoenho", 2, 3, 2, 1991, 1999, },
+ { "Ruegener", 2, 3, 3, 1991, 1999, },
+ { "Habersaa", 2, 3, 4, 1991, 1999, },
+ { "Stresema", 2, 3, 5, 1991, 1999, },
+ { "Wilkestr", 2, 3, 6, 1991, 1999, },
+ { "Skalitze", 2, 3, 7, 1991, 1999, },
+ { "Luederit", 2, 3, 8, 1991, 1999, },
+ { "Erasmuss", 2, 3, 9, 1991, 1999, },
+ { "Winterfe", 2, 3, 10, 1991, 1999, },
+ { "Wernerwe", 2, 3, 11, 1991, 1999, },
+ { "KMarxStr", 2, 3, 12, 1991, 1999, },
+ { "Oranienb", 2, 3, 13, 1991, 1999, },
+ { "AugustVi", 2, 3, 14, 1991, 1999, },
+ { "Rathauss", 2, 3, 15, 1991, 1999, },
+ { "Schmarge", 2, 3, 16, 1991, 1999, },
+ { "Tempelho", 2, 3, 17, 1991, 1999, },
+ { "Hanneman", 2, 3, 18, 1991, 1999, },
+ { "Streitst", 2, 3, 19, 1991, 1999, },
+ { "Kettinge", 2, 3, 20, 1991, 1999, },
+ { "Forststr", 2, 3, 21, 1991, 1999, },
+ { "Hindenbu", 2, 3, 22, 1991, 1999, },
+ { "Lobeckst", 2, 3, 23, 1991, 1999, },
+ { "AltStral", 2, 3, 24, 0, 1999, },
+ { "Schaefer", 2, 3, 25, 0, 1999, },
+ { "Elsastr", 2, 3, 28, 0, 1999, },
+ { "FranzJac", 2, 3, 29, 1991, 1999, },
+ { "Schnellr", 2, 3, 30, 0, 1999, },
+ { "KoepeniA", 2, 3, 31, 0, 1999, },
+ { "Amanlisw", 2, 3, 32, 0, 1999, },
+ { "BitterSt", 2, 3, 33, 0, 1999, },
+ { "ErnstBar", 2, 3, 34, 0, 1999, },
+ { "Flankens", 2, 3, 35, 0, 1999, },
+ { "LilliHen", 2, 3, 36, 1991, 1999, },
+ { "Buchholz", 2, 3, 37, 0, 1999, },
+ { "RudowChs", 2, 3, 38, 0, 1999, },
+ { "OGeschke", 2, 3, 39, 0, 1999, },
+ { "Rochstr", 2, 3, 40, 1991, 1999, },
+ { "EReuterP", 2, 3, 41, 0, 1999, },
+ { "Birkholz", 2, 3, 44, 1991, 0, },
+ { "Schoenef", 2, 3, 48, 0, 1999, },
+ { "Coppistr", 2, 3, 49, 1991, 1999, },
+ { "Prenzlau", 2, 3, 57, 1991, 1999, },
+ { "Lieberma", 2, 3, 58, 1991, 1999, },
+ { "Herzberg", 2, 3, 59, 1991, 1999, },
+ { "Masurena", 2, 3, 60, 1991, 1999, },
+ { "Scholzpl", 2, 3, 61, 1991, 1999, },
+ { "Flotowst", 2, 3, 64, 0, 1999, },
+ { "Breitest", 2, 3, 65, 0, 1999, },
+ { "KMarxAle", 2, 3, 70, 0, 1999, },
+ { "AVUS", 2, 3, 95, 0, 1999, },
+ { "Kaatsch1", 2, 3, 97, 1991, 1999, },
+ { "Kaatsch2", 2, 3, 98, 1991, 1999, },
+ { "B.Schaef", 2, 3, 99, 1991, 0, },
+ { "Teicha 2", 3, 3, 1, 1991, 1999, },
+ { "Greifenh", 3, 3, 2, 0, 1999, },
+ { "Mrkranst", 3, 3, 4, 0, 1999, },
+ { "Groitsch", 3, 3, 6, 0, 1999, },
+ { "Graefenh", 3, 3, 7, 0, 1999, },
+ { "Liebertw", 3, 3, 8, 0, 1999, },
+ { "Torgau 4", 3, 3, 9, 0, 1999, },
+ { "Bitterf", 3, 3, 10, 0, 1999, },
+ { "Oschatz", 3, 3, 11, 0, 1999, },
+ { "L-Sttz", 3, 3, 12, 0, 1999, },
+ { "Halle 15", 3, 3, 13, 0, 1999, },
+ { "Grimma 6", 3, 3, 14, 0, 1999, },
+ { "Weissenf", 3, 3, 15, 0, 1999, },
+ { "L-Uni", 3, 3, 16, 0, 1999, },
+ { "L-Doelz", 3, 3, 17, 0, 1999, },
+ { "L-Gaschw", 3, 3, 18, 0, 1999, },
+ { "L-Lausen", 3, 3, 19, 0, 1999, },
+ { "L-Seehsn", 3, 3, 20, 0, 1999, },
+ { "L-Schkeu", 3, 3, 21, 0, 1999, },
+ { "Koethen8", 3, 3, 22, 0, 1999, },
+ { "Brandis2", 3, 3, 23, 0, 1999, },
+ { "Delitzs1", 3, 3, 24, 0, 1999, },
+ { "L-Holz", 3, 3, 25, 0, 1999, },
+ { "Nebra 3", 3, 3, 26, 0, 1999, },
+ { "Zeitz 9", 3, 3, 27, 0, 1999, },
+ { "Querfurt", 3, 3, 28, 0, 1999, },
+ { "Cobbelsd", 3, 3, 36, 0, 1999, },
+ { "L-Stahm", 3, 3, 37, 0, 1999, },
+ { "Altenbrg", 3, 3, 38, 0, 1999, },
+ { "L-Connew", 3, 3, 40, 0, 1999, },
+ { "L-Taucha", 3, 3, 41, 0, 1999, },
+ { "L-Eutri", 3, 3, 42, 0, 1999, },
+ { "L-Schoen", 3, 3, 43, 0, 1999, },
+ { "Dommitz1", 3, 3, 44, 0, 1999, },
+ { "L-Adler", 3, 3, 45, 0, 1999, },
+ { "Naumburg", 3, 3, 46, 0, 1999, },
+ { "L-Gohlis", 3, 3, 47, 0, 1999, },
+ { "H-Seeben", 3, 3, 48, 0, 1999, },
+ { "Sangerh", 3, 3, 49, 0, 1999, },
+ { "H-Bruckd", 3, 3, 50, 0, 1999, },
+ { "Colditz", 3, 3, 52, 0, 1999, },
+ { "Hartha 1", 3, 3, 56, 0, 1999, },
+ { "Dessau S", 3, 3, 58, 0, 1999, },
+ { "Eisleben", 3, 3, 59, 0, 1999, },
+ { "H-Teutsc", 3, 3, 60, 0, 1999, },
+ { "H-Silber", 3, 3, 61, 0, 1999, },
+ { "H-Neu", 3, 3, 62, 0, 1999, },
+ { "Mersebrg", 3, 3, 63, 0, 1999, },
+ { "Schmoell", 3, 3, 70, 0, 1999, },
+ { "Eilenbrg", 3, 3, 71, 0, 1999, },
+ { "Hayn 2", 3, 3, 72, 0, 1999, },
+ { "Dessau 1", 3, 3, 73, 0, 1999, },
+ { "Borna 0", 3, 3, 74, 0, 1999, },
+ { "Belgern", 3, 3, 75, 0, 1999, },
+ { "Hettstdt", 3, 3, 76, 0, 1999, },
+ { "BDueben5", 3, 3, 77, 0, 1999, },
+ { "H-Peiss", 3, 3, 78, 0, 1999, },
+ { "H-Heide", 3, 3, 79, 0, 1999, },
+ { "Oelzsch1", 3, 3, 80, 0, 1999, },
+ { "Doebeln", 3, 3, 81, 0, 1999, },
+ { "Coswig A", 3, 3, 82, 0, 1999, },
+ { "Mockreh", 3, 3, 83, 0, 1999, },
+ { "L-Leutsc", 3, 3, 84, 0, 1999, },
+ { "Hohenmoe", 3, 3, 85, 0, 1999, },
+ { "Wittenbg", 3, 3, 86, 0, 1999, },
+ { "BdDuerrn", 3, 3, 87, 0, 1999, },
+ { "Kropstd", 3, 3, 88, 0, 1999, },
+ { "L-Markle", 3, 3, 89, 0, 1999, },
+ { "D-Gompi", 4, 3, 1, 1991, 1999, },
+ { "Crinitz", 4, 3, 2, 0, 1999, },
+ { "D-Dachs", 4, 3, 3, 0, 1999, },
+ { "Weisswas", 4, 3, 4, 0, 1999, },
+ { "Drebkau1", 4, 3, 5, 0, 1999, },
+ { "Senftenb", 4, 3, 7, 0, 1999, },
+ { "Radeburg", 4, 3, 8, 0, 1999, },
+ { "Meissen5", 4, 3, 9, 0, 1999, },
+ { "Pirna 7", 4, 3, 10, 0, 1999, },
+ { "Koenigsw", 4, 3, 11, 0, 1999, },
+ { "D-Radeb", 4, 3, 12, 0, 1999, },
+ { "D-Postpl", 4, 3, 13, 0, 1999, },
+ { "Pulsnitz", 4, 3, 14, 0, 1999, },
+ { "Loebau 5", 4, 3, 15, 0, 1999, },
+ { "Neukirch", 4, 3, 16, 0, 1999, },
+ { "Nst-Ung", 4, 3, 17, 0, 1999, },
+ { "Goerlitz", 4, 3, 18, 0, 1999, },
+ { "Zittau 5", 4, 3, 19, 0, 1999, },
+ { "Altenbg", 4, 3, 20, 0, 1999, },
+ { "Riesa 4", 4, 3, 21, 0, 1999, },
+ { "Burkau 2", 4, 3, 22, 0, 1999, },
+ { "D-Goenns", 4, 3, 23, 0, 1999, },
+ { "Jessen 2", 4, 3, 24, 0, 1999, },
+ { "Dippold", 4, 3, 25, 0, 1999, },
+ { "D-Heiden", 4, 3, 26, 0, 1999, },
+ { "Hoyersw", 4, 3, 27, 0, 1999, },
+ { "D-Goppel", 4, 3, 28, 0, 1999, },
+ { "D-Dorfh", 4, 3, 29, 0, 1999, },
+ { "D-Stries", 4, 3, 30, 0, 1999, },
+ { "Elsterw5", 4, 3, 31, 0, 1999, },
+ { "Sprembg", 4, 3, 33, 0, 1999, },
+ { "D-Klotzs", 4, 3, 34, 0, 1999, },
+ { "Herzberg", 4, 3, 35, 0, 1999, },
+ { "D-Prohli", 4, 3, 36, 0, 1999, },
+ { "Niesky 4", 4, 3, 37, 0, 1999, },
+ { "D-Neust", 4, 3, 39, 0, 1999, },
+ { "Burkhard", 4, 3, 40, 0, 1999, },
+ { "Guben 2", 4, 3, 41, 0, 1999, },
+ { "Bautzen", 4, 3, 42, 0, 1999, },
+ { "BdSchand", 4, 3, 43, 0, 1999, },
+ { "Forst 2", 4, 3, 44, 0, 1999, },
+ { "Bischofw", 4, 3, 45, 0, 1999, },
+ { "Cottbus8", 4, 3, 46, 0, 1999, },
+ { "Ortrand", 4, 3, 47, 0, 1999, },
+ { "Tharandt", 4, 3, 48, 0, 1999, },
+ { "Drachhau", 4, 3, 49, 0, 1999, },
+ { "Kamenz 5", 4, 3, 51, 0, 1999, },
+ { "Grossenh", 4, 3, 52, 0, 1999, },
+ { "Lommatz", 4, 3, 54, 0, 1999, },
+ { "Pirna 5", 4, 3, 55, 0, 1999, },
+ { "Glashuet", 4, 3, 56, 0, 1999, },
+ { "Coswig 4", 4, 3, 57, 0, 1999, },
+ { "Wilsdruf", 4, 3, 59, 0, 1999, },
+ { "Finster3", 4, 3, 60, 0, 1999, },
+ { "Neugersd", 4, 3, 61, 0, 1999, },
+ { "Uhyst 1", 4, 3, 64, 0, 1999, },
+ { "Pulsnit6", 4, 3, 66, 0, 1999, },
+ { "Doberlug", 4, 3, 88, 0, 1999, },
+ { "Klettb", 5, 3, 1, 1991, 1999, },
+ { "Grossfa1", 5, 3, 2, 1991, 1999, },
+ { "Zella-Me", 5, 3, 3, 1991, 1999, },
+ { "Juechsen", 5, 3, 4, 1991, 1999, },
+ { "Grossbr", 5, 3, 5, 1991, 1999, },
+ { "Eisenb 6", 5, 3, 6, 0, 1999, },
+ { "Schleusi", 5, 3, 7, 0, 1999, },
+ { "Eisenbg4", 5, 3, 8, 0, 1999, },
+ { "Gera 11", 5, 3, 9, 0, 1999, },
+ { "H.Reuth", 5, 3, 10, 0, 1999, },
+ { "Jena 5", 5, 3, 11, 0, 1999, },
+ { "N-Kleina", 5, 3, 12, 0, 1999, },
+ { "Saalburg", 5, 3, 13, 0, 1999, },
+ { "Jena 6", 5, 3, 14, 0, 1999, },
+ { "Ruhla 4", 5, 3, 15, 0, 1999, },
+ { "Creuzbrg", 5, 3, 16, 0, 1999, },
+ { "Nordhsn", 5, 3, 17, 0, 1999, },
+ { "Camburg", 5, 3, 18, 0, 1999, },
+ { "BdFranke", 5, 3, 19, 0, 1999, },
+ { "Gera 13", 5, 3, 20, 0, 1999, },
+ { "Sondersh", 5, 3, 21, 0, 1999, },
+ { "Hermsdf", 5, 3, 22, 0, 1999, },
+ { "Weimar14", 5, 3, 23, 0, 1999, },
+ { "E-Schwer", 5, 3, 24, 0, 1999, },
+ { "Arnsger", 5, 3, 25, 0, 1999, },
+ { "Arnstadt", 5, 3, 26, 0, 1999, },
+ { "Suhl 2", 5, 3, 27, 0, 1999, },
+ { "B Koesen", 5, 3, 29, 0, 1999, },
+ { "Hildburg", 5, 3, 30, 0, 1999, },
+ { "Ilmenau", 5, 3, 31, 0, 1999, },
+ { "E-Flug", 5, 3, 32, 0, 1999, },
+ { "E-Fuchs", 5, 3, 33, 0, 1999, },
+ { "E-Andrea", 5, 3, 34, 0, 1999, },
+ { "E-Chami", 5, 3, 35, 0, 1999, },
+ { "NeuhausR", 5, 3, 36, 0, 1999, },
+ { "Meininge", 5, 3, 37, 0, 1999, },
+ { "E-FZA", 5, 3, 38, 0, 1999, },
+ { "E-EVST 4", 5, 3, 39, 0, 1999, },
+ { "Muehlhsn", 5, 3, 40, 0, 1999, },
+ { "Blankenh", 5, 3, 41, 0, 1999, },
+ { "Schmalka", 5, 3, 42, 0, 1999, },
+ { "Heuthen", 5, 3, 43, 0, 1999, },
+ { "Kaltenn", 5, 3, 44, 0, 1999, },
+ { "Berga 1", 5, 3, 45, 0, 1999, },
+ { "Oberhof", 5, 3, 46, 0, 1999, },
+ { "Poessn", 5, 3, 47, 0, 1999, },
+ { "Apolda 2", 5, 3, 48, 0, 1999, },
+ { "BdLaSalz", 5, 3, 49, 0, 1999, },
+ { "Soemmerd", 5, 3, 50, 0, 1999, },
+ { "Triebes", 5, 3, 51, 0, 1999, },
+ { "Lobenst", 5, 3, 52, 0, 1999, },
+ { "Rudolst", 5, 3, 53, 0, 1999, },
+ { "Schleiz", 5, 3, 54, 0, 1999, },
+ { "Stadtrod", 5, 3, 55, 0, 1999, },
+ { "Wernshsn", 5, 3, 56, 0, 1999, },
+ { "Steinb-H", 5, 3, 58, 0, 1999, },
+ { "Geisa 3", 5, 3, 59, 0, 1999, },
+ { "Bleiche7", 5, 3, 60, 0, 1999, },
+ { "Inselsbg", 5, 3, 61, 0, 1999, },
+ { "Steinach", 5, 3, 62, 0, 1999, },
+ { "Stadtilm", 5, 3, 63, 0, 1999, },
+ { "Waltersh", 5, 3, 65, 0, 1999, },
+ { "Gotha 6", 5, 3, 66, 0, 1999, },
+ { "Eisenach", 5, 3, 67, 0, 1999, },
+ { "Kahla 1", 5, 3, 68, 0, 1999, },
+ { "Heiligst", 5, 3, 69, 0, 1999, },
+ { "Thimmend", 5, 3, 70, 0, 1999, },
+ { "Buttelst", 5, 3, 71, 0, 1999, },
+ { "Koenigse", 5, 3, 72, 0, 1999, },
+ { "Erfurt30", 5, 3, 73, 0, 1999, },
+ { "Schoenbr", 5, 3, 74, 0, 1999, },
+ { "Kindelbr", 5, 3, 75, 0, 1999, },
+ { "Schlothe", 5, 3, 79, 0, 1999, },
+ { "Bischofs", 5, 3, 91, 0, 1999, },
+ { "Ludwigst", 5, 3, 92, 0, 1999, },
+ { "Unsleben", 5, 3, 93, 0, 1999, },
+ { "M-Sudenb", 6, 3, 1, 0, 1999, },
+ { "M-Cracau", 6, 3, 2, 0, 1999, },
+ { "M-Neust", 6, 3, 3, 0, 1999, },
+ { "M-Bied", 6, 3, 4, 0, 1999, },
+ { "M-Olvens", 6, 3, 5, 0, 1999, },
+ { "M-Buckau", 6, 3, 6, 0, 1999, },
+ { "Moeser 1", 6, 3, 7, 0, 1999, },
+ { "M-Mitte", 6, 3, 8, 0, 1999, },
+ { "M-Schoen", 6, 3, 9, 0, 1999, },
+ { "Leitzkau", 6, 3, 10, 0, 1999, },
+ { "Stendal", 6, 3, 11, 0, 1999, },
+ { "Haldensl", 6, 3, 12, 0, 1999, },
+ { "Oschersl", 6, 3, 13, 0, 1999, },
+ { "Werniger", 6, 3, 14, 0, 1999, },
+ { "Halberst", 6, 3, 15, 0, 1999, },
+ { "Erxleben", 6, 3, 16, 0, 1999, },
+ { "Altengra", 6, 3, 17, 0, 1999, },
+ { "Genthin", 6, 3, 18, 0, 1999, },
+ { "Burg 0", 6, 3, 19, 0, 1999, },
+ { "Lindau A", 6, 3, 20, 0, 1999, },
+ { "Kamern 2", 6, 3, 21, 0, 1999, },
+ { "Niedernd", 6, 3, 22, 0, 1999, },
+ { "Egeln", 6, 3, 23, 0, 1999, },
+ { "Burg 5", 6, 3, 24, 0, 1999, },
+ { "Fleetm 1", 6, 3, 25, 0, 1999, },
+ { "Dolle 1", 6, 3, 26, 0, 1999, },
+ { "Osterbg", 6, 3, 27, 0, 1999, },
+ { "Frose", 6, 3, 28, 0, 1999, },
+ { "Harzger", 6, 3, 29, 0, 1999, },
+ { "Koennern", 6, 3, 30, 0, 1999, },
+ { "Elbinger", 6, 3, 31, 0, 1999, },
+ { "Wanzlebe", 6, 3, 32, 0, 1999, },
+ { "Moorsleb", 6, 3, 33, 0, 1999, },
+ { "Tangerm", 6, 3, 34, 0, 1999, },
+ { "Bernburg", 6, 3, 35, 0, 1999, },
+ { "Salzwdel", 6, 3, 36, 0, 1999, },
+ { "Zerbst 4", 6, 3, 39, 0, 1999, },
+ { "Aschersl", 6, 3, 48, 0, 1999, },
+ { "Tangerh", 6, 3, 49, 0, 1999, },
+ { "Kloetze", 6, 3, 52, 0, 1999, },
+ { "Mieste", 6, 3, 55, 0, 1999, },
+ { "Thale", 6, 3, 88, 0, 1999, },
+ { "Seehsn", 6, 3, 93, 0, 1999, },
+ { "Blankenb", 6, 3, 95, 0, 1999, },
+ { "Gardel", 6, 3, 96, 0, 1999, },
+ { "Gernrode", 6, 3, 97, 0, 1999, },
+ { "Hasself", 6, 3, 98, 0, 1999, },
+ { "Baerenst", 7, 3, 1, 0, 1999, },
+ { "Auerbach", 7, 3, 2, 0, 1999, },
+ { "BdElster", 7, 3, 3, 0, 1999, },
+ { "Marienbg", 7, 3, 4, 0, 1999, },
+ { "C-Toten", 7, 3, 5, 0, 1999, },
+ { "Reichenb", 7, 3, 6, 0, 1999, },
+ { "Bergen 1", 7, 3, 7, 0, 1999, },
+ { "Rochlitz", 7, 3, 8, 0, 1999, },
+ { "C-Reich", 7, 3, 9, 0, 1999, },
+ { "Frankenb", 7, 3, 10, 0, 1999, },
+ { "Ebersbru", 7, 3, 11, 0, 1999, },
+ { "Schwarzb", 7, 3, 12, 0, 1999, },
+ { "Freiberg", 7, 3, 13, 0, 1999, },
+ { "Frauenst", 7, 3, 14, 0, 1999, },
+ { "Glauchau", 7, 3, 15, 0, 1999, },
+ { "Plauen", 7, 3, 16, 0, 1999, },
+ { "Werdau", 7, 3, 17, 0, 1999, },
+ { "Mittweid", 7, 3, 18, 0, 1999, },
+ { "Zschopau", 7, 3, 19, 0, 1999, },
+ { "C-BKH", 7, 3, 20, 0, 1999, },
+ { "C-Hecker", 7, 3, 21, 0, 1999, },
+ { "C-Landr", 7, 3, 22, 0, 1999, },
+ { "Nossen 5", 7, 3, 23, 0, 1999, },
+ { "C-Leuker", 7, 3, 24, 0, 1999, },
+ { "C-Numer", 7, 3, 25, 0, 1999, },
+ { "Hainich1", 7, 3, 26, 0, 1999, },
+ { "Zwoenitz", 7, 3, 27, 0, 1999, },
+ { "Zwickau", 7, 3, 28, 0, 1999, },
+ { "C-28Usti", 7, 3, 29, 0, 1999, },
+ { "Floeha 4", 7, 3, 30, 0, 1999, },
+ { "Crimmi", 7, 3, 31, 0, 1999, },
+ { "Eibenst", 7, 3, 32, 0, 1999, },
+ { "C-Center", 7, 3, 33, 0, 1999, },
+ { "Olbernh", 7, 3, 35, 0, 1999, },
+ { "Hartenst", 7, 3, 36, 0, 1999, },
+ { "Greiz 2", 7, 3, 37, 0, 1999, },
+ { "Penig 2", 7, 3, 38, 0, 1999, },
+ { "Thalheim", 7, 3, 39, 0, 1999, },
+ { "Reinfeld", 1, 4, 3, 1991, 1999, },
+ { "Hemmoor1", 1, 4, 4, 1991, 0, },
+ { "Cuxhaven", 1, 4, 5, 1991, 0, },
+ { "Bremen38", 1, 4, 6, 1991, 0, },
+ { "VerdenWa", 1, 4, 7, 1991, 0, },
+ { "Hoya 1", 1, 4, 8, 1991, 0, },
+ { "Gudow 10", 1, 4, 9, 1991, 1999, },
+ { "Travemue", 1, 4, 10, 1991, 1999, },