diff options
276 files changed, 197117 insertions, 3090 deletions
@@ -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 @@ -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ä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ß ist vorrübergehend nicht erreichbar!") +(German announcement says: "Dieser Anschluß ist vorrü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 <db>' or '--squelch <db>' 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 Binary files differnew file mode 100644 index 0000000..c2e6376 --- /dev/null +++ b/docs/datenklo.jpg diff --git a/docs/datenklo2.jpg b/docs/datenklo2.jpg Binary files differnew file mode 100644 index 0000000..c960444 --- /dev/null +++ b/docs/datenklo2.jpg diff --git a/docs/datenklo_small.jpg b/docs/datenklo_small.jpg Binary files differnew file mode 100644 index 0000000..c01568c --- /dev/null +++ b/docs/datenklo_small.jpg 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 Binary files differnew file mode 100644 index 0000000..9d5788d --- /dev/null +++ b/docs/eurosignal.jpg diff --git a/docs/eurosignal.wav b/docs/eurosignal.wav Binary files differnew file mode 100644 index 0000000..d7cc8cb --- /dev/null +++ b/docs/eurosignal.wav 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 Binary files differnew file mode 100755 index 0000000..8269116 --- /dev/null +++ b/docs/eurosignal_es1.tiff 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 Binary files differnew file mode 100644 index 0000000..30abdb3 --- /dev/null +++ b/docs/eurosignal_rom.jpg diff --git a/docs/eurosignal_small.jpg b/docs/eurosignal_small.jpg Binary files differnew file mode 100644 index 0000000..778ac8e --- /dev/null +++ b/docs/eurosignal_small.jpg diff --git a/docs/imts-attache.jpg b/docs/imts-attache.jpg Binary files differnew file mode 100644 index 0000000..4d7e929 --- /dev/null +++ b/docs/imts-attache.jpg 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 & 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é 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 -> 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 -> 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 : -> 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 : -> 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 <db>' or '--squelch <db>' 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 < -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 >= -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 : -> 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 Binary files differnew file mode 100644 index 0000000..cd9db3e --- /dev/null +++ b/docs/imts.jpg diff --git a/docs/imts_small.jpg b/docs/imts_small.jpg Binary files differnew file mode 100644 index 0000000..dadccfc --- /dev/null +++ b/docs/imts_small.jpg 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 Binary files differnew file mode 100644 index 0000000..1ee9950 --- /dev/null +++ b/docs/sim-attiny85.jpg diff --git a/docs/sim-contacts.jpg b/docs/sim-contacts.jpg Binary files differnew file mode 100644 index 0000000..3c447e4 --- /dev/null +++ b/docs/sim-contacts.jpg diff --git a/docs/sim-rs232.jpg b/docs/sim-rs232.jpg Binary files differnew file mode 100644 index 0000000..6b244d6 --- /dev/null +++ b/docs/sim-rs232.jpg 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 -> 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 : -> CNTR (Control Class) +sniffer.c: 75 info : INS = 0xf1 +sniffer.c: 80 info : -> 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 -> 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 : -> PIN-NOT-OK +sniffer.c: 149 info : -> APRC valid +sniffer.c: 158 info : APRC = 0x02 +sniffer.c: 160 info : -> Bit 2 = 1:PIN-Check required +sniffer.c: 166 info : -> Bit 3 = 0:Application unlocked +sniffer.c: 170 info : -> Bit 5 = 0:GEBZ/RUFN unlocked +sniffer.c: 174 info : -> 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üssel</th><th>Wartungs-<br>schlü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üssel</th><th>Wartungs-<br>schlü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 Binary files differnew file mode 100644 index 0000000..1f2a037 --- /dev/null +++ b/docs/sim.jpg diff --git a/docs/sim_layout.png b/docs/sim_layout.png Binary files differnew file mode 100644 index 0000000..f81e9f7 --- /dev/null +++ b/docs/sim_layout.png 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 Binary files differnew file mode 100644 index 0000000..b74e1de --- /dev/null +++ b/docs/zeitansage.mp3 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><b>ISO 7816 Chipcard (Package)</b><p> +<author>Created by librarian@cadsoft.de</author></description> +<packages> +<package name="ISO-7816"> +<description><b>ISO7816-1 Standard</b> Chip Card<p> +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">>NAME</text> +<text x="10.06" y="-34.28" size="1.27" layer="27">>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><b>AVR Devices</b><p> +Configurable logic, microcontrollers, nonvolatile memories<p> +Based on the following sources:<p> +<ul> +<li>www.atmel.com +<li>CD-ROM : Configurable Logic Microcontroller Nonvolatile Memory +<li>CadSoft download site, www.cadsoft.de or www.cadsoftusa.com , file at90smcu_v400.zip +</ul> +<author>Revised by librarian@cadsoft.de</author></description> +<packages> +<package name="SO08"> +<description><b>SMALL OUTLINE INTEGRATED CIRCUIT</b><p> +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">>NAME</text> +<text x="4.445" y="-1.905" size="1.27" layer="27" ratio="10" rot="R90">>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><b>Dual In Line Package</b></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">>NAME</text> +<text x="-3.4925" y="-0.635" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +</packages> +</library> +<library name="testpad"> +<description><b>Test Pins/Pads</b><p> +Cream on SMD OFF.<br> +new: Attribute TP_SIGNAL_NAME<br> +<author>Created by librarian@cadsoft.de</author></description> +<packages> +<package name="TP10SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +</packages> +</library> +<library name="resistor"> +<description><b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +<p> +for trimmer reference see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<map name="nav_main"> +<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title=""> +<area shape="rect" coords="0,24,140,51" href="../about.asp" title=""> +<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title=""> +<area shape="rect" coords="0,78,139,103" href="../products.asp" title=""> +<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title=""> +<area shape="rect" coords="1,129,138,150" href="../edge.asp" title=""> +<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title=""> +<area shape="rect" coords="0,179,139,201" href="../comments.asp" title=""> +<area shape="rect" coords="1,203,138,231" href="../directory.asp" title=""> +<area shape="default" nohref> +</map> + +<html> + +<title></title> + + <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css"> + +<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0"> +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%"> +<tr valign="top"> + +</td> +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> +</BODY></HTML></description> +<packages> +<package name="C0805"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.889" y="-2.286" size="1.27" layer="27">>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"><b>EAGLE Design Rules</b> +<p> +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"><b>EAGLE Design Rules</b> +<p> +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 Binary files differnew file mode 100755 index 0000000..e95ad0c --- /dev/null +++ b/layout/telekarte.pdf 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><b>ISO 7816 Chipcard (Package)</b><p> +<author>Created by librarian@cadsoft.de</author></description> +<packages> +<package name="ISO7816"> +<description><b>ISO 7816 Chipcard</b></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">>NAME</text> +<text x="3.81" y="-17.78" size="1.27" layer="27">>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><b>ISO7816-1 Standard</b> Chip Card<p> +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">>NAME</text> +<text x="10.06" y="-34.28" size="1.27" layer="27">>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><b>AFNOR Chip Card</b><p> +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">>NAME</text> +<text x="7.52" y="-21.2" size="1.27" layer="27">>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">>NAME</text> +<text x="-5.842" y="-8.89" size="1.778" layer="96">>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><b>Chip card connector ISO 7816</b></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><b>AVR Devices</b><p> +Configurable logic, microcontrollers, nonvolatile memories<p> +Based on the following sources:<p> +<ul> +<li>www.atmel.com +<li>CD-ROM : Configurable Logic Microcontroller Nonvolatile Memory +<li>CadSoft download site, www.cadsoft.de or www.cadsoftusa.com , file at90smcu_v400.zip +</ul> +<author>Revised by librarian@cadsoft.de</author></description> +<packages> +<package name="DIL08"> +<description><b>Dual In Line Package</b></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">>NAME</text> +<text x="-3.4925" y="-0.635" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="SO08"> +<description><b>SMALL OUTLINE INTEGRATED CIRCUIT</b><p> +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">>NAME</text> +<text x="4.445" y="-1.905" size="1.27" layer="27" ratio="10" rot="R90">>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">>NAME</text> +<text x="-12.7" y="-10.16" size="1.778" layer="96">>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><b>MICROCONTROLLER</b><p> +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><b>Test Pins/Pads</b><p> +Cream on SMD OFF.<br> +new: Attribute TP_SIGNAL_NAME<br> +<author>Created by librarian@cadsoft.de</author></description> +<packages> +<package name="B1,27"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="-0.635" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="B2,54"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-1.27" y="-1.397" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-3.175" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="P1-13"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-2.54" size="1" layer="37">>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><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-3.81" size="1" layer="37">>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><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-3.175" size="1" layer="37">>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><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-3.81" size="1" layer="37">>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><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-3.175" size="1" layer="37">>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><b>TEST PAD</b></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">>NAME</text> +<text x="0" y="0" size="0.0254" layer="27">>VALUE</text> +<text x="-1.27" y="-4.445" size="1" layer="37">>TP_SIGNAL_NAME</text> +<rectangle x1="-0.3302" y1="-0.3302" x2="0.3302" y2="0.3302" layer="51"/> +</package> +<package name="TP06R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.254" y="-0.381" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP06SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.254" y="-0.381" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP07R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.254" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP07SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.381" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP08R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.381" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP08SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP09R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP09SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP10R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.381" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP10SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP11R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.508" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-1.905" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP11SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP12SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP12R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP13R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.635" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP14R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.508" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP15R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP16R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP17R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP18R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP19R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP20R"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-1.016" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP13SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP14SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.635" y="-0.762" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP15SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP16SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP17SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.762" y="-0.889" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP18SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.889" y="-1.016" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP19SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-0.889" y="-1.016" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>TP_SIGNAL_NAME</text> +</package> +<package name="TP20SQ"> +<description><b>TEST PAD</b></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">>NAME</text> +<text x="-1.016" y="-1.143" size="0.0254" layer="27">>VALUE</text> +<text x="0" y="-2.54" size="1" layer="37">>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">>NAME</text> +<text x="1.27" y="-1.27" size="1.778" layer="97">>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><b>Test pad</b></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><b>Resistors, Capacitors, Inductors</b><p> +Based on the previous libraries: +<ul> +<li>r.lbr +<li>cap.lbr +<li>cap-fe.lbr +<li>captant.lbr +<li>polcap.lbr +<li>ipc-smd.lbr +</ul> +All SMD packages are defined according to the IPC specifications and CECC<p> +<author>Created by librarian@cadsoft.de</author><p> +<p> +for Electrolyt Capacitors see also :<p> +www.bccomponents.com <p> +www.panasonic.com<p> +www.kemet.com<p> +<p> +for trimmer reference see : <u>www.electrospec-inc.com/cross_references/trimpotcrossref.asp</u><p> + +<map name="nav_main"> +<area shape="rect" coords="0,1,140,23" href="../military_specs.asp" title=""> +<area shape="rect" coords="0,24,140,51" href="../about.asp" title=""> +<area shape="rect" coords="1,52,140,77" href="../rfq.asp" title=""> +<area shape="rect" coords="0,78,139,103" href="../products.asp" title=""> +<area shape="rect" coords="1,102,138,128" href="../excess_inventory.asp" title=""> +<area shape="rect" coords="1,129,138,150" href="../edge.asp" title=""> +<area shape="rect" coords="1,151,139,178" href="../industry_links.asp" title=""> +<area shape="rect" coords="0,179,139,201" href="../comments.asp" title=""> +<area shape="rect" coords="1,203,138,231" href="../directory.asp" title=""> +<area shape="default" nohref> +</map> + +<html> + +<title></title> + + <LINK REL="StyleSheet" TYPE="text/css" HREF="style-sheet.css"> + +<body bgcolor="#ffffff" text="#000000" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0"> +<table border=0 cellspacing=0 cellpadding=0 width="100%" cellpaddding=0 height="55%"> +<tr valign="top"> + +</td> +<! <td width="10">&nbsp;</td> +<td width="90%"> + +<b><font color="#0000FF" size="4">TRIM-POT CROSS REFERENCE</font></b> +<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2> + <TR> + <TD COLSPAN=8> + <FONT SIZE=3 FACE=ARIAL><B>RECTANGULAR MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BOURNS</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">BI&nbsp;TECH</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">DALE-VISHAY</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PHILIPS/MEPCO</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MURATA</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">PANASONIC</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">SPECTROL</FONT> + </B> + </TD> + <TD ALIGN=CENTER> + <B> + <FONT SIZE=3 FACE=ARIAL color="#FF0000">MILSPEC</FONT> + </B> + </TD><TD>&nbsp;</TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3 > + 3005P<BR> + 3006P<BR> + 3006W<BR> + 3006Y<BR> + 3009P<BR> + 3009W<BR> + 3009Y<BR> + 3057J<BR> + 3057L<BR> + 3057P<BR> + 3057Y<BR> + 3059J<BR> + 3059L<BR> + 3059P<BR> + 3059Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 89P<BR> + 89W<BR> + 89X<BR> + 89PH<BR> + 76P<BR> + 89XH<BR> + 78SLT<BR> + 78L&nbsp;ALT<BR> + 56P&nbsp;ALT<BR> + 78P&nbsp;ALT<BR> + T8S<BR> + 78L<BR> + 56P<BR> + 78P<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + T18/784<BR> + 783<BR> + 781<BR> + -<BR> + -<BR> + -<BR> + 2199<BR> + 1697/1897<BR> + 1680/1880<BR> + 2187<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 8035EKP/CT20/RJ-20P<BR> + -<BR> + RJ-20X<BR> + -<BR> + -<BR> + -<BR> + 1211L<BR> + 8012EKQ&nbsp;ALT<BR> + 8012EKR&nbsp;ALT<BR> + 1211P<BR> + 8012EKJ<BR> + 8012EKL<BR> + 8012EKQ<BR> + 8012EKR<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 2101P<BR> + 2101W<BR> + 2101Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 2102L<BR> + 2102S<BR> + 2102Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVMCOG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 43P<BR> + 43W<BR> + 43Y<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 40L<BR> + 40P<BR> + 40Y<BR> + 70Y-T602<BR> + 70L<BR> + 70P<BR> + 70Y<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + RT/RTR12<BR> + RT/RTR12<BR> + RT/RTR12<BR> + -<BR> + RJ/RJR12<BR> + RJ/RJR12<BR> + RJ/RJR12<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SQUARE MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3250L<BR> + 3250P<BR> + 3250W<BR> + 3250X<BR> + 3252P<BR> + 3252W<BR> + 3252X<BR> + 3260P<BR> + 3260W<BR> + 3260X<BR> + 3262P<BR> + 3262W<BR> + 3262X<BR> + 3266P<BR> + 3266W<BR> + 3266X<BR> + 3290H<BR> + 3290P<BR> + 3290W<BR> + 3292P<BR> + 3292W<BR> + 3292X<BR> + 3296P<BR> + 3296W<BR> + 3296X<BR> + 3296Y<BR> + 3296Z<BR> + 3299P<BR> + 3299W<BR> + 3299X<BR> + 3299Y<BR> + 3299Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66X&nbsp;ALT<BR> + -<BR> + 64W&nbsp;ALT<BR> + -<BR> + 64P&nbsp;ALT<BR> + 64W&nbsp;ALT<BR> + 64X&nbsp;ALT<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 66X&nbsp;ALT<BR> + 66P&nbsp;ALT<BR> + 66W&nbsp;ALT<BR> + 66P<BR> + 66W<BR> + 66X<BR> + 67P<BR> + 67W<BR> + 67X<BR> + 67Y<BR> + 67Z<BR> + 68P<BR> + 68W<BR> + 68X<BR> + 67Y&nbsp;ALT<BR> + 67Z&nbsp;ALT<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 5050<BR> + 5091<BR> + 5080<BR> + 5087<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + T63YB<BR> + T63XB<BR> + -<BR> + -<BR> + -<BR> + 5887<BR> + 5891<BR> + 5880<BR> + -<BR> + -<BR> + -<BR> + T93Z<BR> + T93YA<BR> + T93XA<BR> + T93YB<BR> + T93XB<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 8026EKP<BR> + 8026EKW<BR> + 8026EKM<BR> + 8026EKP<BR> + 8026EKB<BR> + 8026EKM<BR> + 1309X<BR> + 1309P<BR> + 1309W<BR> + 8024EKP<BR> + 8024EKW<BR> + 8024EKN<BR> + RJ-9P/CT9P<BR> + RJ-9W<BR> + RJ-9X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + 3103P<BR> + 3103Y<BR> + 3103Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3105P/3106P<BR> + 3105W/3106W<BR> + 3105X/3106X<BR> + 3105Y/3106Y<BR> + 3105Z/3105Z<BR> + 3102P<BR> + 3102W<BR> + 3102X<BR> + 3102Y<BR> + 3102Z<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMCBG<BR> + EVMCCG<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 55-1-X<BR> + 55-4-X<BR> + 55-3-X<BR> + 55-2-X<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 50-2-X<BR> + 50-4-X<BR> + 50-3-X<BR> + -<BR> + -<BR> + -<BR> + 64P<BR> + 64W<BR> + 64X<BR> + 64Y<BR> + 64Z<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RT/RTR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RJ/RJR22<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RT/RTR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RJ/RJR26<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RT/RTR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + RJ/RJR24<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=8>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=8> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BOURN</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MURATA</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>SPECTROL</B></FONT> + </TD> + <TD ALIGN=CENTER> + <FONT SIZE=3 FACE=ARIAL><B>MILSPEC</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3323P<BR> + 3323S<BR> + 3323W<BR> + 3329H<BR> + 3329P<BR> + 3329W<BR> + 3339H<BR> + 3339P<BR> + 3339W<BR> + 3352E<BR> + 3352H<BR> + 3352K<BR> + 3352P<BR> + 3352T<BR> + 3352V<BR> + 3352W<BR> + 3362H<BR> + 3362M<BR> + 3362P<BR> + 3362R<BR> + 3362S<BR> + 3362U<BR> + 3362W<BR> + 3362X<BR> + 3386B<BR> + 3386C<BR> + 3386F<BR> + 3386H<BR> + 3386K<BR> + 3386M<BR> + 3386P<BR> + 3386S<BR> + 3386W<BR> + 3386X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 25P<BR> + 25S<BR> + 25RX<BR> + 82P<BR> + 82M<BR> + 82PA<BR> + -<BR> + -<BR> + -<BR> + 91E<BR> + 91X<BR> + 91T<BR> + 91B<BR> + 91A<BR> + 91V<BR> + 91W<BR> + 25W<BR> + 25V<BR> + 25P<BR> + -<BR> + 25S<BR> + 25U<BR> + 25RX<BR> + 25X<BR> + 72XW<BR> + 72XL<BR> + 72PM<BR> + 72RX<BR> + -<BR> + 72PX<BR> + 72P<BR> + 72RXW<BR> + 72RXL<BR> + 72X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + T7YB<BR> + T7YA<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + TXD<BR> + TYA<BR> + TYP<BR> + -<BR> + TYD<BR> + TX<BR> + -<BR> + 150SX<BR> + 100SX<BR> + 102T<BR> + 101S<BR> + 190T<BR> + 150TX<BR> + 101<BR> + -<BR> + -<BR> + 101SX<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ET6P<BR> + ET6S<BR> + ET6X<BR> + RJ-6W/8014EMW<BR> + RJ-6P/8014EMP<BR> + RJ-6X/8014EMX<BR> + TM7W<BR> + TM7P<BR> + TM7X<BR> + -<BR> + 8017SMS<BR> + -<BR> + 8017SMB<BR> + 8017SMA<BR> + -<BR> + -<BR> + CT-6W<BR> + CT-6H<BR> + CT-6P<BR> + CT-6R<BR> + -<BR> + CT-6V<BR> + CT-6X<BR> + -<BR> + -<BR> + 8038EKV<BR> + -<BR> + 8038EKX<BR> + -<BR> + -<BR> + 8038EKP<BR> + 8038EKZ<BR> + 8038EKW<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 3321H<BR> + 3321P<BR> + 3321N<BR> + 1102H<BR> + 1102P<BR> + 1102T<BR> + RVA0911V304A<BR> + -<BR> + RVA0911H413A<BR> + RVG0707V100A<BR> + RVA0607V(H)306A<BR> + RVA1214H213A<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 3104B<BR> + 3104C<BR> + 3104F<BR> + 3104H<BR> + -<BR> + 3104M<BR> + 3104P<BR> + 3104S<BR> + 3104W<BR> + 3104X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + EVMQ0G<BR> + EVMQIG<BR> + EVMQ3G<BR> + EVMS0G<BR> + EVMQ0G<BR> + EVMG0G<BR> + -<BR> + -<BR> + -<BR> + EVMK4GA00B<BR> + EVM30GA00B<BR> + EVMK0GA00B<BR> + EVM38GA00B<BR> + EVMB6<BR> + EVLQ0<BR> + -<BR> + EVMMSG<BR> + EVMMBG<BR> + EVMMAG<BR> + -<BR> + -<BR> + EVMMCS<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + EVMM1<BR> + -<BR> + -<BR> + EVMM0<BR> + -<BR> + -<BR> + EVMM3<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + 62-3-1<BR> + 62-1-2<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67R<BR> + -<BR> + 67P<BR> + -<BR> + -<BR> + -<BR> + -<BR> + 67X<BR> + 63V<BR> + 63S<BR> + 63M<BR> + -<BR> + -<BR> + 63H<BR> + 63P<BR> + -<BR> + -<BR> + 63X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + RJ/RJR50<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P>&nbsp;<P> +<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=3> + <TR> + <TD COLSPAN=7> + <FONT color="#0000FF" SIZE=4 FACE=ARIAL><B>SMD TRIM-POT CROSS REFERENCE</B></FONT> + <P> + <FONT SIZE=4 FACE=ARIAL><B>MULTI-TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3224G<BR> + 3224J<BR> + 3224W<BR> + 3269P<BR> + 3269W<BR> + 3269X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 44G<BR> + 44J<BR> + 44W<BR> + 84P<BR> + 84W<BR> + 84X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST63Z<BR> + ST63Y<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + ST5P<BR> + ST5W<BR> + ST5X<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> + <TR> + <TD COLSPAN=7>&nbsp; + </TD> + </TR> + <TR> + <TD COLSPAN=7> + <FONT SIZE=4 FACE=ARIAL><B>SINGLE TURN</B></FONT> + </TD> + </TR> + <TR> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BOURNS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>BI&nbsp;TECH</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>DALE-VISHAY</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PHILIPS/MEPCO</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>PANASONIC</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>TOCOS</B></FONT> + </TD> + <TD> + <FONT SIZE=3 FACE=ARIAL><B>AUX/KYOCERA</B></FONT> + </TD> + </TR> + <TR> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 3314G<BR> + 3314J<BR> + 3364A/B<BR> + 3364C/D<BR> + 3364W/X<BR> + 3313G<BR> + 3313J<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + 23B<BR> + 23A<BR> + 21X<BR> + 21W<BR> + -<BR> + 22B<BR> + 22A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST5YL/ST53YL<BR> + ST5YJ/5T53YJ<BR> + ST-23A<BR> + ST-22B<BR> + ST-22<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + ST-4B<BR> + ST-4A<BR> + -<BR> + -<BR> + -<BR> + ST-3B<BR> + ST-3A<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + EVM-6YS<BR> + EVM-1E<BR> + EVM-1G<BR> + EVM-1D<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + G4B<BR> + G4A<BR> + TR04-3S1<BR> + TRG04-2S1<BR> + -<BR> + -<BR> + -<BR></FONT> + </TD> + <TD BGCOLOR="#cccccc" ALIGN=CENTER><FONT FACE=ARIAL SIZE=3> + -<BR> + -<BR> + DVR-43A<BR> + CVR-42C<BR> + CVR-42A/C<BR> + -<BR> + -<BR></FONT> + </TD> + </TR> +</TABLE> +<P> +<FONT SIZE=4 FACE=ARIAL><B>ALT =&nbsp;ALTERNATE</B></FONT> +<P> + +&nbsp; +<P> +</td> +</tr> +</table> +</BODY></HTML></description> +<packages> +<package name="C0402"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-1.905" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-2.159" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.889" y="-2.032" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.889" y="-2.286" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-1.905" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.27" y="-2.413" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.397" y="-2.921" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-2.159" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-2.032" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.905" y="-3.175" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.905" y="-4.826" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.889" y="-2.286" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.27" y="-2.413" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.397" y="-2.921" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.905" y="-3.175" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.905" y="-4.826" size="1.27" layer="27">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.778" y="-2.667" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025-025X050"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-2.794" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025-030X050"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-3.048" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025-040X050"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-3.429" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025-050X050"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-3.81" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025-060X050"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.032" y="-2.413" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025_050-024X070"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.81" y="-2.667" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025_050-025X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.159" y="-2.794" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025_050-035X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-3.302" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025_050-045X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.286" y="-3.81" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C025_050-055X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.032" y="-2.286" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-024X044"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-2.159" y="-2.667" size="1.27" layer="27" ratio="10">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.794" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-045X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.556" y="-3.81" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-030X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.556" y="-3.048" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-050X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.175" y="-2.159" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-055X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.302" y="-2.286" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-075X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.175" y="-2.921" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050H075X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.175" y="3.175" size="1.27" layer="27" ratio="10">>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><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-4.826" y="-3.048" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C075-042X103"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-1.651" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C075-052X106"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-2.032" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C102-043X133"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.524" y="-1.651" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C102-054X133"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.524" y="-1.905" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C102-064X133"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.524" y="-2.032" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C102_152-062X184"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-1.524" y="-2.286" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C150-054X183"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.032" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C150-064X183"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.032" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C150-072X183"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.286" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C150-084X183"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.54" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C150-091X182"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.429" y="-2.54" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C225-062X268"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C225-074X268"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C225-087X268"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C225-108X268"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C225-113X268"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-093X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-113X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-134X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-205X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-4.318" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C325-137X374"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C325-162X374"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C325-182X374"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-10.8458" y="-2.8702" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C375-192X418"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C375-203X418"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C050-035X075"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-3.556" y="-3.429" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C375-155X418"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C075-063X106"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-0.635" y="-2.54" size="1.27" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-154X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C275-173X316"> +<description><b>CAPACITOR</b><p> +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">>NAME</text> +<text x="-5.08" y="-2.54" size="1.778" layer="27" ratio="10">>VALUE</text> +</package> +<package name="C0402K"> +<description><b>Ceramic Chip Capacitor KEMET 0204 Reflow solder</b><p> +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">>NAME</text> +<text x="-0.5" y="-1.45" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 0603 Reflow solder</b><p> +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">>NAME</text> +<text x="-0.8" y="-1.65" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 0805 Reflow solder</b><p> +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">>NAME</text> +<text x="-1" y="-1.9" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 1206 Reflow solder</b><p> +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">>NAME</text> +<text x="-1.6" y="-2.1" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 1210 Reflow solder</b><p> +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">>NAME</text> +<text x="-1.6" y="-2.575" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 1812 Reflow solder</b><p> +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">>NAME</text> +<text x="-2.25" y="-2.975" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 1825 Reflow solder</b><p> +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">>NAME</text> +<text x="-1.6" y="-4.625" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 2220 Reflow solder</b><p> +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">>NAME</text> +<text x="-2.8" y="-3.975" size="1.016" layer="27">>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><b>Ceramic Chip Capacitor KEMET 2225 Reflow solder</b><p> +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">>NAME</text> +<text x="-2.8" y="-4.575" size="1.016" layer="27">>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">>NAME</text> +<text x="1.524" y="-4.699" size="1.778" layer="96">>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><B>CAPACITOR</B>, 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(&s->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(&s->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(&s->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, }, |