ISTEC 1008 INTERN

Von Hergen Lehmann mit Erweiterungen von Ullrich von Bassewitz
und Norbert Richter.
Updated for 1008 V1.93 - P. Barnard (Emmerich)
Updated for 1008 V2.00 - J. Wagner  (Emmerich)


**********************************************************************
*                      Schnittstellenprotokoll                       *
**********************************************************************

Schnittstellenparameter:  9600 Baud, 8N1

Die Übertragung geschieht grundsätzlich in Segmenten zu je 4Byte:

  +-----------+-----------+-----------+-----------+
  | x000 00xx | xxxx xxxx | xxxx xxxx | xxxx xxxx |
  +-----------+-----------+-----------+-----------+
    |       |      \-------------------------/
  Endemarke |       Datenbytes, ungenutzte Bytes
        Anzahl der    sind 00 oder FF
        Datenbytes

Jeweils eine Anzahl Segmente mit dem Startbyte 0x03 und drei Daten-
bytes sowie ein abschliessendes Segment mit dem Startbyte 0x81- 0x83
und entsprechend ein bis drei weiteren Datenbytes bilden zusammen
eine Nachricht. Das erste Byte einer solchen Nachricht bestimmt
ihre Funktion, der Rest sind Parameter.

Prüfsummen oder ähnliches gibt es nicht.

Beispiele:
    03 DD 07 01 83 00 01 00
    = Opcode 0xDD, Parameter "07 01 00 01 00"

    82 18 01 00
    = Opcode 0x18, Parameter "01"

**********************************************************************
*                  Nachrichten vom PC an die ISTEC                   *
**********************************************************************

Opcode  Parameter          Funktion
~~~~~~  ~~~~~~~~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 0x02   (2 Byte Version    Bereitschaft prüfen
         der PC-SW)        Ab FW-Version 2.0 werden von der ISTEC
                           zusätzlich die Parameter pc_version_h
                           und pc_version_l erwartet.
                           Um die Features der Version 2.0 in vollem
                           Umfang nutzen zu können, muß der Wert
                           von pc_version_h >= 2 sein. Der Parameter
                           pc_version_l wurde fuer spätere
                           Versionen vorgehalten und ist in der
                           FW-Version 2.0 redundant.

 0x05   16 oder 128 Byte   Schreiben der Gebührenzähler
        Gebührendaten    Für jedes der 64 möglichen Endgeräte
                           sind zwei Bytes reserviert.
                           Anmerkung (N. Richter):
                           Ab FW 2.0 liefert und sendet die ISTEC
                           acht statt 64 Datensätze (also 16 Byte).

 0x06   --                 Abfrage Gebührenzähler

 0x07   1 Byte Endgeräte-  Schreiben Endgerätekonfiguration
        nummer, gefolgt    Endgerätenummer: 0x00=Nebenstelle 21,
        von 16-25 Byte     0x01=Nebenstelle 22, usw. bis 0x3F
        Konfigurations-    was 16, 4 additional byte for V1.93
        daten              Anmerkung (N. Richter):
                           Übersicht Größe Endgerätedatensatz der
                           einzelnen FW-Versionen:
                           <= 1.92: 16 Byte
                           FW 1.93: 20 Byte
                           FW 1.95: 21 Byte
                           FW 1.96: 21 Byte
                           FW 2.00: 25 Byte

 0x08   --                 Abfrage Endgerätekonfiguration
                           Nach dem Empfang dieser Anweisung sendet
                           die ISTEC hintereinander 64 Antwortnach-
                           richten des Typs 0x16 (siehe unten), ent-
                           sprechend den 64 möglichen Endgeräten.
                           Anmerkung (Richter):
                           Ab FW 1.93 liefert die ISTEC nur noch
                           acht statt 64 Datensätze.

 0x09   93-116 Byte Kon-   Schreiben Grundkonfiguration
        figurationsdaten   (wird nicht quittiert!)
                           Anmerkung (N. Richter):
                           Übersicht Größe Grundkonfigurationsatz der
                           einzelnen FW-Versionen:
                           <= 1.92:  93 Byte
                           FW 1.93: 106 Byte
                           FW 1.95: 106 Byte
                           FW 1.96: 106 Byte
                           FW 2.00: 116 Byte

 0x0a   --                 Abfrage Grundkonfiguration

 0x0c   --                 Abschluss Konfiguration (Daten in
                           Permanentspeicher übernehmen!?)
                           Anmerkung (Wagner, Emmerich):
                           Mit diesem Kommando wird der EEPROM-
                           Timerjob gestartet,um die Konfigurations-
                           daten im EEPROM zu sichern

 0xdd   5 Byte Parameter   Diagnoseanweisung
        siehe unten

