Delen via


Uitgebreide lijnfuncties

Uitgebreide regelservices (of apparaatspecifieke regelservices) omvatten alle door de serviceprovider gedefinieerde extensies voor de API. De API definieert een mechanisme waarmee leveranciers van serviceproviders TAPI kunnen uitbreiden met behulp van apparaatspecifieke extensies. De API definieert alleen het uitbreidingsmechanisme en biedt hierdoor toegang tot apparaatspecifieke extensies, maar de API definieert hun gedrag niet. Gedrag wordt volledig gedefinieerd door de serviceprovider.

TAPI bestaat uit scalaire en bitvlagconstante definities, gegevensstructuren, functies en berichten. Procedures worden gedefinieerd waarmee een leverancier de meeste van deze procedures als volgt kan uitbreiden.

Voor uitbreidbare scalaire gegevensconstanten kan een serviceprovider nieuwe waarden definiƫren in een opgegeven bereik. Omdat de meeste gegevensconstanten DWORD-zijn, is meestal het bereik 0x00000000 tot 0x7FFFFFFF gereserveerd voor algemene toekomstige extensies, terwijl 0x80000000 via 0xFFFFFFFF beschikbaar zijn voor leverancierspecifieke extensies. De veronderstelling is dat een leverancier waarden definieert die natuurlijke uitbreidingen zijn van de gegevenstypen die door de API zijn gedefinieerd.

Voor uitbreidbare bitvlaggegevensconstanten kan een leverancier van een serviceprovider nieuwe waarden definiƫren voor opgegeven bits. Omdat de meeste bitvlagconstanten DWORD-s, zijn doorgaans een specifiek aantal lagere bits gereserveerd voor algemene extensies, terwijl de resterende bovenste bits beschikbaar zijn voor leverancierspecifieke extensies. Veelvoorkomende bitvlagmen worden toegewezen vanuit bit nul omhoog; leverancierspecifieke extensies moeten worden toegewezen vanaf bit 31 offline. Dit biedt maximale flexibiliteit bij het toewijzen van bitposities aan algemene extensies versus leverancierspecifieke extensies. Er wordt verwacht dat een leverancier nieuwe waarden definieert die natuurlijke uitbreidingen zijn van de bitvlagken die zijn gedefinieerd door de API.

Uitbreidbare gegevensstructuren hebben een veld met verschillende grootten dat is gereserveerd voor apparaatspecifiek gebruik. De serviceprovider bepaalt de hoeveelheid informatie en de interpretatie. Een leverancier die een apparaatspecifiek veld definieert, moet deze natuurlijke uitbreidingen maken van de oorspronkelijke gegevensstructuur die door de API is gedefinieerd.

Twee functies, lineDevSpecific en lineDevSpecificFeature, en twee gerelateerde berichten, LINE_DEVSPECIFIC en LINE_DEVSPECIFICFEATURE, bieden een leverancierspecifiek uitbreidingsmechanisme. Met de functie lineDevSpecific en het bijbehorende LINE_DEVSPECIFIC bericht kan een toepassing toegang krijgen tot apparaatspecifieke regel-, adres- of oproepfuncties die niet beschikbaar zijn bij de basic- of aanvullende telefonieservices. Het parameterprofiel van de lineDevSpecific functie is algemeen in dat weinig interpretatie van de parameters wordt gemaakt door de API. De interpretatie van de parameters wordt gedefinieerd door de serviceprovider en moet worden begrepen door een toepassing die deze gebruikt. De parameters worden eenvoudigweg doorgegeven via TAPI van de toepassing aan de serviceprovider. Een toepassing die afhankelijk is van apparaatspecifieke extensies werkt doorgaans niet met andere serviceproviders; Toepassingen die naar de Basic- en Aanvullende telefoniediensten worden geschreven, werken echter samen met de uitgebreide serviceprovider.

Voor het gemak is er ook een meer gespecialiseerde escape-functie beschikbaar. Het is vergelijkbaar met lineDevSpecific, maar plaatst interpretatie op sommige parameters. Deze meer gespecialiseerde functie is lineDevSpecificFeature, een apparaatspecifieke escape-functie om het verzenden van schakelfuncties naar de switch toe te staan. Het bericht LINE_DEVSPECIFICFEATURE is het apparaatspecifieke bericht dat naar de toepassing wordt verzonden als indicatie van functies die naar de switch worden verzonden. Met deze functie en het bijbehorende bericht kan een toepassing een knop emuleren op de functietelefoon van de lijn. Aangezien functietelefoons en de betekenis van hun knoppen leverancierspecifiek zijn, is functie-aanroep met behulp van lineDevSpecificFeature- ook leverancierspecifiek.

Zoals eerder vermeld, is er geen centraal register voor fabrikant-id's. In plaats daarvan wordt er een unieke id-generator (EXTIDGEN) beschikbaar gesteld.