Funções de linha estendidas
Os serviços de linha estendida (ou serviços de linha específicos do dispositivo) incluem todas as extensões definidas pelo provedor de serviços para a API. A API define um mecanismo que permite que os fornecedores de provedores de serviços estendam o TAPI usando extensões específicas do dispositivo. A API define apenas o mecanismo de extensão e, ao fazer isso, fornece acesso a extensões específicas do dispositivo, mas a API não define seu comportamento. O comportamento é completamente definido pelo provedor de serviços.
O TAPI consiste em definições de constantes escalares e de sinalizador de bits, estruturas de dados, funções e mensagens. São definidos procedimentos que permitem que um fornecedor estenda a maioria deles da seguinte maneira.
Para constantes de dados escalares extensíveis, um fornecedor de provedor de serviços pode definir novos valores em um intervalo especificado. Como a maioria das constantes de dados são DWORDs, normalmente o intervalo 0x00000000 até 0x7FFFFFFF é reservado para extensões futuras comuns, enquanto 0x80000000 por meio de 0xFFFFFFFF estão disponíveis para extensões específicas do fornecedor. A suposição é que um fornecedor definiria valores que são extensões naturais dos tipos de dados definidos pela API.
Para constantes de dados extensíveis de sinalizador de bits, um fornecedor de provedor de serviços pode definir novos valores para bits especificados. Como a maioria das constantes de sinalizador de bits são DWORDs, normalmente um número específico dos bits inferiores são reservados para extensões comuns, enquanto os bits superiores restantes estão disponíveis para extensões específicas do fornecedor. Sinalizadores de bits comuns são atribuídos do bit zero para cima; As extensões específicas do fornecedor devem ser atribuídas do bit 31 para baixo. Isso fornece flexibilidade máxima na atribuição de posições de bit a extensões comuns versus extensões específicas do fornecedor. Espera-se que um fornecedor defina novos valores que são extensões naturais dos sinalizadores de bits definidos pela API.
Estruturas de dados extensíveis têm um campo de tamanho variavelmente reservado para uso específico do dispositivo. Sendo dimensionado variavelmente, o provedor de serviços decide a quantidade de informações e a interpretação. Espera-se que um fornecedor que defina um campo específico do dispositivo torne essas extensões naturais da estrutura de dados original definidas pela API.
Duas funções, lineDevSpecific e lineDevSpecificFeature e duas mensagens relacionadas, LINE_DEVSPECIFIC e LINE_DEVSPECIFICFEATURE, fornecem um mecanismo de extensão específico do fornecedor. A função lineDevSpecific e a mensagem de LINE_DEVSPECIFIC associada permitem que um aplicativo acesse recursos de linha, endereço ou chamada específicos do dispositivo que não estão disponíveis com os serviços básicos ou suplementares de telefonia. O perfil de parâmetro da função lineDevSpecific é genérico porque a pequena interpretação dos parâmetros é feita pela API. A interpretação dos parâmetros é definida pelo provedor de serviços e deve ser compreendida por um aplicativo que os usa. Os parâmetros são simplesmente passados por TAPI do aplicativo para o provedor de serviços. Um aplicativo que depende de extensões específicas do dispositivo geralmente não funcionará com outros provedores de serviços; no entanto, os aplicativos gravados nos serviços básico e suplementar de telefonia funcionarão com o provedor de serviços estendido.
Para sua conveniência, uma função de escape mais especializada também é fornecida. É semelhante a lineDevSpecific, mas coloca a interpretação em alguns dos parâmetros. Essa função mais especializada é lineDevSpecificFeature, uma função de escape específica do dispositivo para permitir o envio de recursos de comutador para a opção. A mensagem LINE_DEVSPECIFICFEATURE é a mensagem específica do dispositivo enviada ao aplicativo como uma indicação dos recursos enviados para a opção. Essa função e sua mensagem associada permitem que um aplicativo emule pressionamentos de botão no telefone de recursos da linha. Como os feature phones e os significados de seus botões são específicos do fornecedor, a invocação de recursos usando lineDevSpecificFeature também é específica do fornecedor.
Conforme mencionado anteriormente, não há registro central para identificadores de fabricante. Em vez disso, um gerador de identificador exclusivo (EXTIDGEN) é disponibilizado.