**********************************************************************
*               Nachrichten von der ISTEC an den PC                  *
**********************************************************************

Opcode  Parameter          Funktion
~~~~~~  ~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 0x11   --                 Positive Quittung fuer die Kommandos 0x0c
                           und 0x05

 0x12   --                 Antwort auf 0x02, Bereitschaft prüfen

 0x13   1 Byte Fehler-     Wird von der ISTEC im Fehlerfall zurück-
        code               geliefert, 0x01 = type failure, 0x03 =
                           invalid data (laut Emmerich Doku). Es
                           tritt außerdem noch der undokumentierte
                           Typ 0x02 auf.
                           Anmerkung (Wagner, Emmerich):
                           Tatsächlich sind für t=17.10.96
                           folgende Fehlertypen implementiert:
                           FEHLER_PROTOKOLL     0x00
                           FEHLER_ISTEC_TYP     0x01
                           FEHLER_TRANSPORT     0x02

 0x15   16 oder 128 Byte   Antwort auf 0x06, Abfrage Gebühren
        Gebührendaten      Für jedes der 64 möglichen Endgeräte
                           sind zwei Bytes reserviert.
                           Anmerkung (Richter):
                           Ab FW 2.0 liefert und sendet die ISTEC
                           acht statt 64 Datensätze (also 16 Byte).

 0x16   1 Byte Endgeräte-  Antwort auf 0x08, Konfiguration abfragen
        nummer, gefolgt    Endgerätenummer: 0x00=Nebenstelle 21,
        von 16-25 Byte     0x01=Nebenstelle 22, usw. bis 0x3F
        Konfigurations-    Anmerkung (N. Richter):
        daten              Datensatzgrößen sind abhängig von der
                           Firmwareversion - siehe Kommando 0x07

 0x17   93-116 Byte Kon-   Antwort auf 0x0a, Konfiguration abfragen
        figurationsdaten   Anmerkung (N. Richter):
                           Datensatzgrößen sind abhängig von der
                           Firmwareversion - siehe Kommando 0x09

 0x18   Endgerätenummer    Quittung fuer 0x07, Schreiben der
                           Endgerätekonfiguration

 0xdd   5 Byte Parameter,  Diagnosestatus
        siehe unten

**********************************************************************
*                        Diagnosenachrichten                         *
**********************************************************************

Richtung  Parameterbytes  Funktion
~~~~~~~~  ~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  -->     00 69 5A 96 A5  Diagnosemodus einschalten

  -->     01 00 00 00 00  Diagnosemodus beenden

 <-->     02 ss gg zz 00  Verbindungsmatrix
                          ss=Spalte, gg=Endgerät, zz=0:aus,=1:ein

 <-->     03 gg 00 zz 00  Ruf (gg=Endgerät, zz=0:aus,=1:ein)

  <--     04 gg 00 zz 00  Schleifenzustand
                          gg=Endgerät, zz=0:inaktiv ,=1:aktiv

  <--     05 gg 00 zz 00  Impulswahl erkannt
                          gg=Endgerät, zz=gewähle Ziffer
                          (0x10=R-Taste)

  <--     06 kk 00 zz 00  Tonwahl erkannt
                          kk=Kanal (0:IVb1,1:IVb2),
                          zz=gewählte Ziffer

 <-->     07 01 00 zz 00  LED Zustand (zz=0:aus, =1:ein)

  -->     08 ll 00 zz 00  Gebühren (ll=Leitung, zz=0:aus,=1:ein)

  -->     09 00 00 zz 00  TFE-Verstärker (zz=0:aus, 1:ein)

  <--     09 FF FF zz 00

  -->     0A 00 00 zz 00  Türöffner (zz=0:aus, =1:ein)

  <--     0A FF FF zz 00

  -->     0D 00 00 00 00  Schalter abfragen (zz=0:aus, =1:ein)

  <--     0D 00 00 zz 00


