INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
CFamilyListDropTarget (IDropTarget) utilise deux objets des deux classes précédentes pour gérer le drag and drop sur une liste d'objets du Roster. En fonction de la nature (contact ou famille) de l'élément sur lequel on passe avec la souris, il fait entrer en jeu l'un ou l'autre objet pour simuler le comportement correct.
CRosterObjectDataObject (IDataObject) est le moyen qu'utilise le Shell pour transférer des données via le "drag and drop", mais aussi via le presse-papier. Un IDataObject encapsule les données à transporter, et peut les proposer dans différents formats, et via différents supports. C'est à la source du "drag and drop" de déterminer quels formats et quels supports le IDataObject envoyé doit proposer. Un object CRosterObjectDataObject contient, comme son nom l'indique, des objets du Roster, et il est capable de les proposer sous forme de texte (en
donnant le nom des objets, un nom sur chaque ligne), sous forme de fichiers (afin de pouvoir les conserver de manière persistante) et aussi sous un format propriétaire, connu du CFamilyDropTarget, afin de pouvoir gérer l'organisation du Roster par opérations de drag and drop. CRODOEnumFormatETC (IEnumFORMATETC) est, à l'instar du IEnumIDList, un objet qui permet d'énumérer les formats proposés par un IDataObject. Le CRODOEnumFormatETC énumère les formats proposés par un CRosterObjectDataObject.
CBasicDropSource (IDropSource) est chargé de fournir le feedback visuel à l'utilisateur durant une opération de "drag and drop". Principalement, cet objet modifie l'aspect du curseur selon que l'opération de "drag and drop" est une copie d'objets, un déplacement d'objets, ou si l'opération n'est pas autorisée. Comme son nom l'indique, cet objet est très simple.
CContextMenu (IContextMenu et IShellExtInit) est chargé d'afficher un menu contextuel personnalisé lorsque l'utilisateur effectue un clic droit sur l'icône d'un contact ou d'une famille.
Les icônes du bureau sont de véritables fichiers, qui appartiennent au système de fichier. Ces fichiers ont une extension particulière .enetshare ainsi que le GUID 64E7202A-A507-4cal-82D8-800B1DBB8780.
Le fichier contact contient le GUID de l'objet du Roster qu'il désigne ainsi qu'un objet CRosterObject sérialisé. De cette façon, en lisant le contenu du fichier et en le désérialisant, on sait exactement quel contact il représente, quelle est son icône,...
Pour que le Shell sache comment réagir par rapport aux fichiers contacts, nous incluons dans la base
de registre dans la clé \HKEY~CLASSES~ROOT\ l'ensemble des informations dont le Shell a besoin pour savoir comment réagir.
Pour que l'extension .enetshare soit masquée par le Shell, nous utilisons la clé NeverShowExt .
Pour indiquer au Shell comment afficher l'icône du contact, nous insérons une clé IconHandler dans la sous-clé ShellEx dans laquelle nous indiquons le CLSID de la classe CRosterObjectExtractIcon. La classe CRosterObjectExtractlcon (voir paragraphe précédent) implémente IExtractIcon et IPersistFile.
Pour indiquer au Shell comment gérer le drop d'un fichier sur l'icône d'un contact, nous insérons une clé DropHandler dans laquelle nous indiquons le CLSID de la classe CContactDropTarget qui implémente IDropTarget et IPersistFile.
Pour indiquer au Shell comment afficher un menu contextuel lorsqu'un utilisateur effectue un clic droit sur un contact, nous insérons une clé ContextMenuHandlers dans laquelle nous indiquons le CLSID de la classe CContextMenu qui implémente IContextMenu et IShellExtInit.
Pour indiquer au Shell comment traiter le double clic sur l'icône d'un contact, on indique quel est le programme qui doit être exécuté lorsqu'on effectue le double clic : on indique le chemin de Enetshare.exe (l'application principale) avec le fichier du contact comme argument. Lorsque l'application reçoit cette ligne de commande, elle extrait l'objet CRosterObject sérialisé et effectue ensuite des opérations appropriées.
HKCR enetshare = s 'enetsharefile'
enetsharefile DefaultIcon = s '%%1' // l'extension .enetshare est masquée val NeverShowExt = s '' Shell // reaction au double clic Open Command = s 'C:\Program Files\Enetshare\Bin\Enetshare. exe %%il ShellEx // IconHandler pour la gestion des icônes.
IShellView l'affichage des objets contenus dans le Folder est géré par un objet implémentant l'interface IShellView. Un objet implémentant IShellView est responsable de l' affichage des données dans la partie droite de l'explorateur, celle qui affiche habituellement les fichiers sous forme d'icônes, grandes ou petites, ou même sous forme de liste détaillée. Ainsi, Explorer met à disposition la partie droite de sa fenêtre aux objets IShellView, seuls capables d'afficher convenablement le contenu de leur IShellFolder associé.
IExtractIcon : Explorer affiche une icône pour chaque objet du Shell. Etant donné qu'il ne sait pas quelle icône choisir pour un objet précis (seul le créateur de cet objet sait quelle icône utiliser), le Shell propose l'interface IExtractIcon qui lui permet de récupérer l'icône d'un objet implémentant cette interface.
Les trois interfaces IDropSource, IDropTarget, IDataObject sont les interfaces clés pour les opérations de drag and drop . Un objet IDropSource détermine le comportement visuel d'une opération de "drag and drop". L'objet IDropTarget, lui, détermine le comportement du destinataire de l'opération de "drag and drop". Enfin, IDataObject représente un objet encapsulant
les données à transporter lors de l'opération de "drag and drop". Cet objet sera passé de la source à la destination du "drag and drop". C'est en inspectant cet objet que le destinataire détermine s'il est capable de gérer les données qu'on dépose sur lui.
EnsShell est un serveur COM implémenté dans une DLL ( Dynamic Link Library ), qui contient tous les objets du procédé selon l'invention relatifs à son intégration au Shell.
Voici la liste des objets COM implémentés dans EnsShell pour créer des Namespace Extensions (les familles) : Pour chaque nom de classe donné, le nom de l'interface COM qu'il implémente est indiqué entre parenthèses.
CFamilyShellFolder (IShellFolder) représente aux yeux du Shell une famille d'éléments du Roster. Il fournit au Shell tous les objets annexes dont ce dernier a besoin pour afficher chacun des éléments contenus dans la famille. Par ailleurs, il crée et renvoie au Shell des instances de CFamilyShellFolder qui représentent les sousfamilles (c'est ainsi que le Shell permet à l' utilisateur de "naviguer" dans les Namespace Extensions : chaque IShellFolder doit pouvoir renvoyer une nouvelle instance de IShellFolder représentant l'un de ses sous-folders). Ces objets sont décrits ci-après.
CFamilyShellView (IShellView) affiche dans la partie droite de la fenêtre d'Explorer, les contacts et les sous-familles contenues dans la famille sélectionnée.
L'affichage, tout comme pour les fichiers, se fait au moyen d'une liste ( listview ) qui peut afficher les éléments
sous diverses formes (grandes icônes, petites icônes, détails, etc.).
CFamilyEnumIDList (IEnumIDList) est l'objet qui énumère tous les sous-objets contenus dans un CFamilyShellFolder. Le Shell utilise des PIDLs, des identifiants dont la structure est laissée à la charge du fournisseur du Namespace Extension, pour identifier chaque élément d'un IShellFolder. Donc, lorsqu'il souhaite avoir la liste des sous-éléments d'un IShellFolder, le Shell demande à celui-ci de lui fournir un objet de type IEnumIDList, qui va énumérer les PIDLs de tous les sousobjets. Une fois muni de ces PIDLs, le Shell s'en servira pour demander au IShellFolder associé plus de détails sur chacun des éléments. Ainsi, le CFamilyEnumIDList permet d'énumérer les PIDLs de tous les contacts et sous-familles appartenant à une famille associée à un CFamilyShellFolder.
CRosterObjectExtractIcon (IExtractIcon et IPersistFile) se charge de fournir une icône pour un objet du Roster donné. Le Shell, une fois qu'il a le PIDL d'un élément d'un CFamilyShellFolder, demande à ce dernier un objet IExtractIcon qui lui fournira l'icône de cet élément. Un objet de type CRosterObjectExtractIcon sait quelle icône associer à un élément précis du Roster.
CFamilyDropTarget (IDropTarget) est responsable de la réception d'un élément par opération de drag and drop . Plus précisément, on associe un élément graphique de Windows (comme une fenêtre ou un élément particulier d'une liste) avec un objet de type IDropTarget.
Ce dernier, lorsque le Shell détecte qu'une opération de drag and drop va être effectuée sur l'élément graphique donné auparavant, est sollicité pour savoir d'une part s'il accepte l'opération de drop (il doit pour cela déterminer les données qu'on lui apporte, celles-ci dépendant de la source du drag and drop ) et d'autre
part de gérer l'opération de Drop , c'est-à-dire d'incorporer convenablement les données du Drop . Un CFamilyDropTarget est associé à une famille précise du Roster, et ne peut recevoir que des contacts ou d'autres familles (il ne peut recevoir de fichiers ou d'autres types de données). Lorsqu'on "droppe" des contacts ou des familles, ceux-ci sont ajoutés à la famille associée.
CContactDropTarget (IDropTarget et IPersistFile) est responsable de la réception d'un drag and drop sur une icône représentant un contact (les contacts sous forme d' items de la CFamilyShellView d'une famille mais aussi les contacts sur le bureau). A la différence des familles, les contacts ne peuvent, eux, pas recevoir d'autres contacts ou d'autres familles. En revanche, ils peuvent recevoir des fichiers, ce qui a pour effet d'envoyer ces fichiers (si le client de messagerie électronique dispose de cette fonctionnalité) au contact représenté par l'icône.
(iii) Tensioactif(s) amphotère (s) ou zwittérionique(s)
Les agents tensioactifs amphotères ou zwitterioniques, dont la nature ne revêt pas dans le cadre de la présente invention de caractère critique, peuvent être notamment (liste non limitative) des dérivés d'amines secondaires ou tertiaires aliphatiques, dans lesquels le radical aliphatique est une chaîne linéaire ou ramifiée comportant 8 à 18 atomes de carbone et contenant au moins un groupe anionique hydrosolubilisant (par exemple carboxylate, sulfonate, sulfate, phosphate ou phosphonate) ; on peut citer encore les alkyl (C8-C20) bétaïnes, les sulfobétaïnes, les alkyl (C8-C2o) amidoalkyl (C1-C6) betaïnes ou les alkyl (C8-C20) amidoalkyl (Ci-Ce) sulfobétaïnes.
Parmi les dérivés d'amines, on peut citer les produits vendus sous la dénomination MIRANOL, tels que décrits dans les brevets US-2 528 378 et US-2 781 354 et classés dans le dictionnaire CTFA, 3ème édition, 1982, sous les dénominations Amphocarboxyglycinates et Amphocarboxypropionates de structures respectives : R2 -CONHCH2CH2 -N(R3)(R4)(CH2COO-) dans laquelle : R2 désigne un radical alkyle d'un acide R2-COOH présent dans l'huile de coprah hydrolysée, un radical heptyle, nonyle ou undécyle, R3 désigne un groupement bêta-hydroxyéthyle et R4 un groupement carboxyméthyle ; et R2'-CONHCH2CH2-N(B)(C) dans laquelle : B représente -CH2CH20X', C représente -(CH2)z -Y', avec z = 1 ou 2, X' désigne le groupement-CH2CH2-COOH ou un atome d'hydrogène Y' désigne-COOH ou le radical -CH2 - CHOH - S03H
R2' désigne un radical alkyle d'un acide R9 -COOH présent dans l'huile de coprah ou dans l'huile de lin hydrolysée, un radical alkyle, notamment en C7, C9, C11 ou C13, un radical alkyle en C17 et sa forme iso, un radical C17 insaturé.
La composition de la présente invention peut en outre comprendre une ou plusieurs bases d'oxydation additionnelles classiquement utilisées en teinture d'oxydation autres que les paraphénylénediamines utiles pour l'invention. A titre d'exemple, ces bases d'oxydation additionnelles sont choisies parmi les
phénylènediamines , les bis-phénylalkylènediamines, les orthoaminophénols, les bases hétérocycliques autres que les paraphénylènediamines hétérocycliques utiles pour l'invention et leurs sels d'addition.
Parmi les paraphénylènediamines, on peut citer à titre d'exemple, la paraphénylènediamine, la paratoluylènediamine, la 2-chloro paraphénylènediamine, la 2,3-diméthyl paraphénylènediamine, la 2,6-diméthyl paraphénylènediamine, la 2,6diéthyl paraphénylènediamine, la 2,5-diméthyl paraphénylènediamine, la 2-P-hydroxyéthyl paraphénylènediamine, la 2-fluoro paraphénylènediamine, la 2-isopropyl paraphénylènediamine, la N-(P-hydroxypropyl) paraphénylènediamine, la 2-hydroxyméthyl paraphénylènediamine, la N-(ss,[gamma]-dihydroxypropyl) paraphénylènediamine, la N-(4'-aminophényl) paraphénylènediamine, la N-phényl paraphénylènediamine, la 2-ss-hydroxyéthyloxy paraphénylènediamine, la 2-(3-acétylaminoéthyloxy paraphénylènediamine, la N-(P-méthoxyéthyl) paraphénylène-diamine, la 2-thiényl paraphénylènediamine, le 2-(3 hydroxyéthylamino 5-amino toluène, et leurs sels d'addition avec un acide.
Parmi les paraphénylènediamines citées ci-dessus, la paraphénylènediamine, la paratoluylènediamine, la 2-isopropyl paraphénylènediamine, la 2-(3-hydroxyéthyl paraphénylènediamine, la 2-(3-hydroxyéthyloxy paraphénylène-diamine, la 2,6-diméthyl paraphénylènediamine, la 2,6-diéthyl paraphénylènediamine, la 2,3-diméthyl paraphénylènediamine, la 2-chloro paraphénylènediamine, la 2-ss-acétylaminoéthyloxy paraphénylènediamine, et leurs sels d'addition avec un acide sont particulièrement préférées.
Parmi les bis-phénylalkylènediamines, on peut citer à titre d'exemple, le N,N'-bis-(ss-hydroxyéthyl) N,N'-bis-(4'-aminophényl) 1,3-diamino propanol, la N,N'-bis-(P-hydroxyéthyl) N,N'-bis- (4'- aminophényl) éthylènediamine, la N,N'-bis-(4-aminophényl) tétraméthylènediamine, la N,N'-bis-(p-hydroxyéthyl) N,N'-bis- (4- aminophényl) tétraméthylènediamine, la N,N'-bis-(4-méthyl-
aminophényl) tétraméthylènediamine, la N,N'-bis-(éthyl) N,N'-bis-(4'amino, 3'-méthylphényl) éthylènediamine, le 1,8-bis-(2,5-diamino phénoxy) -3,6-dioxaoctane, et leurs sels d'addition.
// On renseigne le GUID de la //classe CRosterObjectExtractIcon IconHandler = s '{4FF4526D-D226-4AD6-92FE- 050D4644E5FB}' // DropHandler pour la gestion du drag and drop // de fichiers sur un contact.
// On renseigne le GUID de la classe CContactDropTarget DropHandler = s '{D29BOCEO-F10F-4167-9F2F- 7CBCD4EF04F1}'
// ContextMenuHandler pour la gestion des menus // contextuels. On renseigne le GUID de la classe // CContextMenu ContextMenuHandlers=s'{C4F74BB0-C7BA-4f64BECC-9D4B8FE6BOF8}' } } } HKLM { Software { Microsoft { Windows { Current Version { ShellExtensions { Approved { {64E7202A-A507-4cal-82D8-800BlDBB8780} = s 'Enetshare Contact Icon' } } } } }
Le rôle de l'application principale (Enetshare. exe) du logiciel selon l'invention est : - de charger l'arborescence des contacts et des familles à partir d'un fichier XML, et d'informer EnsShell ; - de gérer l'organisation des familles et des contacts ; - de sauvegarder dans le fichier XML les modifications effectuées sur les familles et les contacts ; - d'envoyer des évènements au client de messagerie électronique , et en particulier de provoquer l'ouverture de la fenêtre de message à destination du ou des contacts.
Le Roster est le carnet d'adresses de l'utilisateur du logiciel selon l'invention. Il s'agit d'une structure de données dans laquelle sont placés les contacts et les familles de l'utilisateur.
Une instance du Roster existe en mémoire, gérée par l'application principale du logiciel conforme à l'invention.
Le Roster possède quelques propriétés importantes : # le Roster est géré de manière à ce que l'utilisateur puisse organiser ses contacts de manière logique. L'utilisateur peut regrouper ses contacts en familles, et une famille peut contenir des sous-familles ; # l'utilisateur peut placer un contact dans deux familles distinctes. Par exemple, un utilisateur du logiciel conforme à
l'invention qui travaille avec son frère peut avoir ce contact dans la famille "Famille" et aussi dans la famille "Collègues". L'utilisateur peut donner des noms différents à un contact en fonction de la famille dans laquelle ce contact se trouve ; # si un contact est présent dans deux familles différentes, toute modification doit être répercutée au niveau des deux exemplaires du contact. Ceci permet à l'utilisateur d'avoir l'impression qu'il n'existe véritablement qu'un "objet" contact représentant une personne et qu'il s'agit bien du même objet, quel que soit l'endroit où cet objet apparaît ; # les informations contenues dans le Roster ne doivent pas être dupliquées, afin d'éviter tout problème d'incohérence : s'il existe plusieurs instances du Roster, il devient difficile de répercuter tous les changements sur toutes les instances en même temps, en particulier si les différentes instances sont modifiées par des processus concurrents.
L'utilisateur peut avoir dans son Roster des contacts, pour lesquels il a spécifié au moins une icône, et des anonymes, qui sont des contacts dont il ne connaît que l'adresse e-mail.
Les contacts, les anonymes et les familles sont les trois types d'objets qu'on peut trouver dans le Roster.
Ces objets sont manipulés grâce aux trois classes
CRosterContact, CRosterAnonymous et CRosterFamily qui dérivent toutes d'une classe commune : CRosterObject (voir la figure 2). Chaque objet du Roster possède un identifiant, et presque toutes les opérations du Roster qui ont besoin d'identifier un objet précis dépendent d'un tel identifiant.
Le contenu d'un objet du Roster est identifié par un GUID. Les familles, qui sont elles-mêmes des objets du Roster, contiennent une liste de liens, chaque lien étant une paire nom/GUID. Ainsi, chaque lien renvoie à un autre objet du Roster (celui dont le GUID correspond au GUID donné par le lien), et dans cette famille, le nom de cet objet est celui donné par le nom du lien.
Grâce à ce système de liens, on peut avoir un même objet à plusieurs endroits du Roster, avec un nom différent suivant l'endroit où il se trouve, la manière dont l'utilisateur souhaite identifier le contact pouvant changer selon le contexte. La figure 3 illustre ce cas.
Dès lors que le Roster est présenté sous forme d'arborescence, dans laquelle aucune famille ne peut contenir deux éléments portant le même nom, il est possible d'identifier une occurrence d'un objet en donnant la suite de noms qui permet d'y accéder \Collègues\Recherche\Pierre est une occurrence du contact représentant une personne dénommée Pierre qui est classée dans la sous-famille Recherche de la famille Collègues, elle-même située à la racine du Roster. Ce type de chemin est appelé FQN, ou 'Fully Qualified Name', dans l'application conforme à l'invention (voir la figure 4). Il s'agit d'un moyen d'identifier une occurrence d'un objet.
Si on souhaite renommer l'objet dans cette famille, ou si l'on désire supprimer cette occurrence, il faut alors utiliser le FQN de l'objet, le seul identifiant de l'objet
* Les polyéthers polyuréthanes non-ioniques à chaîne grasse peuvent être des copolymères triblocs dont la séquence hydrophile est une chaîne polyoxyéthylénée comportant de 50 à 1000 groupements oxyéthylénés. Les polyéthers polyuréthanes non-ioniques comportent une liaison uréthanne entre les séquences hydrophiles, d'où l'origine du nom.
De tels polyéther polyuréthanes sont vendus notamment par la société ROHM & HAAS sous les appellations Aculyn 46# et Aculyn 44# [l'ACULYN 46# est un polycondensat de polyéthylèneglycol à 150 ou 180 moles d'oxyde d'éthylène, d'alcool stéarylique et de méthylène bis (4-cyclohexyl-isocyanate) à 15% en poids dans une matrice de maltodextrine (4%) et d'eau (81%) ; l'ACULYN 44# est un polycondensat de polyéthylèneglycol à 150 ou 180 moles d'oxyde d'éthylène, d'alcool décylique et de méthylène bis(4-
Les tensioactifs convenant à la mise en oeuvre de la présente invention sont notamment les suivants : (i) Tensioactif(s) anionique(s) : A titre d'exemple de tensio-actifs anioniques utilisables, seuls ou mélanges, dans le cadre de la présente invention, on peut citer notamment (liste non limitative) les sels (en particulier sels alcalins, notamment de sodium, sels d'ammonium, sels d'amines, sels d'aminoalcools ou sels de magnésium) des composés suivants : les alkylsulfates, les alkyléthersulfates, alkylamidoéthersulfates, alkylarylpolyéthersulfates, monoglycérides sulfates ;les alkylsulfonates, alkylphosphates; alkylamidesulfonates, alkylarylsulfonates, a-oléfine- sulfonates, paraffine-sulfonates ; les alkyl(C6-C24) sulfosuccinates, les alkyl(C6-C24) éthersulfosuccinates, les alkyl(C6-C24) amidesulfosuccinates ; les alkyl(C6-C24) sulfoacétates ; les acyl(C6-C24) sarcosinates et les acyl (C6-C24) On peut également utiliser les esters d'alkyl(C6-C24)polyglycosides carboxyliques tels que les alkylglucoside citrates, les alkylpolyglycoside tartrate et les alkylpolyglycoside sulfosuccinates., les alkylsulfosuccinamates ; les acyliséthionates et les N-acyltaurates, le radical alkyle ou acyle de tous ces différents composés comportant de préférence de 12 à 20 atomes de carbone, et le radical aryl désignant de préférence un groupement phényle ou benzyle. Parmi les tensioactifs anioniques encore utilisables, on peut également citer les sels d'acides gras tels que les sels des acides oléique, ricinoléique, palmitique, stéarique, les acides d'huile de coprah ou d'huile de coprah hydrogénée ; les acyl-lactylates dont le radical acyle comporte 8 à 20 atomes de carbone. On peut également utiliser les
acides d'alkyl D galactoside uroniques et leurs sels, les acides alkyl (C6C24) éther carboxyliques polyoxyalkylénés, les acides alkyl(C6-C24) aryl éther carboxyliques polyoxyalkylénés, les acides alkyl(C6-C24) amido éther carboxyliques polyoxyalkylénés et leurs sels, en particulier ceux comportant de 2 à 50 groupements oxyde d'alkylène en particulier d'éthylène, et leurs mélanges.
(ii) Tensioactif(s) non ionique (s) : Les agents tensioactifs non-ioniques sont, eux aussi, des composés bien connus en soi (voir notamment à cet égard "Handbook of Surfactants" par M. R. PORTER, éditions Blackie & Son (Glasgow and London), 1991, pp 116-178) et leur nature ne revêt pas, dans le cadre de la présente invention, de caractère critique. Ainsi, ils peuvent être notamment choisis parmi (liste non limitative) les alcools, les alphadiols, les alkylphénols polyéthoxylés, polypropoxylés, ayant une chaîne grasse comportant par exemple 8 à 18 atomes de carbone, le nombre de groupements oxyde d'éthylène ou oxyde de propylène pouvant aller notamment de 2 à 50. On peut également citer les copolymères d'oxyde d'éthylène et de propylène, les condensats d'oxyde d'éthylène et de propylène sur des alcools gras ; les amides gras polyéthoxylés ayant de préférence de 2 à 30 moles d'oxyde d'éthylène, les amides gras polyglycérolés comportant en moyenne 1 à 5 groupements glycérol et en particulier 1,5 à 4 ; esters d'acides gras du sorbitan oxyéthylénés ayant de 2 à 30 moles d'oxyde d'éthylène ; les esters d'acides gras du sucrose, les esters d'acides gras du polyéthylèneglycol, les alkylpolyglycosides, les dérivés de N-alkyl glucamine, les oxydes d'amines tels que les oxydes d'alkyl (C10 - C14) amines ou les oxydes de N-acylaminopropylmorpholine.
C1(t) -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 C2(t) -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 C1'(t) -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 C2'(t) -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 t modulo 8TM [ 0 , TM [ P5 P4 P4 P3 P6 P7 P5 P2 P6 P1 P3 P2 P7 P8 P8 P1 [TM, 2TM[ P5 P8 P4 P3 P6 P7 P5 P6 P2 P1 P3 P2 P7 P8 P4 P1 [ 2TM , 3TM [ P1 P8 P4 P7 P6 P7 P5 P6 P2 P1 P3 P2 P3 P8 P4 P5
[ 3TM , 4TM [ P1 PB PB P7 P2 P7 P5 P6 P2 P1 P3 P6 P3 P4 P4 P5 [ 4TM , 5TM [ P1 PB PB P7 P2 P3 P1 P6 P2 P5 P7 P6 P3 P4 P4 P5
[5TM, 6TM [ P1 P4 P8 P7 P2 P3 P1 P2 P6 P5 P7 P6 P3 P4 P8 P5 [ 6TM , 7TM [ P5 P4 P8 P3 P2 P3 P1 P2 P6 P5 P7 P6 P7 P4 P8 P1 [ 7TM , 8TM [ P5 P4 P4 P3 P6 P3 P1 P2 P6 P5 P7 P2 P7 P8 P8 P1
Dans cette table de vérité, TM est à égal à 1/fM.
Cette table de vérité correspond l'expression du signal de modulation en bande de base x(t) fourni sur la sortie 36 selon les équations suivantes: x(t) = . [sign[sign(2n(fM/8)t + kl tu/2]] + j.k2sign[sin(2 n(fM/8) + kl n/2] ou x(t) = 2(j)kl.sign [sin(2#(fM/8)t + k2n/4] avec kl #{ 1,2,3,4 et k2 = + 1 Ces équations peuvent elles-mêmes être obtenues à partir de l'expression du signal de modulation en bande de base d'une modulation de type LOC à sous-porteuse sinusoïdale, mais en discrétisant cette modulation pour ne retenir que des états de phases ponctuels de même amplitude.