-
Die
vorliegende Erfindung betrifft Modems und insbesondere die Fernsteuerung
von Modems. Diese findet besondere Anwendung bei der Anpassung von
Anwendungsprogrammen an physikalische Vorrichtungen, besonders,
aber nicht ausschließlich, im
Zusammenhang mit Empfängern/Decodern
für digitale Übertragungssysteme.
-
Der
hier benutzte Begriff "Empfänger/Decoder" kann einen Empfänger zum
Empfangen von entweder codierten oder nicht codierten Signalen,
beispielsweise Fernseh- und/oder Funksignalen bezeichnen, die ausgestrahlt
oder durch irgendwelche anderen Mittel übertragen werden können. Auch kann
der Begriff einen Decoder zum Decodieren von Empfangssignalen bezeichnen.
Ausführungsformen solcher
Empfänger/Decoder
können
einen mit dem Empfänger
integralen Decoder zum Decodieren der Empfangssignale beispielsweise
in einer "Set-Top Box" umfassen, wobei
ein solcher Decoder in Kombination mit einem physikalisch getrennten
Empfänger fungiert
oder ein solcher Decoder solche Funktionen enthält wie beispielsweise einen
Webbrowser, einen Videorecoder oder einen Fernseher.
-
Durch
das Kommen von hauptsächlich
für die
Ausstrahlung von Fernsehsignalen bestimmten digitalen Übertragungssystemen,
insbesondere, aber nicht ausschließlich, Satellitenfernsehsystemen,
ist die Möglichkeit
der Verwendung solcher Systeme für andere
Zwecke eröffnet
worden. Einer davon ist die Bereitstellung von Dialogfähigkeit
mit dem Endbenutzer.
-
So
wie er hier benutzt wird, enthält
der Begriff digitales "Übertragungssystem" jedes Übertragungssystem
zur Übertragung
oder Ausstrahlung von beispielsweise hauptsächlich audiovisuellen oder
Multimedien-Digitaldaten. Während
die vorliegende Erfindung besonders auf ein ausgestrahltes digitales
Fernsehsystem anwendbar ist, kann die Erfindung auch auf ein festes
Telekommunikationsnetz für
Multimedien-Internetanwendungen, auf eine Fernsehüberwachungsanlage
und so weiter anwendbar sein. Der Begriff "digitales Fernsehsystem" enthält beispielsweise
jedes terrestrische, Satelliten-, Kabel- und sonstige System.
-
Die
vorliegende Erfindung findet spezifische Anwendung in einem digitalen
Rundfunkfernsehsystem, in dem Empfangssignale durch einen Empfänger zu
einem Empfänger/Decoder
und von dort zu einem Fernsehgerät
weitergeleitet werden. Der Empfänger/Decoder
(auch als Set-Top
Box bzw. STB bekannt) decodiert ein komprimiertes MPEG-Signal in ein Fernsehsignal
für das
Fernsehgerät.
Er wird durch ein Fernsteuerungshandgerät, durch eine Schnittstelle
im Empfänger/Decoder
gesteuert.
-
Eine
Weise zur Bereitstellung der oben beschriebenen Dialogfähigkeit
besteht darin, eine Anwendung auf dem Empfänger/Decoder ablaufen zu lassen,
durch den das Fernsehsignal empfangen wird. Es ist wünschenswert,
die Kommunikation einer Vielzahl von Anwendungen mit einer Vielzahl
von physikalischen Vorrichtungen transparent zu ermöglichen.
In unseren gleichzeitig anhängigen
Anmeldungen
WO9843172
A2 und
WO9843433 sind
Systeme beschrieben, bei denen eine oder mehrere Anwendungen durch
eine Set-Top Box (STB) heruntergeladen werden können und mit physikalischen
Vorrichtungen in der STB wie beispielsweise parallelen und seriellen
Schnittstellen und Chipkartenlesern mittels eines Gerätetreibers
für jede
Vorrichtung und einen Hauptgerätemanager
kommunizieren.
-
Nach
der vorliegenden Erfindung ist vorgeschlagen worden, die Fähigkeit
des Anschließens
einer Set-Top Box an eine Vielzahl von unterschiedlichen Signalkanälen wie
beispielsweise einen Modem, einen seriellen Kanal, einen parallelen
Kanal, einen MPEG-Kanal (komprimiertes und codiertes Videosignal),
Durchzugleser und so weiter bereitzustellen. Die Set-Top Box enthält eine
virtuelle Maschine, die eine Laufzeitmaschine enthält. Die
virtuelle Maschine ist an einen Gerätemanager angekoppelt, der wiederum über Vorrichtungen
und Gerätetreiber
an die physikalischen Schnittstellen der verschiedenen Kanäle angekoppelt
ist.
-
Der
Begriff MPEG bezieht sich auf die durch die Arbeitsgruppe "Motion Pictures Expert
Group" der International
Standards Organisation entwickelten Datenübertragungsstandards und insbesondere
aber nicht ausschließlich
auf den für
Digitalfernsehanwendungen entwickelten und in Dokumenten ISO 13818-1,
ISO 13818-2, ISO 13818-3 und ISO 13818-4 aufgeführten MPEG-2-Standard. Im Zusammenhang
mit der vorliegenden Patentanmeldung enthält der Begriff alle auf das
Gebiet der digitalen Datenübertragung
anwendbaren Varianten, Abänderungen
und Entwicklungen von MPEG-Formaten.
-
Wie
oben bemerkt ist einer der Kanäle
vorzugsweise ein Modem. Die Hauptaufgabe der vorliegenden Erfindung
besteht in der Bereitstellung verbesserter Steuerung eines solchen
Modems. Dies wird durch Bereitstellung eines verbesserten Gerätetreibers
zum Steuern des Modems erreicht. Für die gegenwärtigen Zwecke
ist die genaue Beschaffenheit irgendwelcher Unterschiede zwischen
Vorrichtungen und Gerätetreibern
unwesentlich und der hier benutzte Begriff "Gerätetreiber" sollte so ausgelegt werden,
daß er
jede Form von Schnittstelle zwischen Hardware und einer Anwendung
einschließt,
es sei denn der Zusammengang erfordert es anderweitig.
-
Gemäß der Erfindung
wird ein Gerätetreiber nach
Patentanspruch 1 bereitgestellt.
-
Der
Gerätemanager
wird gewöhnlich
zur Steuerung einer Mehrzahl von Gerätetreibern ausgeführt sein
und Nachrichten zwischen den Gerätetreibern
und einer oder mehreren Anwendungen weiterleiten, aber der Begriff "Gerätemanager" soll jede Instanz
mit der Fähigkeit
zur Steuerung des Gerätetreibers
umfassen und kann selbst eine steuernde Anwendung sein. Weitere
bedeutende Merkmale der Erfindung werden aus der nachfolgenden ausführlichen
Beschreibung und den Ansprüchen
ersichtlich sein.
-
Die
Vorrichtung wird bevorzugt als Gerätetreiber in einem Empfänger/Decoder
implementiert, beispielsweise für
ein digitales Übertragungssystem wie
in unseren gleichzeitig anhängigen
Anmeldungen
WO9843430
A1 und
WO9843427
A1 beschrieben. Bei einer solchen Implementierung kann
der Gerätetreiber
unter der Steuerung einer Anwendung über den Gerätemanager fungieren, wodurch
eine zweckdienliche und flexible Anordnung zur Steuerung des Gerätetreibers
bereitgestellt wird. Die Anwendung wird vorzugsweise in einer interpretierten Sprache
gefahren und der Gerätetreiber
ist vorzugsweise kompiliert.
-
Im
Vergleicher werden vorzugsweise die gespeicherten Muster mit einer
vorbestimmten Endlänge
der Nachricht verglichen.
-
Die
Muster können
mehrere Typen umfassen und es kann eine Mehrzahl von Mustern des
gleichen Typs geben. Solche Muster können Ereignisse, ACK (positive
Bestätigungen)
und NACK (negative Bestätigungen)
umfassen, wobei das erzeugte Signal den passenden Mustertyp anzeigt.
-
Der
Gerätetreiber
kann zum Senden des Signals zum Gerätemanager durch Hinzufügen desselben
zu der durch den Modem empfangenen Nachricht angeordnet sein. Befehle
können
zwischen dem Gerätetreiber
und dem Gerätemanager
in der Form von Calls weitergeleitet werden, die Parameter im Gerätetreiber
aufbauen, IO, die Steuersignale und Daten zu den Gerätetreibern
senden, und Events, die Erkennung von Mustern oder Nachrichtenempfang oder Übertragungsprobleme
zum Gerätemanager
signalisieren. Eine Form von Call-Befehl umfaßt mindestens einen Mustereinstellungsbefehl
zum Definieren eines oder mehreren vom Vergleicher zu suchenden
Mustern.
-
Es
gibt vorzugsweise drei Untertypen von zu suchenden, einen Mustereinstellungsbefehl
definierenden Mustern, einen Mustereinstellungsbefehl für jeden
Mustertyp. Der oder mindestens ein Mustereinstellungsbefehl kann
zum Definieren einer Mehrzahl von zu vergleichenden Mustern angeordnet
sein, wobei jedes Muster bei Erkennung eines entsprechenden Musters
ein zu erzeugendes zugehöriges
Ereignissignal aufweist.
-
Die
zu suchenden Muster können
in jeweiligen Teilbereichen des Steuerspeichers gespeichert sein.
Als Alternative können
die zu suchenden Muster in einem einzigen zusammenhängenden
Bereich des Steuerspeichers gespeichert sein.
-
Bei
einer Ausführungsform
wird bei Auftreten einer Mehrzahl von Übereinstimmungen nur auf die letzte Übereinstimmung
gehandelt. Als Alternative wird bei Auftreten einer Mehrzahl von Übereinstimmungen
der Typ gemäß einer
vorbestimmten Prioritätsfolge
zwischen den unterschiedlichen Übereinstimmungstypen
angezeigt.
-
Funktionen
des Gerätetreibers
können
in Hardware, beispielsweise in einer dedizierten integrierten Schaltung
implementiert sein; damit kann eine verbesserte Betriebsgeschwindigkeit
bereitgestellt werden. Vorzugsweise wird jedoch mindestens ein Teil
des Gerätetreibers
in Software implementiert, vorzugsweise durch Verarbeitungsmittel
gefahren, die die Anwendung fahren; das erlaubt größere Flexibilität, erfordert
weniger Bauteile und erlaubt eine leichtere Aktualisierung des Gerätetreibers.
-
Die
vorliegende Erfindung erstreckt sich über ein Verfahren nach Patenspruch
6.
-
Weitere
Ausführungsformen
der Erfindung sind in den beiliegenden abhängigen Patentansprüchen angegeben.
-
Es
werden nunmehr bevorzugten Merkmale der vorliegenden Erfindung rein
beispielsweise unter Bezugnahme auf die beiliegenden Zeichnungen
beschrieben, in denen:
-
1 ein
Schaltschema von Schnittstellen des Empfängers/Decoders ist;
-
2 ein
Funktionsblockschaltbild des Empfängers/Decoders ist;
-
3 die
allgemeine logische Organisation des vorliegenden Gerätetreibers
zeigt;
-
4 ausführlicher
die logische Organisation der Musterbearbeitungsaspekte des vorliegenden Gerätetreibers
zeigt; und
-
5 Nachrichtenstruktur
und Speicherung darstellt.
-
Grundlagen des Empfängers/Decoders
-
Als
Beihilfe zum Verständnis
des Gerätetreibers,
die bevorzugte Plattform, auf der der Gerätetreiber fungiert, wird zuerst
unser digitaler Übertragungsempfänger/Decoder
kurz beschrieben.
-
Bezugnehmend
auf
1 ist ein Empfänger/Decoder
2020 bzw.
eine Set-Top Box zur Verwendung in einem interaktiven digitalen
Fernsehsystem, indem der Gerätetreiber
der Ausführungsform installiert
werden soll, schematisch dargestellt. Einzelheiten eines geeigneten
interaktiven Digitalfernsehsystems sind aus unseren gleichzeitig
anhängigen
Anmeldungen
WO9843430
A1 und
WO9843427 A1 ersichtlich,
auf die Bezug genommen werden sollte, sowie den Offenbarungen, die
hier durch Bezugnahme aufgenommen sind. Zur Leichtigkeit der Bezugnahme
sind ausführlicher
in den oben erwähnten Spezifikationen
beschriebene Teile im allgemeinen durch die in diesen Spezifikationen
benutzten Bezugsziffern bezeichnet.
-
Bezugnehmend
auf 1 enthält,
wie ausführlicher
in den oben erwähnten
Spezifikationen beschrieben, der Empfänger/Decoder 2020 mehrere Schnittstellen;
insbesondere einen Tuner 4028 für den MPEG-Signalfluß, eine
serielle Schnittstelle 4030, eine parallele Schnittstelle 4032 und
zwei Kartenleser 4036, wobei einer für eine Chipkarte Teil des Systems
bildet und einer für
(für Bezahlungen,
Heimbankverbindungen und dergleichen benutzte) Bankkarten. Auch
enthält
der Empfänger/Decoder
eine Schnittstelle 4034 zu einem mit Modem versehenen Rückkanal 4002 zum
Fernsehsignal Produzenten, so daß der Benutzer Bevorzugungen
und dergleichen zum Produzenten des Fernsehsignals (Programms) zurückmelden
kann. Auch umfaßt
der Empfänger eine
Laufzeitmaschine 4008, einen Gerätemanager 4068 und
eine Mehrzahl von Vorrichtungen 4062 und Gerätetreibern 4060 zum
Fahren von einer oder mehreren Anwendungen 4056 (siehe 2).
-
Für die Zwecke
der vorliegenden Spezifikation ist eine Anwendung ein Stück Computercode
zum Steuern von höheren
Funktionen vorzugsweise des Empfängers/Decoders 2020.
Wenn beispielsweise der Endbenutzer den Brennpunkt einer Fernsteuerung
auf ein auf dem Bildschirm des Fernsehgeräts 2022 gesehenes
Tastenobjekt positioniert und eine Validierungstaste drückt wird
die der Taste zugeordnete Anweisungsfolge gefahren.
-
Durch
eine interaktive Anwendung werden Menüs vorgeschlagen und Befehle
auf Anforderung des Endbenutzers ausgeführt und auf den Zweck der Anwendung
bezogene Daten bereitgestellt.
-
Anwendungen
können
entweder residente Anwendungen, d.h. im ROM (oder FLASH oder sonstigen
nichtflüchtigen
Speicher) des Empfängers/Decoders 2020 gespeicherte
oder rundgesendete und in den RAM- oder FLASH-Speicher des Empfängers/Decoders 2020 heruntergeladene
sein.
-
Einige
Beispiele von ausführlicher
in den oben erwähnten
Anwendungen beschriebenen Anwendungen sind:
Eine Anfangsanwendung
(Initiating Application), die eine anpaßbare Sammlung von Modulen
ist, mit denen der Empfänger/Decoder 2020 sofort
in der MPEG-2-Umgebung betriebsfähig
sein kann.
Eine Startanwendung (Startup Application), mit der jede
Anwendung, entweder heruntergeladen oder resident, auf dem Empfänger/Decoder 2020 ablaufen kann.
Ein
Programmführer
(Program Guide), der eine interaktive Anwendung ist, die volle Informationen über die
Programmierung erteilt.
Eine Gebührenfernsehanwendung (Pay Per
View), die ein auf jedem PPV-Kanal des Digitalfernsehbouquets verfügbarer interaktiver
Dienst ist, mit dem der Endbenutzer das aktuelle Ereignis erwerben
kann.
Eine PC-Herunterladeanwendung (PC Download application),
mit der ein Endbenutzer Computersoftware unter Verwendung der PC-Herunterladeanwendung
herunterladen kann.
Eine Magazin-Browseranwendung mit einer
zyklischen Videorundsendung von Bildern mit Endbenutzernavigation über Bildschirmtasten.
Eine
Teleshopping-Anwendung, mit der Angebote von Verkaufsgütern zum
Empfänger/Decoder 2020 übertragen
und auf dem Fernseher 2022 angezeigt werden können und
der Benutzer einen bestimmten Gegenstand zum Kauf auswählen kann.
-
Anwendungen
werden in Speicherstellen im Empfänger/Decoder 2020 gespeichert
und als Ressourcedateien dargestellt. Die Ressourcedateien umfassen
graphische Objektbeschreibungseinheitsdateien, variable Blockeinheitsdateien,
Anweisungsfolgendateien, Anwendungsdateien und Datendateien, wie
ausführlicher
in den oben beschriebenen Spezifikationen beschrieben wird.
-
Im
MPEG-Datenstrom umfaßt
jedes Modul eine Gruppe von MPEG-Tabellen.
Jede MPEG-Tabelle kann als eine Anzahl von Abschnitten formatiert sein.
Im MPEG-Datenstrom weist jeder Abschnitt eine "Größe" bis zu 4 kByte auf.
Zur Datenübertragung über den
seriellen und parallelen Anschluß werden beispielsweise Modulen
einfach in Tabellen und Abschnitte aufgespaltet, wobei die Größe des Abschnitts
sich mit dem Transportmedium ändert.
-
Modulen
werden im MPEG-Datenstrom in der Form von Datenpaketen von typischerweise
188 Byte in jeweiligen Typen von Datenstrom, z.B. Videodatenströmen, Audiodatenströmen und
Videotextdatenströmen
transportiert. Jedem Paket ist eine Paketkennung (PID – Packet
Identifier) von 13 Bit vorangesetzt, eine PID für jedes im MPEG-Datenstrom transportiertes
Paket. Eine PMT-Tabelle (programme map table) enthält eine
Liste und verschiedene Datenströme
und definiert den Inhalt jedes Datenstroms entsprechend der jeweiligen
PID. Zusätzlich
zu Programmen können
gewisse PID Anwendungen oder sonstigen im Datenstrom enthaltenen
Daten zugewiesen sein, wobei die PID unter Verwendung der PMT-Tabelle
identifiziert wird.
-
Der
Decoder enthält
in ein RAM-Volumen, ein FLASH-Volumen und ein ROM-Volumen eingeteilten
Speicher, aber diese physikalische Organisation unterscheidet sich
von der logischen Organisation. Der Speicher kann weiterhin in den
verschiedenen Schnittstellen zugeordnete Speichervolumen eingeteilt
sein. Aus einem Gesichtspunkt kann der Speicher als Teil der Hardware
erachtet werden, aus einem anderen Gesichtspunkt kann der Speicher
als das gesamte des dargestellten Systems, abgesehen von der Hardware,
unterstützend
oder enthaltend erachtet werden.
-
Das
System kann als auf einer einen Teil einer virtuellen Maschine 4007 bildenden
Laufzeitmaschine 4008 zentriert erachtet werden. Dieses
ist an einer Seite (der "hohen" Seite) an Anwendungen
angekoppelt und an der anderen Seite (der "niedrigen" Seite) über verschiedene, unten besprochene
logische Zwischeneinheiten an die Empfänger/Decoder-Hardware 4061 angekoppelt.
Die Empfänger/Decoder-Hardware
kann als die verschiedenen Anschlüsse oder Schnittstellen wie
oben besprochen enthaltend erachtet werden (die Schnittstelle 2030 für den Handapparat 2026,
die MPEG-Strom-Schnittstelle 4028, die serielle Schnittstelle 4030,
die parallele Schnittstelle 4032, die Schnittstellen zu
den Kartenlesern 4036 und die Schnittstelle 4034 zu
dem mit Modem versehenen Rückkanal 4002).
-
Unter
Bezugnahme auf 2 sind verschiedene Anwendungen 4057 an
die Einheit 4007 angekoppelt, wobei einige der allgemeiner
benutzten Anwendungen wie bei 4057 angezeigt mehr oder
weniger permanent im System resident sein können, während andere beispielsweise
aus dem MPEG-Datenstrom oder von anderen Anschlüssen nach Bedarf in das System
heruntergeladen werden.
-
Zusätzlich zu
der Laufzeitmaschine 4008 enthält die Einheit 4007 einige
residente Bibliotheksfunktionen 4006, zu denen eine Toolbox 4058 gehört. Die
Bibliothek enthält
verschiedenartige in der Maschine 4008 benutzte Funktionen
in C-Sprache. Dazu gehört
Datenhandhabung wie beispielsweise Komprimierung, Erweiterung oder
Vergleich von Datenstrukturen, Linienzeichnung, und so weiter. Auch enthält die Bibliothek 4006 Informationen über Firmware 4061 im
Empfänger/Decoder 2020 wie
beispielsweise Hardware- und
Software-Versionsnummern und verfügbaren RAM-Raum, und eine beim Herunterladen
einer neuen Vorrichtung 4062 benutzte Funktion. Funktionen
können
in die Bibliothek heruntergeladen werden und werden im FLASH- oder RAM-Speicher gespeichert.
-
Die
Laufzeitmaschine 4008 ist an einen Gerätemanager 4068 angekoppelt,
der an einen Satz Vorrichtungen 4062 angekoppelt ist, die
an Gerätetreiber 4060 angekoppelt
sind, die wiederum an Anschlüsse
oder Schnittstellen angekoppelt sind. Allgemein ausgedrückt kann
ein Gerätetreiber
als eine logische Schnittstelle definierend erachtet werden, so daß zwei verschiedene
Gerätetreiber
an einen gemeinsamen physikalischen Anschluß angekoppelt sein können. Eine
Vorrichtung wird normalerweise an mehr als einen Gerätetreiber
angekoppelt sein; wenn eine Vorrichtung an einen einzelnen Gerätetreiber angekoppelt
ist, wird die Vorrichtung normalerweise so ausgelegt sein, daß sie die
volle zur Kommunikation erforderliche Funktionalität enthält, so daß sich die
Notwendigkeit eines getrennten Gerätetreibers erübrigt. Gewisse
Vorrichtungen können
untereinander kommunizieren.
-
Wie
unten beschrieben wird, gibt es drei Formen von Kommunikation von
den Vorrichtungen 4062 zur Laufzeitmaschine hinauf: mittels
Variablen, Puffern und Ereignissen, die an eine Menge von Ereigniswarteschlangen
weitergeleitet werden.
-
Jede
Funktion des Empfängers/Decoders 2020 wird
als eine Vorrichtung 4062 dargestellt. Vorrichtungen können entweder
lokal oder abgesetzt sein. Lokale Vorrichtungen 4064 enthalten
Chipkarten, SCART-Verbindersignale, Modems, serielle und parallele
Schnittstellen, einen MPEG-Video- und
Audiospieler und eine MPEG-Abschnitts- und Tabellenableitereinheit.
An einem entfernten Ort ausgeführte abgesetzte
Vorrichtungen 4066 unterscheiden sich von lokalen Vorrichtungen,
indem ein Anschluß und eine
Prozedur von der Systemstelle oder dem Konstrukteur definiert werden
muß, anstatt
durch eine Vorrichtung und einen Gerätetreiber, die durch den Empfänger/Decoder-Hersteller bereitgestellt
und konstruiert worden sind.
-
Wenn
eine neue Vorrichtung 4062 erstellt wird, kann sie durch
Herunterladen der entsprechenden Anwendung 4056 von der
Rundfunkzentrale in bestehenden Empfängern/Decodern 2020 installiert werden.
Dieses Herunterladen wird im Empfänger/Decoder 2020 durch
eine Anwendung 4056 durchgeführt, die die Hardware- und
Softwareversionen überprüft und bei
Richtigkeit das die neue Vorrichtung 4062 darstellende
Softwaremodul lädt
und eine Prozedur der Bibliothek 4006 anfordert, den neuen
Vorrichtungscode in der Firmware (im FLASH-Speicher) zu installieren.
Damit kann eine flexible und sichere Installation neuer Funktionen
im Empfänger/Decoder 2020 ohne
Beeinflussung der übrigen
Software bereitgestellt werden.
-
Der
Gerätemanager 4068 ist
eine gemeinsame Softwareschnittstelle zwischen der Anwendung 4056 und
den spezifischen Funktionen des Empfängers/Decoders 2020.
Vom Gerätemanager 4068 wird der
Zugang zu Vorrichtungen 4062 gesteuert, Empfang eines unerwarteten
Ereignisses erklärt
und geteilter Speicher verwaltet.
-
Die
Laufzeitmaschine 4008 läuft
unter Steuerung des Mikroprozessors und einer gemeinsamen Anwendungsprogrammierungsschnittstelle.
Sie sind in jedem Empfänger/Decoder 2020 installiert,
so daß alle
Empfänger/Decoder 2020 aus
dem Gesichtspunkt der Anwendung identisch sind.
-
Durch
die Maschine 4008 werden Anwendungen 4056 auf
dem Empfänger/Decoder 2020 abgearbeitet.
Diese führt
interaktive Anwendungen 4056 aus und empfängt Ereignisse
von außerhalb des
Empfängers/Decoders 2020,
zeigt Graphiken und Text an, ruft Vorrichtungen für Dienste
auf und benutzt Funktionen der mit der Maschine 4008 verbundenen
Bibliothek 4006 für
spezifische Berechnung.
-
Die
Laufzeitmaschine 4008 ist ein in jedem Empfänger/Decoder 2020 installierter
ablauffähiger Code
und enthält
einen Interpretierer zum Interpretieren und Abarbeiten von Anwendungen.
Die Maschine 4008 ist an jedes Betriebssystem anpaßbar einschließlich eines
Einzeltask-Betriebssystems
(wie beispielsweise MS-DOS). Die Maschine 4008 basiert auf
Prozeß-Folgesteuerungseinheiten
(die verschiedene Ereignisse wie beispielsweise einen Tastendruck
zum Ausführen
verschiedener Handlungen nehmen) und enthält ihr eigenes Steuerprogramm zum
Verwalten von Ereigniswarteschlangen von den verschiedenen Hardwareschnittstellen.
Auch bearbeitet sie die Anzeige von Graphiken und Text. Eine Prozeß-Folgesteuerungseinheit
umfaßt
eine Menge von Aktionsgruppen. Jedes Ereignis bewirkt, daß die Prozeß-Folgesteuerungseinheit
sich von ihrer aktuellen Aktionsgruppe zu einer anderen Aktionsgruppe
in Abhängigkeit
von der Beschaffenheit des Ereignisses bewegt und die Aktionen der
neuen Aktionsgruppe ausführt.
-
Die
Maschine 4008 umfaßt
einen Codelader zum Laden und Herunterladen von Anwendungen 4056 in
den Empfänger/Decoder-Speicher 2028.
Zur Sicherstellung optimaler Nutzung wird nur der notwendige Code
in den RAM- oder
FLASH-Speicher geladen. Die heruntergeladenen Daten werden durch einen
Authentifizierungsmechanismus überprüft, um irgendeine
Abänderung
einer Anwendung 4056 oder die Ausführung einer unberechtigten
Anwendung zu verhindern. Weiterhin umfaßt die Maschine 4008 einen
Dekomprimierer. Da der Anwendungscode (eine Form von Zwischencode)
aus Raumersparnis und zum schnellen Herunterladen aus dem MPEG-2-Transportstrom
oder über
einen eingebauten Empfänger/Decoder-Modus
komprimiert ist, muß der
Code vor Einladen in den RAM dekomprimiert werden. Auch umfaßt die Maschine 4008 einen
Interpretierer zum Interpretieren des Anwendungscodes zum Aktualisieren
verschiedener Größenwerte
und Bestimmen von Zustandsänderungen,
und einen Fehlerprüfer.
-
Vor
Benutzung der Dienste irgendeiner Vorrichtung 4062 muß ein Programm
(wie beispielsweise eine Anwendungsanweisungsfolge) als "Klient", das heißt eine
logische Zugangsweise zu der Vorrichtung 4062 oder dem
Gerätemanager 4068 erklärt werden.
Vom Manager wird dem Klienten eine Klientennummer erteilt, auf die
bei allen Zugriffen auf die Vorrichtung Bezug genommen wird. Eine
Vorrichtung 4062 kann mehrere Klienten aufweisen, wobei
die Anzahl von Klienten für
jede Vorrichtung 4062 in Abhängigkeit von dem Typ der Vorrichtung 4062 abgegeben
wird. Ein Klient wird der Vorrichtung 4062 durch eine Prozedur "Device: Open Channel" (Vorrichtung: Kanal öffnen) vorgestellt.
Durch diese Prozedur wird dem Klienten eine Klientennummer zugewiesen.
Ein Klient kann aus der Klientenliste des Gerätemanagers 4068 durch
eine Prozedur "Device: Close
Channel" (Vorrichtung:
Kanal schließen)
herausgenommen werden.
-
Der
vom Gerätemanager 4068 für die Vorrichtungen 4062 bereitgestellte
Zugriff kann entweder synchron oder asynchron sein. Für synchronen Zugriff
wird eine Prozedur "Device:
Call" (Vorrichtung:
Rufen) benutzt. Das ist ein Mittel zum Zugreifen auf Daten, die
sofort verfügbar
sind, oder eine Funktionalität,
bei der nicht auf die gewünschte
Antwort gewartet werden muß.
Für asynchronen
Zugriff wird eine Prozedur "Device:
I/O" (Vorrichtung:
E/A) benutzt. Dies ist ein Mittel zum Zugreifen auf Daten, bei dem
auf eine Antwort gewartet werden muß, beispielsweise Abfragen
von Tunerfrequenzen zum Finden eines Multiplexes oder Zurückerhalten
einer Tabelle aus dem MPEG-Strom. Wenn das angeforderte Ergebnis
verfügbar
ist, wird ein Ereignis in die Warteschlange der Maschine gesetzt,
um seine Ankunft zu signalisieren. Eine weitere Prozedur "Device: Event" (Vorrichtung: Ereignis)
bietet ein Mittel zum verwalten unerwarteter Ereignisse.
-
Wie
oben bemerkt ist die Hauptschleife der Laufzeitmaschine an eine
Vielzahl von Prozeß-Folgesteuerungseinheiten angekoppelt,
und wenn die Hauptschleife auf ein zutreffendes Ereignis trifft,
wird die Steuerung zeitweilig zu einer der Prozeß-Folgesteuerungseinheiten übertragen.
-
So
ist ersichtlich, daß das
Grundsystem eine Plattform mit beträchtlicher Flexibilität beim Ermöglichen,
daß eine
Anwendung mit einer Vielzahl von Vorrichtungen kommuniziert, bereitstellt.
-
Modem-Gerätetreiber
-
Die
genauen Einzelheiten der Implementierung der verschiedenen Funktionen
und die Verteilung zwischen Hardware und Software sind eine Angelegenheit
der Wahl für
den Implementierer und werden nicht ausführlich beschrieben. Es wird
jedoch bemerkt, daß dedizierte
integrierte Schaltungen mit der Fähigkeit zur Durchführung der
in dem gegenwärtigen
Gerätetreiber
erforderlichen Operationen im Handel erhältlich sind oder leicht konstruiert
werden können
und diese können
als Grundlage für
einen Hardwarebeschleuniger benutzt oder vorzugsweise zur Erzeugung
eines dedizierten Hardwarebeschleunigers abgeändert werden, um verschiedene
der erforderlichen Operationen zu implementieren und damit die zum
Abarbeiten der Software erforderliche Verarbeitungsleistung zu reduzieren.
Die erforderlichen Operationen können
jedoch in Software implementiert werden, wenn genügend Verarbeitungsleistung
zur Verfügung
steht. Der Gerätetreiber
kann als eine Reihe von einzeln zugänglichen Funktionseinheiten
umfassend erachtet werden, von denen jede hiernach als "Befehl" bezeichnet wird.
-
Jeder
Befehl ist an einer Anwendung unter Steuerung des Gerätemanagers 4068 mittels
einer der drei oben erwähnten
Standardprozeduren angeschlossen, die anderen Vorrichtungen gemein
sind. Informationen können
zwischen einer Anwendung und der Vorrichtung mittels Parametertabellen
weitergeleitet werden. Zur leichten Bezugnahme sind die drei Grundprozeduren
kurz unten zusammengefaßt:
- 1) Device: Call (Vorrichtung: Rufen). Diese
Prozedur kann von einer Anwendung zur Durchführung von synchronen Befehlen
oder Datenübertragung benutzt
werden. Ausführung
der Anwendung wird so lange eingestellt, bis Steuerung bei Abschluß der Operation
durch den Gerätetreiber
zurückkehrt;
dies erlaubt zuverlässige
Steuerung von Operationen, die in strenger Reihenfolge durchgeführt werden
müssen.
- 2) Device: I/O (Vorrichtung: E/A). Diese Prozedur erlaubt asynchrone
Operation. Das heißt
eine Anwendung kann eine Anforderung einer Datenübertragung oder eine vom Gerätetreiber
durchzuführende
bestimmte Funktion senden und die Ausführung der Anwendung kann weiterlaufen, während die
Datenübertragung
oder Funktion vom Gerätetreiber
durchgeführt
wird.
- 3) Device: Event (Vorrichtung: Ereignis). Die Ereignisfangfunktion
ermöglicht
die Signalisierung von Ereignissen durch die Vorrichtung zu einer Anwendung
und das Unternehmen einer bestimmten Aktion durch die Anwendung
als Reaktion auf das Ereignis unabhängig von dem Code, der von
der Anwendung zur Zeit der Ereignissignalisierung ausgeführt wird;
im Effekt wird die Anwendung unterbrochen. Ereignisse können priorisiert
werden. Ereignisse können
zum Signalisieren von an der Schnittstelle auftretenden
-
Ereignissen
wie beispielsweise einem Busrücksetzen
benutzt werden oder zur Bereitstellung von Überwachung von asynchronen
Befehlen, beispielsweise durch Signalisierung der Vollendung einer
angeforderten Datenübertragung.
-
Der
gegenwärtige
Gerätetreiber
ist als Block 500 dargestellt (3), mit
einer Logikeinheit 501, einem Steuerspeicher 502 und
einem Pufferspeicher 503. Diese zwei Speicher sind logisch
getrennt, bilden aber beide einen Teil des gleichen physikalischen
Speichers (insbesondere wird der Pufferspeicher einen Teil des RAM-Speichers
bilden und der Steuerspeicher kann Teil des RAM- oder FLASH-Speichers bilden).
Der Gerätetreiber
ist wie gezeigt an den Gerätemanager 4068 und
die Modemschnittstelle 550 angekoppelt. Jeder Befehl bildet
einen Teil der Logikeinheit 501 und kann an Teilen des
Steuer- und/oder Pufferspeichers wirken.
-
Allgemein
gesagt werden die Modemfunktionen im beschränkten Sinne des Modulierens
und Demodulierens von Signalen durch eine Modemeinheit durchgeführt, die
in der Schnittstelle 550 enthalten oder an ihr angebracht
sein kann. Steuerung und Verwaltung der die Schnittstelle durchfließenden Informationen
werden abgesehen von diesen beschränkten Modemfunktionen durch
den Gerätetreiber 500 durchgeführt.
-
Wie
oben beschrieben wird die Kommunikation zwischen den Vorrichtungen/Gerätetreibern
und dem Gerätemanager 4068 durch
drei Typen von Prozeduren durchgeführt: Calls, IO und Events.
Für vom Gerätetreiber 500 benutzte
Prozeduren werden Calls zum Senden verschiedener Parameter von der
Anwendung durch den Gerätemanager
zum Gerätetreiber
benutzt, IO werden zum Senden von Befehlen von der Anwendung durch
den Gerätemanager
zum Gerätetreiber
benutzt und Events werden zum Senden von Nachrichten vom Gerätetreiber über den
Gerätemanager
zu einer Anwendung benutzt.
-
Nunmehr
werden die in einer die Erfindung verwirklichenden Vorrichtung bereitgestellten
Befehle beschrieben. Auch von einer Anwendung kann auf jeden Befehl
durch Weiterleitung einer Kennung des Befehls als Parameter über eine
der obigen drei Standardprozeduren zugegriffen werden. Es müssen nicht
alle der unten beschriebenen Befehle bereitgestellt werden und die
Funktionen der Befehle lassen sich abändern. Obwohl die Befehle unabhängig bereitgestellt
oder abgeändert
werden können,
versteht es sich, daß aus
der durch die beschriebenen Befehle bereitgestellten kombinierten
Funktionalität
gewisse zusammenwirkende Nutzen entstehen.
-
Die
Befehle werden hinsichtlich der durch jeden Befehl bereitgestellten
Merkmale und Funktionen zusammen mit wahlweisen und bevorzugten Merkmalen
beschrieben. Mit den erteilten Informationen und bereitgestellten
Spezifikationen sollte die eigentliche Implementierung dieser Merkmale
für einen Fachmann
ganz einfach sein und die genauen Einzelheiten sind dem Implementierer überlassen.
Beispielsweise könnte
jeder Befehl in Software implementiert, vorzugsweise in der Programmierungssprache
C geschrieben und vorzugsweise zum Ablaufen auf dem zum Abarbeiten
der Anwendung benutzten Prozessor kompiliert sein; der Gerätetreiber
kann jedoch auf einem getrennten Prozessor ablaufen und einige oder
alle Befehle können
durch dedizierte Hardware implementiert sein. Die Befehle Call und
IO können
Informationen signalisieren oder Parameter durch Einstellen von
Werten in einer im Speicher gespeicherten Parametertabelle, zumal
deren Adresse zur Vorrichtung weitergeleitet wird, zu einer Anwendung
zurückleiten.
-
Ausführlicher
sind die benutzten Prozeduren oder Befehle die folgenden:
- Device:
Call (Vorrichtung: Rufen)
- Set: setzt Puffergrößen, Zeitgeberverzögerungen.
- Comm Set: setzt Datengröße (5 bis
8 Bit), Parität, Übertragungsrate.
- Char set: setzt Pausenzeichen und Verzögerung.
- Control set: zur entfernten Einrichtung gesendetes Freigabe-/Sperrsignal.
- Pattern set: setzt zu suchende Muster.
- Device: IO (Vorrichtung: E/A)
- Command: sendet einen Befehl zum Gerätetreiber ohne Interpretierung
- Send: sendet Daten zum Gerätetreiber.
- Action: sendet einen Befehl zum Gerätetreiber mit Interpretierung.
- Disconnect: trennt den Gerätetreiber
ab.
- Device: Event (Vorrichtung: Ereignis)
- Receive: signalisiert den Empfang einer Nachricht.
- Off: signalisiert ein Übertragungsproblem.
-
Eine
Prozedur enthält
auch einen Fehlercode zum Rückmelden
und (außer
der Prozedur Event: Off) eine Rufmeldung zum Rückmelden vom Gerätetreiber
zum Gerätemanager.
Auch enthält
eine Prozedur Call oder IO eine Speicheradresse, wo die gesendeten
Informationen (Parameter und so weiter) gefunden werden können.
-
Die
Funktionen der meisten dieser Befehle sind generell herkömmlich.
Das gegenwärtige
System enthält
jedoch einen Sonderbefehl, den Call-Befehl Pattern set. Durch diesen
Befehl wird ein oder mehrere durch die Logikeinheit 501 zu
suchendes Muster definiert. Der Befehl enthält eine Speicheradresse und
der Speicher enthält
beginnend an dieser Adresse eine Reihe von Mustern. (Insbesondere
enthält
die erste Stelle im Speicher die Anzahl von Mustern gefolgt von
den einzelnen Mustern und jedes einzelne Muster im Speicher enthält einen
Kopfteil mit der Länge
dieses Musters.)
-
Im
allgemeinen können
3 verschiedene Mustertypen zum Erzeugen von Events, ACK (positive Bestätigungen)
und NACK (negative Bestätigungen) eingestellt
werden. Es wäre
natürlich
möglich,
alle drei Mustertypen im gleichen Befehl einzuschließen, wobei
der Kopfteil jedes Musters den Typ dieses Musters kennzeichnet.
Es ist jedoch zu bevorzugen, drei Teilformen von Befehl für die drei
Mustertypen zu benutzen. So werden ACK- und NACK-Muster, die zur
Erkennung zuverlässigen
Empfangs eines Befehls durch den Modem erfordert sein können, vorzugsweise
unter Verwendung dedizierter Befehle eingestellt und alle anderen
Muster werden zum Auslösen
eines Ereignisses benutzt, wobei jedem Muster eine Nummer zugewiesen
wird, damit die Muster unterschieden werden können. Mit diesen Befehlen wird
im Steuerspeicher 502 eine Speicherzone 510 aufgebaut
(4); diese Speicherzone weist Segmente auf, die
die Muster Event, ACK bzw. NACK enthalten. Die Logikeinheit 501 enthält eine
Vergleichereinheit 511, die an diese Speicherzone angekoppelt
ist.
-
Die
Speicherzone 510 kann aus den durch die drei Befehle Pattern
set angegebenen Speicherbereichen bestehen. In diesem Fall können die
drei Segmente der Speicherzone sich physikalisch in unterschiedlichen
Gebieten des Speichers befinden. Die Vergleichereinheit 511 wird
die Startadressen der drei Segmente speichern müssen und, um Zugang zu den
verschiedenen Mustern zu erhalten, die Anzahl von Mustern (wie zu
Beginn jedes Segments gespeichert) und die Längen der einzelnen Muster zum Bestimmen
der genauen Orte der Muster und zum Erlangen von Zugang zu jedem
von ihnen nacheinander wie erforderlich benutzen. Als Alternative
kann die Vergleichereinheit 511 den Speicher durch Aufbauen
der Speicherzone 510 als Tabelle von Mustern in einer vorbestimmten
Stelle initialisieren.
-
Wenn
eine Nachricht empfangen wird, wird sie in einen Puffer im Pufferspeicher 503 weitergeleitet.
Dieser Speicher ist in eine Mehrzahl von Puffern 512 eingeteilt,
so daß die
Nachricht mehr als einen Puffer belegen kann, jedoch ist der Nachrichtenraum logisch
fortlaufend für
jede einzelne Nachricht. Wenn Musteranpassung durchgeführt wird,
durchsucht der Vergleicher 511 die letzten 32 Zeichen der
Nachricht auf Übereinstimmungen
mit jedem der in der Speicherzone 510 gespeicherten Muster.
-
Wenn
eine Übereinstimmung
gefunden wird, dann wird der Typ der Übereinstimmung (Event, ACK oder
NACK) in den im Puffer gespeicherten Kopfteil der Nachricht eingeschrieben
und/oder vom Gerätetreiber
wird irgendeine geeignete Handlung unternommen.
-
Es
ist zu bemerken, daß ACK-
und NACK-Mustererkennung zum Erkennen erwarteter Antworten vom Modem
benutzt werden kann, beispielsweise wenn Befehle gesendet werden,
während
der Modem off-live ist. Andere Signale vom Modem werden mit einer
getrennten Liste von Mustern verglichen und zum Auslösen von
Ereignissen benutzt; aus diesem Grund wird die Einstellung von ACK-
und NACK-Mustern vorzugsweise unabhängig von der Einstellung einer
Liste von Mustern durchgeführt,
die unerwarteten Ereignissen oder sonstigen Nachrichten vom Modem
entspricht.
-
Auf
diese Weise ist es möglich,
daß eine
Anwendung mit einem beliebigen einer Vielzahl von Modems kommuniziert.
Beispielsweise können
für die Modems
Anweisungsfolgen und Antworten allgemein einem Standard wie beispielsweise
dem Hages-Standard entsprechen, aber zusätzliche Merkmale aufweisen,
für die
eine proprietäre
Antwortfolge erzeugt wird. In einem solchen Fall werden die ACK- und
NACK-Muster nach Standardmustern eingestellt und die zusätzlichen
Merkmale in entsprechenden Antwortfolgen können Ereignissignalen zugewiesen werden.
-
5 zeigt
eine im Pufferspeicher 503 residente Nachricht 520.
Die Nachricht besteht aus einem Kopfteil 521 und einem
Körper 522.
Die Nachricht ist in diesem Fall physikalisch zwischen zwei Puffern 512 und 512' aufgeteilt.
Vom Vergleicher 520 wird ein Mustervergleich durchgeführt (d.h.
Suchen nach einer Übereinstimmung
mit den in dem Speicherbereich 510 gespeicherten Mustern) über das
Gebiet 523 der letzten 32 Zeichen des Körpers 522 der Nachricht.
Die Beschaffenheit jeder gefundenen Übereinstimmung wird in den
Nachrichtenkopfteil 521 im Pufferspeicher eingefügt.
-
Es
ist möglich,
daß mehr
als eine Übereinstimmung
eintritt, auf zweierlei Weisen: als erstes können zwei Muster des gleichen
Typs vorkommen (an unterschiedlichen Stellen in den letzten 32 Zeichen
der Nachricht). Diese Doppelübereinstimmung kann
außer
acht gelassen werden, d.h. als einzelne Übereinstimmung behandelt werden.
Als zweites können
zwei Übereinstimmungen
unterschiedlicher Typen auftreten (wiederum an unterschiedlichen Stellen
in den letzten 32 Zeichen). Je nach den Umständen kann der Vergleicher 511 zum
Anordnen des Übereinstimmungstyps
gemäß entweder
einer vorbestimmten Prioritätsfolge
zwischen den unterschiedlichen Übereinstimmungstypen
oder welches der Muster dem Ende der Nachricht näher ist ausgeführt sein.
-
Im
Befehlsmodus, das heißt,
wenn die Modemparameter eingestellt werden, kann dieses Verfahren
zum Senden einer Befehlsnachricht zum Gerätetreiber benutzt werden. Die
Nachricht wird vom Gerätetreiber
interpretiert und nicht durch die Schnittstelle beispielsweise zu
einem Datenserver gesendet. Für
jeden gesendeten Befehl sucht der Gerätetreiber nach einem Muster
und antwortet entsprechend auf die Anwendung.
-
In
diesem Modus ist es auch möglich,
eine Nachricht durch die Schnittstelle zu empfangen, ohne einen
Befehl gesendet zu haben. Dies kann geschehen, wenn beispielsweise
eine Rufspannung erkannt wird. Auch sollte der Gerätetreiber
in diesem Fall nach einem Muster in der Ereignismusterliste suchen.
-
Im
On-Line-Betrieb ist der Modem mit einem Datenserver verbunden und
es ist möglich,
Nachrichten von diesem Server zu empfangen. Der Gerätetreiber
sucht nach einem Muster in den letzten 32 vom Datenserver empfangenen
Zeichen.
-
Die
obigen Befehle und Ereignisse sind nur beispielhaft und die Erfindung
kann auf verschiedene Weisen implementiert werden und insbesondere
können
einige Befehle mit anderen, die ähnliche
Funktionen durchführen,
kombiniert werden oder einige können
in vereinfachten Implementierungen weggelassen werden. Hardware-
und Softwareimplementierungen jeder der Funktionen können frei
gemischt werden, sowohl zwischen Befehlen und auch innerhalb eines
einzigen Befehls.
-
Es
ist leicht zu verstehen, daß die
von der Hardware, der Computersoftware und dergleichen durchgeführten Funktionen
auf oder unter Verwendung elektrischer und gleicher Signale durchgeführt werden.
Softwareimplementierungen können
im ROM gespeichert werden oder können
in FLASH gespeichert oder eingekoppelt werden.
-
Es
versteht sich, daß die
vorliegende Erfindung oben rein beispielhaft beschrieben worden
ist, und Abänderungen
der Einzelheiten können
im Rahmen der beanspruchten Erfindung durchgeführt werden.