Anmerkung (N. Richter):
Zwei FW 1.95er Versionen (die eigentlich nicht mehr im Umlauf sein
dürften) liefern um zwei Byte verkürzte Diagnosenachrichten.
Die Diagnosenachrichten dieser Versionen sind unbrauchbar. Dies
betrifft die 1.95 vom 9.7.96 und vom 12.7.96.


**********************************************************************
*                  Datenstruktur Grundkonfiguration                  *
**********************************************************************

Offset  Bytes  Typ       Funktion
~~~~~~  ~~~~~  ~~~~~     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   0      1    Flag      Anschlußart:  0=Mehrgeraeteanschluss
                                       1=Anlagenanschluss
   1      1    Binär     Anzahl der a/b-Schnittstellen
   2      1    Flag      Protokoll: 0=1TR6, 1=E-DSS1
   3      2    Binär     Software Versionsnummer
   5      1    Binär     TFE-Zuordnung (0x15=21,0x16=22,...)

   6      5    BCD       MSN 0
  11      5    BCD       MSN 1
  16      5    BCD       MSN 2
  21      5    BCD       MSN 3
  26      5    BCD       MSN 4
  31      5    BCD       MSN 5
  36      5    BCD       MSN 6
  41      5    BCD       MSN 7
  46      5    BCD       MSN 8
  51      5    BCD       MSN 9

  56      1    Flag      Music on Hold (00=aus,01=ein)
                         Anmerkung (N. Richter):
                         Für FW-Versionen ab 1.93:
                         Ist Byte 93 ungleich 0x00, dann ist
                         dieses Byte 0x00 zu setzen. Es gelten
                         also folgende Zusammenhänge:
                         Byte 56  93   MOH
                              --- ---  --------------
                              00  00   Off
                              01  00   Intern
                              00  xx   Extern port xx

  57      1    Binär     Anzahl der internen S0-Busse
  58      1    Binär     Anzahl der externen S0-Busse

  59      1    Binär     Abfragestelle1 (0x15=21,0x16=22,...)
  60      1    Binär     Abfragestelle2 (0x15=21,0x16=22,...)
  61      1    Binär     Anzahl der Ziffern in der 1.Rufnummer
  62     10    ASCII     1.Rufnummer, mit 0x00 aufgefüllt
  72      1    Binär     Anzahl der Ziffern in der 2.Rufnummer
  73     10    ASCII     2.Rufnummer, mit 0x00 aufgefüllt

  83     10    Bitmaske  MSN Gruppenbildung: Für jede der 10
                         MSN's ein Byte, in dem die einzelnen
                         Bits angeben, welche der 8 Nebenstellen
                         klingeln sollen. Auch bei den größeren
                         Anlagen bleibt es bei 8Bit pro MSN;
                         keine Ahnung, wie die weiteren
                         Nebenstellen adressiert werden...
                         Anmerkung (Wagner, Emmerich):
                         Die größeren Anlagen werden
                         ausschließlich im Anlagenanschluß
                         betrieben. Dort geschieht die Zuordnung
                         der Tln. ueber DDI's.

 ----- Ab Firmware 1.93 -------------------------------------------
  93      1    Binary    Message on Hold port (0x15=21,0x16=22,...)
                         Anmerkung (N. Richter):
                         Siehe Anm. Byte 56 'Music on Hold'
  94      2    Binary    National code integer value (international
                         dialling code) 0x0031=49=Germany
  96      4    Bitmask   TFE location.
                         byte 0 - KEY 0 - bits correspond to ext.
                         byte 1 - KEY 1 -   ditto
                         byte 2 - KEY 2 -   ditto
                         byte 3 - KEY 3 -   ditto
                         bit  0 - extension 21
                         bit  1 - extension 22
                              ....
                         bit 7 - extension 28
                         This is used to indicate which extension
                         to ring when the TFE is activated (multiple
                         extensions are permitted by multiple bits)

                         Anmerkung (N. Richter):
                         Firmware 1.93/1.95/1.96 liefert insgesamt
                         106 Byte, wobei die hier fehlenden 6 Byte
                         bei diesen Versionen keine Funktion haben
                         (Reserved for future expansion).

 ----- Ab Firmware 2.00 -------------------------------------------
  100       1    Flag    Alarm Ton 0 = AUS, 1-8 = EIN
                         Dieser Parameter hat in der vorliegenden
                         Protokollvarainte keine Bedeutung.
                         In der SW-Struktur werden jedoch die
                         gleichen Typdeklarationen für die serielle
                         Sst. wie für die EEPROM-Routinen verwendet.
                         Zur Zeit wird dieser Wert lediglich für
                         die internen Routinen benötigt, ist aus
                         Kompatibilitätsgründen jedoch auch im
                         Sst.-protokoll enthalten.
                         Angereizt wird die Alarmfunktion über ein
                         neu definiertes Protokoll, auf das hier
                         jedoch nicht genauer eingegangen wird
                         (bei Emmerich anfragen).

  101      10    Binaer  Array von 10 Bytes. Jeder MSN kann einer
                         der folgenden Rufe zugeordnet werden:
                         normal_ruf                -> Wert 0 als
                                                      default
                         sonder_ruf_1              -> Wert 1
                         sonder_ruf_2              -> Wert 2
                         sonder_ruf_3              -> Wert 4
                         kein_ruf                  -> Wert 3
  111       5    Binary  Reserved for future expansion
  116    --ENDE--

