Funkcje rozszerzonej linii
Rozszerzone usługi liniowe (lub usługi liniowe specyficzne dla urządzenia) obejmują wszystkie rozszerzenia zdefiniowane przez dostawcę usług do interfejsu API. Interfejs API definiuje mechanizm, który umożliwia dostawcom usług rozszerzenie interfejsu TAPI przy użyciu rozszerzeń specyficznych dla urządzenia. Interfejs API definiuje tylko mechanizm rozszerzenia, a dzięki temu zapewnia dostęp do rozszerzeń specyficznych dla urządzenia, ale interfejs API nie definiuje ich zachowania. Zachowanie jest całkowicie zdefiniowane przez dostawcę usług.
Interfejs TAPI składa się z definicji stałych skalarnych i flag bitowych, struktur danych, funkcji i komunikatów. Procedury są zdefiniowane, aby umożliwić dostawcy rozszerzenie większości z nich w następujący sposób.
W przypadku rozszerzalnych stałych danych skalarnych dostawca usług może zdefiniować nowe wartości w określonym zakresie. Ponieważ większość stałych danych jest DWORDs, zazwyczaj zakres 0x00000000 za pośrednictwem 0x7FFFFFFF jest zarezerwowany dla typowych przyszłych rozszerzeń, podczas gdy 0x80000000 za pośrednictwem 0xFFFFFFFF są dostępne dla rozszerzeń specyficznych dla dostawcy. Zakłada się, że dostawca definiuje wartości, które są naturalnymi rozszerzeniami typów danych zdefiniowanych przez interfejs API.
W przypadku rozszerzalnych stałych danych flagi bitowej dostawca usług może zdefiniować nowe wartości dla określonych bitów. Ponieważ większość stałych flag bitowych jest DWORDs, zazwyczaj określona liczba dolnych bitów jest zarezerwowana dla typowych rozszerzeń, podczas gdy pozostałe górne bity są dostępne dla rozszerzeń specyficznych dla dostawcy. Typowe flagi bitów są przypisywane z bitu zero w górę; Rozszerzenia specyficzne dla dostawcy powinny być przypisane z bitu 31 w dół. Zapewnia to maksymalną elastyczność przypisywania pozycji bitowych do typowych rozszerzeń w porównaniu z rozszerzeniami specyficznymi dla dostawcy. Oczekuje się, że dostawca zdefiniuje nowe wartości, które są naturalnymi rozszerzeniami flag bitowych zdefiniowanych przez interfejs API.
Rozszerzalne struktury danych mają niezmiennie rozmiar pola zarezerwowanego do użytku specyficznego dla urządzenia. Będąc niezmiennie wielkością, dostawca usług decyduje o ilości informacji i interpretacji. Dostawca, który definiuje pole specyficzne dla urządzenia, oczekuje się, że te naturalne rozszerzenia oryginalnej struktury danych zdefiniowanej przez interfejs API.
Dwie funkcje, lineDevSpecific i lineDevSpecificFeaturei dwa powiązane komunikaty, LINE_DEVSPECIFIC i LINE_DEVSPECIFICFEATURE, zapewniają mechanizm rozszerzenia specyficznego dla dostawcy. Funkcja lineDevSpecific i skojarzony komunikat LINE_DEVSPECIFIC umożliwiają aplikacji dostęp do funkcji telefonii specyficznej dla urządzenia, adresu lub wywołania, które są niedostępne w usługach telefonii podstawowej lub dodatkowej. Profil parametrów funkcji lineDevSpecific jest ogólny w tej małej interpretacji parametrów jest wykonany przez interfejs API. Interpretacja parametrów jest definiowana przez dostawcę usług i musi być rozumiana przez aplikację, która ich używa. Parametry są po prostu przekazywane przez interfejs TAPI z aplikacji do dostawcy usług. Aplikacja, która opiera się na rozszerzeniach specyficznych dla urządzenia, zwykle nie będzie działać z innymi dostawcami usług; jednak aplikacje napisane w usługach telefonii podstawowej i dodatkowej będą współpracować z rozszerzonym dostawcą usług.
Dla wygody zapewniana jest również bardziej wyspecjalizowana funkcja ucieczki. Jest on podobny do lineDevSpecific, ale umieszcza interpretację niektórych parametrów. Ta bardziej wyspecjalizowana funkcja jest lineDevSpecificFeature, funkcji ucieczki specyficznej dla urządzenia, aby umożliwić wysyłanie funkcji przełącznika do przełącznika. Komunikat LINE_DEVSPECIFICFEATURE to komunikat specyficzny dla urządzenia wysyłany do aplikacji jako wskazanie funkcji wysyłanych do przełącznika. Ta funkcja i skojarzony komunikat umożliwiają aplikacji emulowanie naciśnięcia przycisku na telefonie funkcji wiersza. Ponieważ telefony funkcji i znaczenie przycisków są specyficzne dla dostawcy, wywołanie funkcji przy użyciu lineDevSpecificFeature jest również specyficzny dla dostawcy.
Jak wspomniano wcześniej, nie ma centralnego rejestru dla identyfikatorów producentów. Zamiast tego dostępny jest unikatowy generator identyfikatorów (EXTIDGEN).