BCD-Werte sind mit "F" aufgefüllt, wenn nicht die volle Stellenzahl
benötigt wird. Die erste Ziffer steht jeweils im LSB.

**********************************************************************
*              Datenstruktur Endgerätekonfiguration                  *
**********************************************************************

Offset  Bytes  Typ      Funktion
~~~~~~  ~~~~~  ~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   0      1    Flag     Wahlbewertung: 00=keine,01=Inland,...
   1      1    Flag     Dienst: 00=Telefonie,01=G3-FAX,...
   2      1    Binär    Rufumleitung: 00=keine,01=extern,
                        0x15=Nebenstelle 21,0x16=Nebenstelle 22,usw.
   3      1    Flag     Gebührenimpuls: 00=nein,01=ja
   4      2    BCD      PIN
   6     10    BCD      Rufnummer fuer externe Rufumleitung

 ----- Ab Firmware 1.93 -------------------------------------------
  16      1   Flag      Terminal mode (spontane amtsholung) 0x01=ON
  17      1   Flag      Anklopfen intern
                        Anmerkung (N. Richter):
                        Daten ab FW 1.93 vorhanden, Funktion erst
                        ab FW 2.00 implementiert.
                        Bit 0 = Anklopfen von Endgerät 21
                        Bit 1 = Anklopfen von Endgerät 22
                        ...
  18      2   Flag      Anklopfen extern
                        Anmerkung (N. Richter):
                        Daten ab FW 1.93 vorhanden, Funktion erst
                        ab FW 2.00 implementiert.
                        Bit 0 = Anklopfen von MSN 0
                        Bit 1 = Anklopfen von MSN 1
                        ...
                        Bit 9 = Anklopfen von MSN 9
                        Bit 10= Anklopfen von Türklingel 1
                        ...
                        Bit 13= Anklopfen von Türklingel 4
 ----- Ab Firmware 2.00 -------------------------------------------
  20      1   Binär     Zusatzinfo ueber Ziffernlänge der ext.
                        Rufumleitung
  21      1   Binär     Umleitungsziel bei Besetzt.
                        0   = keine Umleitung bei Besetzt
                        1-8 = 21-28
  22      1   Binär     Umleitungsziel nach Anzahl Rufsequenzen.
                        0   = keine Umleitung nach Anzahl Rufsequenzen
                        1-8 = 21-28
  23      1   Binär     Anzahl Rufe bis Umleitung aktiviert wird
                        (Gltige Werte: 3-10)
  24       --ENDE--

BCD-Werte sind mit "F" aufgefüllt, wenn nicht die volle Stellenzahl
benötigt wird. Die erste Ziffer steht jeweils im LSB.

**********************************************************************
*           Aufbau der Konfigurationsdateien (*.IC)                  *
**********************************************************************

Offset  Bytes  Funktion
~~~~~~  ~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   0     116   Daten der Grundkonfiguration
 116       1   0x00
 117      24   Konfiguration Endgerät 21
 141       1   0x01
 142      24   Konfiguration Endgerät 22
 166       1   0x02
 167      24   Konfiguration Endgerät 23
  :        :
  :        :   usw., insgesamt 64 Endgerätedatensätze
  :        :
        --ENDE--

**********************************************************************
*              Verarbeitungsgeschwindigkeit der ISTEC                *
**********************************************************************

Die ISTEC verarbeitet die an sie geschickten Nachrichten extrem
langsam! Glücklicherweise enthielt die Version 1.7 des Konfigurations-
programms von Emmerich einen Großteil der Turbo-Debugger Infos,
so daß es ein leichtes war, die tatsächlich benötigten Wartezeiten
durch einen Breakpoint auf der delay() Routine zu erfahren:

 * Nach jedem einzelnen Block von 4 Bytes muß 40ms gewartet werden

 * Nach einem kompletten Kommando nochmals zusätzlich 60ms, d.h.
   nach dem letzten Block insgesamt 100ms.

Ein Nichteinhalten dieser Zeiten führt zu einer Fehlermeldung von
der ISTEC, üblicherweise 0x13 0x02.



**********************************************************************
*                              ERGÄNZUNGEN                           *
**********************************************************************
Note from Paul Barnard (Emmerich).  The serial information is
buffered in the ISTEC and a byte is transfered to/from the serial
UART every time the task is run.  Currently the task time is 10ms.
This is inherent in the software structure of the product.
The internal buffer size of the ISTEC is only 4 bytes
(limited by RAM constraints).  Hence the need for the delay.
I've remembered to switch off the DEBUG now but if anyone wants
to know anything about either the 1008 software or the
configurationsoftware my Compuserve E-Mail is 100673,2522

Anmerkung von Michael Brandmueller (Emmerich). Ab Platine #3
(Firmware 1.93) müssen die Handshakesignale TRUE = negative
Spannung = LOW und FALSE = positive Spannung = HIGH sein.
(DTR = False und RTS = True)
Nähere Infos in der V.28 Konvention.

Anmerkung von Juergen Wagner (Emmerich). Folgende Leistungsmerkmale
können nur über eine zusätzliche Protokollvariante angereizt
werden:
- Alarmfunktion
- Tag/Nacht-Schaltung
- Kurzwahlspeicher
   - Babyruf
   - gesperrte Rufnummern
   - Sondersignalisierung nach Calling Party Number



**********************************************************************
*                     CTI-Interface Rev. 005                         *
**********************************************************************
                         Autor:   J.Wagner
CTI-Interface                                     Datum: 18.11.1996


1.1  CTI-Opcodes:
Die Daten werden in segmentierter Form über die serielle
Schnittstelle übertragen. Die Segmentlänge beträgt vier Bytes.
Jeweils eine Anzahl Segmente mit dem Startbyte 0x03 und drei
Datenbytes, sowie ein abschließendes Segment mit dem Startbyte 0x81-
0x83 und entsprechend ein bis drei Datenbytes bilden eine
Nachricht. Das MSB des Startbyte wird gesetzt, um das letzte
Segment einer Nachricht zu kennzeichnen (siehe Beispiele).

Das zweite Byte einer Nachricht wird in Form des Kommandos
CTI_START als Eintrittspunkt in das CTI-Protokoll verwendet.
Innerhalb des Protkolls wurden mehr Elemente spezifiziert, als zum
jetzigen Zeitpunkt implementiert wurden. In diesem Zusammenhang
werden lediglich die implementierten Elemente beschrieben.

Opcode  Bezeichnung  Parameter     Funktion
0xcc    CTI_START    CTI-Daten     Protokollkennung. Beginn
                     variabler     jeder CTI-Nachricht
                     Laenge
0x05    CTI_CONF     Opcode der    Konfigurationsdaten senden
                     Information
0x06    CTI_QUERY    Opcode der    Gezielte Abfrage von
                     Information   Informationen oder Zuständen
0x07    CTI_ERROR    Errorcode     Protokollfehler
0x08    CTI_ACK      Opcode der    Quittung auf Kommando
                     Information
0xff    CTI_STOP     keine         Endekennung


1.2  Daten vom Host an die ISTEC

Opcode   Bezeichnung           Funktion
0xcc     CTI_START             Protokollkennung
0xff     CTI_STOP              Endekennung


1.2.1  CTI-Query:
Anfragen vom Host an ISTEC:

Opcode   Bezeichnung      Parameter Rueckgabewert
0x03     CTI_LOAD_NUMBER  Speicher  1. Byte -> Speicherstelle (0-30)
                          stelle    2. Byte -> Länge (max. 10 Bytes )
                                    3. bis
                                   12. Byte -> BCD-Ziffern
                                   13. Byte -> Attribut Babyruf
                                               (TRUE/FALSE)
                                   14. Byte -> Attribut gültig für
                                               Tln. (Bitfeld)
                                   15. Byte -> Attribut Sonderruf
                                               Wert:
                                               0: normal_ruf
                                               1: sonder_ruf_1
                                               2: sonder_ruf_2
                                               4: sonder_ruf_3
                                               3: kein_ruf
                                   16. Byte -> Attribut Sperre
                                               0x00: keine Sperre
                                               0xff: Sperre aktiv
                                   Nummer in Kurzwahlspeicher schreiben
                                   Generell wird die tatsächliche Länge
                                   der Rufnummer übertragen. Die erste
                                   Ziffer wird im oberen Nibbel gesendet,
                                   die zweite im unteren usw.
0x05     CTI_ALARM        keine    Wert: 0    -> OFF
                                         1-8  -> Kanalnummern
0x07     CTI_DAY_NIGHT    keine    Wert: 0    -> TAG
                                         1    -> NACHT


1.2.2  CTI-Conf:
Konfigurationsdaten vom Host an die ISTEC:

Opcode   Bezeichnung           Parameter
0x09     CTI_STORE_NUMBER       1. Byte -> Speicherstelle (0-30)
                                2. Byte -> Länge (max. 10 Bytes )
                                3. bis
                               12. Byte -> BCD-Ziffern
                               13. Byte -> Attribut Babyruf
                                           (TRUE/FALSE)
                               14. Byte -> Attribut gültig fuer
                                           Tln. (Bitfeld)
                               15. Byte -> Attribut Sonderruf
                                           Wert:
                                           0: normal_ruf
                                           1: sonder_ruf_1
                                           2: sonder_ruf_2
                                           4: sonder_ruf_3
                                           3: kein_ruf
                               16. Byte -> Attribut Sperre
                                           0x00: keine Sperre
                                           0xff: Sperre aktiv
                               Nummer in Kurzwahlspeicher schreiben
                               Generell wird die tatsächliche Länge
                               der Rufnummer übertragen. Die erste
                               Ziffer wird im oberen Nibbel gesendet,
                               die zweite im unteren usw.
0x05     CTI_ALARM             Wert: 0   -> Alarm OFF
                                     1-8 -> Alarm fuer Kanalnummer ON
0x07     CTI_DAY_NIGHT         Wert: 0   -> TAG
                                     1   -> NACHT


1.3  Daten der ISTEC an den Host
Opcode   Bezeichnung           Funktion
0xcc     CTI_START             Protokollkennung
0xff     CTI_STOP              Endekennung


1.3.1 Infoelemente:
Opcode   Bezeichnung           Nachrichteninhalt
0x03     CTI_LOAD_NUMBER       Antwort auf CTI_QUERY (s. 1.2.1)
0x05     CTI_ALARM             Wert: 0   -> Alarm OFF
                                     1-8 -> Alarm für Kanalnummer ON
0x07     CTI_DAY_NIGHT         Wert: 0   -> TAG
                                     1   -> NACHT

1.4. Quittungen und Errorcodes
Opcode   Bezeichnung             Fehlerart
0x00     CTI_ERROR               allgemeiner Protokollfehler
0x01     CTI_INVALID_NUMBER      ungültige Wahlziffer
0x02     CTI_INVALID_SP_STELLE   ungültige Speicherstelle für
                                 Kurzwahl
0x03     CTI_INVALID_CHANNEL     ungültige Kanalnummer ( z.B. für
                                 Alarmfkt. )
0x04     CTI_INVALID_DAY_NIGHT   nur TAG(0) oder NACHT(1) gültig
0x05     CTI_EEPROM_IN_USE       EEPROM ist zur Zeit gesperrt
0x06     CTI_DAY_NIGHT_CHANGED   erfolgreiche Umschaltung
                                 TAG/NACHT
0x07     CTI_DEFAULT_VALUES      Daten aus Grundkonfiguration und
                                 nicht EEPROM
0x08     CTI_DAY_NIGHT_SAME      TAG/TAG oder NACHT/NACHT
                                 Umschaltung

Beispiele:
1.) Konfigurieren einer Kurzwahlnummer:
    -----------------------------------
    03 cc 05 03   03 0a 03 35   03 7f 00 81  83 00 00 ff

03 -> Startflag
cc -> CTI_START
05 -> CTI_CONF
03 -> CTI_STORE_NUMBER
03 -> Startflag
0a -> Speicherstelle 10
03 -> Anzahl der BCD-Ziffern (nicht der Bytes)
35 -> Ziffern 3 und 5 (BCD-gepackt)
03 -> Startflag
7f -> Ziffer 7. Die folgende Null wird verworfen (wegen Ziffernlänge 3)
00 -> Attribut Babyruf
81 -> Attribut: Kurzwahlspeicher für Teilnehmer eins und acht aktiviert
83 -> Startflag
00 -> Attribut Sonderruf
00 -> Attribut Sperre
ff -> CTI_STOP

Antwort der ISTEC auf erfolgreiche Konfiguration der Kurzwahl:
    03 cc 08 03   81 ff 00 00

03 -> Startflag
cc -> CTI_START
08 -> CTI_ACK
03 -> CTI_STORE_NUMBER
81 -> Startflag, letztes Segment der Nachricht
ff -> CTI_STOP
00 -> wegen Segmentlänge von vier Bytes
00 -> wegen Segmentlänge von vier Bytes


2.) Auslesen einer Kurzwahlnummer:
    -----------------------------------
    03 cc 06 03   82 0a ff 00

03 -> Startflag
cc -> CTI_START
06 -> CTI_QUERY
03 -> CTI_LOAD_NUMBER
82 -> Startflag, letztes Segment der Nachricht
0a -> Speicherstelle 10
ff -> CTI_STOP
00 -> wegen Segmentlänge von vier Bytes

Antwort der ISTEC:
    03 cc 08 05   03 03 0a 03
    03 35 7f 00   03 81 00 00
    81 ff 00 00

03 -> Startflag
cc -> CTI_START
08 -> CTI_ACK
05 -> CTI_CONF
03 -> Startflag
03 -> CTI_LOAD_NUMBER
0a -> Speicherstelle 10
03 -> Anzahl der BCD-Ziffern (nicht der Bytes)
35 -> Ziffern 3 und 5 (BCD-gepackt)
03 -> Startflag
7f -> Ziffer 7. Die folgende Info "f" wird verworfen
00 -> Attribut Babyruf
03 -> Startflag
81 -> Attribut: Kurzwahlspeicher für Teilnehmer eins und acht aktiviert
00 -> Attribut Sonderruf
00 -> Attribut Sperre
81 -> Startflag, letztes Segment der Nachricht
ff -> CTI_STOP
00 -> wegen Segmentlänge von vier Bytes
00 -> wegen Segmentlänge von vier Bytes


3.) TAG/Nacht Umschaltung:
    -----------------------------------
    03 cc 05 07    82 00 ff 00

03 -> Startflag
cc -> CTI_START
05 -> CTI_CONF
07 -> CTI_DAY_NIGHT
82 -> Startflag, letztes Segment der Nachricht
00 -> TAG-Konfiguration aktivieren
ff -> CTI_STOP
00 -> wegen Segmentlänge von vier Bytes
00 -> wegen Segmentlänge von vier Bytes

Quittung der ISTEC auf TAG/NACHT Umschaltung:

    03 cc 08 07    82 06 ff 00

03 -> Startflag
cc -> CTI_START
08 -> CTI_ACK
07 -> CTI_DAY_NIGHT
82 -> Startflag, letztes Segment der Nachricht
06 -> CTI_DAY_NIGHT_CHANGED
ff -> CTI_STOP
00 -> wegen Segmentlänge von vier Bytes