BRPI1009309B1 - Metodo para comunicaqao entre um dispositivo acessorio e um aplicativo em execuqao em um dispositivo de computaqao movel, dispositivo acessorio e dispositivo de computaqao movel - Google Patents

Metodo para comunicaqao entre um dispositivo acessorio e um aplicativo em execuqao em um dispositivo de computaqao movel, dispositivo acessorio e dispositivo de computaqao movel Download PDF

Info

Publication number
BRPI1009309B1
BRPI1009309B1 BRPI1009309-5A BRPI1009309A BRPI1009309B1 BR PI1009309 B1 BRPI1009309 B1 BR PI1009309B1 BR PI1009309 A BRPI1009309 A BR PI1009309A BR PI1009309 B1 BRPI1009309 B1 BR PI1009309B1
Authority
BR
Brazil
Prior art keywords
accessory
application
mobile computing
computing device
protocol
Prior art date
Application number
BRPI1009309-5A
Other languages
English (en)
Inventor
Paul Holden
Nitin Ganatra
Mitchell Adler
Emily Clark Schubert
Jesse Lee Dorogusker
Shyam S. Toprani
Peter T. Langenfeld
Lawrence G. Bolton
John M. Ananny
Scott Krueger
Original Assignee
Apple Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc. filed Critical Apple Inc.
Publication of BRPI1009309A2 publication Critical patent/BRPI1009309A2/pt
Publication of BRPI1009309B1 publication Critical patent/BRPI1009309B1/pt

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • H04L29/06
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/02Constructional features of telephone sets
    • H04M1/0202Portable telephone sets, e.g. cordless phones, mobile phones or bar type handsets
    • H04M1/0254Portable telephone sets, e.g. cordless phones, mobile phones or bar type handsets comprising one or a plurality of mechanically detachable modules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72409User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories
    • H04M1/72412User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by interfacing with external accessories using two-way short-range wireless interfaces
    • H04M1/72527

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Telephone Function (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)
  • Telephonic Communication Services (AREA)
  • Studio Devices (AREA)

Abstract

comunicação de acessório e dispositivo de computação móvel usando um protocolo de comunicação de aplicativo. as modalidades da presente invenção fornecem várias técnicas para comunicação entre um dispositivo de computação móvel e um acessório. um protocolo de acessório que é genérico para o dispositivo de computação móvel pode ser usado para alguma comunicação. um aplicativo em execução no dispositivo de computação móvel pode ser comunicar com o acessório usando um protocolo de comunicação de aplicativo. em algumas modalidades, o protocolo de comunicação de aplicativo pode ser diferente do protocolo de comunicação de acessório. em outras modalidade, o protocolo de aplicativo pode ser reconhecido apenas pelo aplicativo e pelo acessório . em algumas modalidade, mensagens se conformando a um protocolo de aplicativo e o acessório pelo empacotamento das mensagens se conformando ao protocolo de comunicação de acessório.

Description

ANTECEDENTES
[001] A presente invenção refere-se geralmente a uma comunicação entre um acessório e um dispositivo de computação móvel e, em particular, ao uso de protocolos específicos de acessório e/ou de aplicativo para essas comunicações.
[002] Os dispositivos de computação móveis se tornaram ubíquos. Várias circuitos criaram dispositivos de computação móveis, tais como o iPhone™, iPod Touch™, vários dispositivos Blackberry®, e smartphones compatíveis com a plataforma Android™ do Google, para denominar uns poucos. Os dispositivos de computação móveis frequentemente incluem navegadores da web, processadores de texto, aplicativos de e-mail, mapas, serviços de telefonia, jogos, aplicativos de áudio, aplicativos de vídeo, etc. Mais ainda, os acessórios também foram criados para uso com dispositivos de computação móveis. Esses acessórios podem ser usados para o controle de recursos do dispositivo de computação móvel ou usados pelo dispositivo de computação móvel para interação com usuários e/ou com o ambiente.
BREVE SUMÁRIO
[003] De acordo com várias modalidades, um acessório pode se comunicar com um aplicativo em execução em um dispositivo de computação móvel usando um protocolo de comunicação específico de acessório e/ou procedimentos de autenticação usando um protocolo de acessório definido pelo dispositivo de computação móvel. O acessório também pode comunicar uma informação indicando um ou mais protocolos de aplicativo que podem ser usados por um aplicativo em execução no dispositivo de computação móvel para comunicação com o acessório. Em algumas modalidades, um protocolo de aplicativo pode ser diferente do protocolo de acessório, enquanto em outras modalidades um protocolo de aplicativo pode ser o mesmo que o protocolo de acessório. Em algumas modalidades, um pacote de protocolo de aplicativo pode ser alojado em porções de um pacote de protocolo de acessório.
[004] Várias modalidades mostradas aqui descrevem métodos para a criação de sessões de comunicação entre acessórios e aplicativos. Algumas modalidades descrevem como um acessório provê uma informação apropriada para o dispositivo de computação móvel abrir uma sessão de comunicação usando um protocolo de aplicativo. Outras modalidades descrevem vários esquemas no dispositivo de computação móvel para a seleção de um protocolo de aplicativo, a abertura de fluxos de comunicação, a transferência (via download) de um aplicativo preferido, uma comunicação com um acessório, o alojamento de pacotes de protocolo de aplicativo em um pacote de protocolo de acessório, etc. Em algumas modalidades, um gerenciador de aplicativo em execução em um dispositivo de computação móvel pode ser usado para abstrair a comunicação entre um acessório e um aplicativo.
[005] A descrição detalhada a seguir, em conjunto com os desenhos associados, proverá um melhor entendimento da natureza e da vantagem das modalidades mostradas aqui.
BREVE DESCRIÇÃO DOS DESENHOS
[006] A figura 1A mostra um dispositivo de computação móvel acoplado a um dispositivo acessório de acordo com algumas modalidades da invenção.
[007] A figura 1B mostra um dispositivo acessório acoplado de forma sem fio a um dispositivo de computação móvel de acordo com algumas modalidades da invenção.
[008] A figura 2 mostra um diagrama de blocos de um dispositivo de computação móvel acoplado a um acessório de acordo com uma modalidade.
[009] A figura 3 é um diagrama de blocos que mostra vários módulos e processos em um dispositivo de computação móvel de acordo com algumas modalidades da invenção.
[0010] A figura 4 é um diagrama simplificado que ilustra adicionalmente uma comunicação entre um aplicativo e um acessório de acordo com algumas modalidades da invenção.
[0011] As figuras 5A a 5C ilustram um exemplo de empacotamento de uma mensagem de protocolo de aplicativo em um comando de protocolo de comunicação de acessório de acordo com algumas modalidades da invenção.
[0012] A figura 6 ilustra um percurso para comandos do protocolo de comunicação de acessório na modalidade da figura 4 de acordo com algumas modalidades da invenção.
[0013] A figura 7 é um fluxograma de um processo para a identificação de um acessório e um aplicativo compatível de acordo com algumas modalidades da invenção.
[0014] A figura 8 mostra uma lista de protocolo conectado e uma tabela de protocolo suportado usável para a associação de aplicativos e acessórios compatíveis de acordo com algumas modalidades da invenção.
[0015] A figura 9 ilustra uma técnica para a formulação de uma consulta usável para a localização de um aplicativo compatível para um acessório de acordo com algumas modalidades da invenção.
[0016] A figura 10 é um fluxograma de um processo que pode ser executado por um aplicativo para a iniciação de uma comunicação com um acessório de acordo com algumas modalidades da invenção.
[0017] A figura 11 ilustra um aplicativo em um dispositivo de computação móvel concorrentemente interagindo com dois acessórios diferentes de acordo com algumas modalidades da invenção.
[0018] A figura 12 ilustra dois aplicativos em um dispositivo de computação móvel concorrentemente interagindo com dois acessórios de acordo com algumas modalidades da invenção.
[0019] A figura 13 ilustra dois aplicativos em um dispositivo de computação móvel concorrentemente interagindo com o mesmo acessório de acordo com algumas modalidades da invenção.
[0020] A figura 14 ilustra o fluxo de dados entre um aplicativo, o gerenciador de aplicativo e a camada de transporte de hardware de um dispositivo de computação móvel de acordo com algumas modalidades da invenção.
[0021] A figura 15 é um fluxograma de um processo que pode ser executado por um gerenciador de aplicativo em um dispositivo de computação móvel de acordo com algumas modalidades da invenção.
[0022] A figura 16 é um outro fluxograma de um processo que pode ser executado por um gerenciador de aplicativo em um dispositivo de computação móvel de acordo com algumas modalidades da invenção.
[0023] A figura 17 é um fluxograma de um processo que pode ser executado por um acessório acoplado a um dispositivo de computação móvel para a abertura de uma comunicação com um acessório de acordo com algumas modalidades da invenção.
[0024] A figura 18 é um fluxograma de um processo que pode ser executado por um aplicativo em um dispositivo de computação móvel para a abertura de uma comunicação com um acessório de acordo com algumas modalidades da invenção.
DESCRIÇÃO DETALHADA
[0025] Várias modalidades da invenção mostrada aqui são dirigidas a vários aspectos de comunicação entre dispositivos acessórios e um dispositivo de computação móvel. Em algumas modalidades, um acessório pode se comunicar com um dispositivo de computação móvel usando um protocolo de comunicação de acessório. Um protocolo de comunicação de acessório pode especificar comandos de comunicação, enlaces de transporte, rotinas de autenticação, processos de identificação, jargões, estruturas de pacote, tipos de dados ou qualquer outro comando ou dados que possam ser usados para comunicação entre um dispositivo acessório e um dispositivo de computação móvel.
[0026] Um aplicativo em execução em um dispositivo de computação móvel também pode se comunicar com o acessório usando um protocolo de comunicação de aplicativo. Em algumas modalidades, um protocolo de comunicação de aplicativo pode especificar comandos de comunicação, estruturas de pacote, tipos de dados, jargões, formatos de mensagem, etc., para comunicação entre o aplicativo e o acessório. Em algumas modalidades, pelo menos alguns dos comandos de comunicação, das estruturas de pacote, dos tipos de dados, jargões, formatos de mensagem especificados pelo protocolo de comunicação de aplicativo podem ser diferentes daqueles especificados pelo protocolo de comunicação de acessório. Em outras modalidades, pelo menos alguns dos comandos de comunicação, das estruturas de pacote, dos tipos de dados, jargões, formatos de mensagem especificados pelo protocolo de comunicação de aplicativo podem ser os mesmos que aqueles especificados pelo protocolo de comunicação de acessório.
[0027] Em algumas modalidades, o protocolo de aplicativo pode usar o enlace de transporte especificado pelo protocolo de comunicação de acessório. Um protocolo de comunicação de aplicativo pode ser desenvolvido, por exemplo, pelo desenvolvedor do aplicativo e/ou do acessório. Em algumas modalidades, um protocolo de comunicação de aplicativo pode incluir comandos específicos do aplicativo e/ou do acessório, estruturas de dados, etc. Mais ainda, os termos "protocolo de comunicação de aplicativo" e "protocolo de aplicativo" podem ser usados de forma intercambiável. Os termos "protocolo de comunicação de acessório", "protocolo de comunicação de acessório", "protocolo de comunicação geral" e "protocolo geral" também podem ser usados de forma intercambiável.
[0028] A figura 1A mostra um dispositivo de computação móvel 102 acoplado a um dispositivo acessório 113. O cabo 111 é usado para acoplamento do dispositivo de computação móvel 102 ao dispositivo acessório 113. O cabo 111 pode incluir um conector 108 para conexão ao dispositivo de computação móvel 102 e o conector 110 pode se conectar ao dispositivo acessório 113. A figura 1B mostra o dispositivo acessório 113 conectado de forma sem fio ao dispositivo de computação móvel 102.
[0029] O dispositivo de computação móvel mostrado nas figuras 1A e 1B pode ser qualquer tipo de dispositivo de computação móvel e/ou de comunicação sem limitação. Por exemplo, um iPod Touch™, um iPhone™, um dispositivo compatível com Android e/ou um dispositivo Blackberry podem ser usados. Mais ainda, o dispositivo de computação móvel 102 pode prover uma capacidade de tocador de mídia, ligação em rede, navegação na web, e-mail, processamento de texto, armazenamento de dados, execução de aplicativo e/ou outras funções de computação ou de comunicação.
[0030] O acessório 113 pode ser qualquer dispositivo capaz de comunicação com o dispositivo de computação móvel 102, tais como, por exemplo, um sistema de alto-falante externo; um dispositivo de vídeo externo; um dispositivo de multimídia; um dispositivo eletrônico de consumidor; um instrumento de teste; uma aparelhagem doméstica (por exemplo, uma geladeira ou uma máquina de lavar louça); um equipamento para exercícios; um sistema de segurança; um sistema de automação doméstica ou de escritório; uma câmera; um dispositivo de entrada de usuário (por exemplo, teclado, mouse, controlador de jogos); um dispositivo de medição; um dispositivo médico (por exemplo, um monitor de glicose ou um monitor de insulina); um dispositivo de ponto de venda; um automóvel; um acessório para automóvel (por exemplo, um sistema estéreo para carro ou um sistema de navegação automotivo); um rádio (por exemplo, FM, AM e/ou por satélite); um console de entretenimento em um avião, ônibus, trem ou outro veículo de transporte de massa; etc. Qualquer tipo de dispositivo que pode ser usado em conjunto com um dispositivo de computação móvel pode ser usado como um dispositivo acessório.
[0031] A figura 2 mostra um diagrama de blocos de um dispositivo de computação móvel 200 (por exemplo, um dispositivo de computação móvel de implementação 102 da figura 1A ou 1B) acoplado com um acessório 202 (por exemplo, o acessório de implementação 113 da figura 1A ou 1B) de acordo com uma modalidade. O dispositivo de computação móvel 200 pode incluir um processador 230, um dispositivo de armazenamento 225, uma interface de usuário (UI) 235, uma interface de rede 236 e uma interface de entrada / saída (I/O) de acessório 205.
[0032] O processador 230, o qual pode ser implementado como um ou mais circuitos integrados (incluindo, por exemplo, um microprocessador ou microcontrolador convencional), pode controlar a operação do dispositivo de computação móvel 200. Por exemplo, em resposta a sinais de entrada de usuário providos pela interface de usuário 235, o processador 206 pode realizar várias tarefas, tais como a seleção e a execução de ativos de mídia que podem ser armazenados no dispositivo de armazenamento 225; acessar várias redes (por exemplo, uma rede de telefonia móvel, a Internet, uma rede de área local ou similar) para o envio e/ou a recuperação de dados usando a parte traseira 236; a execução de vários programas aplicativos (Apps) 226 residentes no dispositivo de armazenamento 225; e assim por diante. O processador 230 também pode gerenciar a comunicação com conversores ascendentes através da interface de I/O de acessório 205.
[0033] A interface de usuário 235 pode incluir controles de entrada, tais como um touch pad, uma tela de toque, uma roda de rolagem, uma roda de clique, um disco, um botão, um teclado, um microfone, etc., bem como dispositivos de saída, tais como uma tela de exibição, luzes indicadoras, alto-falantes, tomadas de fone de ouvido, etc., em conjunto com uma eletrônica de suporte (por exemplo, conversores de digital para analógico ou de analógico para digital, processadores de sinal ou similares). Um usuário pode operar os vários controles de entrada de interface de usuário 235 para invocar a funcionalidade de um dispositivo de computação móvel 200 e também pode ver e/ou ouvir uma saída do dispositivo de computação móvel 200 através da interface de usuário 235.
[0034] O dispositivo de armazenamento 225 pode ser implementado, por exemplo, usando-se um disco, uma memória flash ou qualquer outro meio de armazenamento não volátil. O dispositivo de armazenamento 225 pode armazenar programas aplicativos 226 que são executáveis pelo processador 230, programas de sistema ou outro código de programa (não mostrado explicitamente) e vários dados, tal como uma tabela de protocolo 227 que pode ser usada no gerenciamento de uma comunicação com vários acessórios, conforme descrito abaixo. Em algumas modalidades, o dispositivo de armazenamento 225 também pode armazenar ativos de mídia, tais como áudio, vídeo, imagens fixas, ou similares, que podem ser reexecutadas pelo dispositivo de computação móvel 200, juntamente com metadados descrevendo os ativos de mídia (por exemplo, nome de ativo, artista, título, gênero, etc.), listas de reexecução (listas de ativos que podem ser tocados sequencialmente ou em ordem aleatória), e similares. O dispositivo de armazenamento 225 também pode armazenar qualquer outro tipo de informação, tal como uma informação sobre os contatos de um usuário (nomes, endereços, números de telefone, etc.); compromissos e eventos programados; notas; e/ou uma outra informação pessoal.
[0035] Os programas aplicativos (também referidos aqui como "aplicativos" ou "apps") 226 podem incluir qualquer programa executável pelo processador 230. Em algumas modalidades, certos aplicativos podem ser instalados no dispositivo de computação móvel 200 por seu fabricante, enquanto outros aplicativos podem ser instalados por um usuário. Os exemplos de programas aplicativos podem incluir programas de videogame programas de gerenciamento de informação pessoal, programas para se tocarem ativos de mídia e/ou navegação no banco de dados de ativo de mídia, programas para controle de uma interface de telefone para fazer e/ou receber chamadas, e assim por diante. Certos programas aplicativos 226 podem prover uma comunicação com e/ou um controle do acessório 202, e certos programas aplicativos 226 podem responder a sinais de controle ou outra entrada a partir do acessório 202; os exemplos são descritos abaixo.
[0036] A interface de rede 236 pode prover uma interface para uma ou mais redes de comunicação. Por exemplo, a interface de rede 236 pode incorporar um transceptor de frequência de rádio (RF) e componentes adequados para comunicação através de uma rede de comunicação móvel, tal como uma rede de telefonia móvel. Adicionalmente, ou ao invés disso, a interface de rede 236 pode incorporar uma conexão sem fio com a Internet (por exemplo, um transceptor de WiFi, um transceptor 3G ou similar), para uma rede de área pessoal (por exemplo, uma rede de Bluetooth), ou qualquer outra rede. Em ainda outras modalidades, uma conexão de rede com fio (por exemplo, uma Ethernet) pode ser provida. Em algumas modalidades, o mesmo hardware pode ser usado para suporte de conexões com múltiplas redes; assim, a interface de rede 236 pode incluir um circuito de analógico para digital e/ou de digital para analógico, componentes de processamento de banda base (por exemplo, codificadores - decodificadores, estimadores de canal e similares), moduladores, demoduladores, osciladores, amplificadores, transmissores, receptores, transceptores, antenas internas e/ou externas, e assim por diante. Em algumas modalidades, algumas operações associadas a uma conectividade de rede podem ser implementadas inteiramente ou em parte como programas executados no processador 230 (por exemplo, codificação, decodificação e/ou um outro processador no domínio digital), ou um processador de sinal digital dedicado pode ser provido.
[0037] A interface de I/O de acessório 205 pode incluir vários percursos de sinal configurados para portarem vários sinais entre o dispositivo de computação móvel 200 e o acessório 202. Em uma modalidade, o interface de I/O de acessório 205 inclui um conector de 30 pinos correspondente ao conector usado nos produtos iPod® e iPhone™ fabricados e vendidos pela Apple Inc.; outros conectores também podem ser usados. De forma alternativa ou adicional, a interface de I/O de acessório 205 pode incluir uma interface sem fio (por exemplo, Bluetooth ou similar).
[0038] Em algumas modalidades, o dispositivo de computação móvel 200 também pode usar a interface de I/O de acessório 205 para comunicação com um computador principal (não mostrado) que executa um programa de gerenciamento de ativo que pode prover mídia e/ou aplicativos para um dispositivo de computação móvel (por exemplo, iTunes® ou a loja de aplicativo da Microsoft). O programa de gerenciamento de ativo pode permitir que um usuário adicione ativos de mídia e/ou aplicativos ao dispositivo de computação móvel e/ou remova ativos de mídia do dispositivo de computação móvel 200. O usuário pode atualizar metadados associados aos ativos de mídia no dispositivo de computação móvel 200. Em algumas modalidades, o usuário também pode interagir com o programa de gerenciamento de ativo para a criação e a atualização de listas de reexecução e/ou aplicativos, bem como outros documentos. Em uma modalidade, o computador principal mantém um banco de dados mestre de ativos de mídia e/ou aplicativos que podem acessar outros bancos de dados, por exemplo, através da Internet (incluindo metadados associados e listas de reexecução), e o programa de gerenciamento de ativo sincroniza o banco de dados mestre com o banco de dados mantido no dispositivo de armazenamento 225 do dispositivo de computação móvel 200 automaticamente, sempre que o dispositivo de computação móvel 200 se conectar ao computador principal. Em outras modalidades, o dispositivo de computação móvel 200 pode usar a interface de rede 236 para comunicação com um computador principal e/ou diretamente com vários outros servidores para a aquisição de aplicativos, ativos de mídia e/ou outros dados.
[0039] O acessório 202 pode incluir um controlador 260, uma interface de usuário 255, uma interface de I/O de dispositivo de computação móvel 250, uma memória 265 e um hardware específico de acessório 275.
[0040] A interface de I/O de dispositivo de computação móvel 250 pode incluir vários percursos de sinal configurados para portarem vários sinais entre o acessório 202 e o dispositivo de computação móvel 200. Em uma modalidade, a interface de I/O de dispositivo de computação móvel 250 pode incluir um conector adaptado para combinar com o conector de 30 pinos usado em produtos iPod® e iPhone™ fabricados e vendidos pela Apple Inc., Outros conectores também podem ser usados; por exemplo, a interface de I/O de dispositivo de computação móvel 250 pode incluir um conector USB padrão ou FireWire, ou similar. De forma alternativa ou adicional, a interface de I/O de dispositivo de computação móvel 250 pode incluir uma interface sem fio (por exemplo, Bluetooth ou similar).
[0041] O controlador 260 pode incluir, por exemplo, um microprocessador ou um microcontrolador executando um código de programa para a realização de várias funções, tais como decodificação de áudio digital, processamento de áudio e/ou vídeo analógico ou digital, processamento de uma entrada de usuário, controle de funcionalidade de acessório e similares. O controlador 260 também pode gerenciar uma comunicação com um dispositivo de computação móvel através da interface de I/O de dispositivo de computação móvel 250.
[0042] A interface de usuário 255 pode incluir controles de entrada, tais como um touch pad, uma tela de toque, uma roda de rolagem, uma roda de clique, um disco, um botão, um teclado, um microfone, sondas, etc., bem como dispositivos de saída, tais como uma tela de exibição, luzes indicadores, alto-falantes, tomadas de fone de ouvido, etc., em conjunto com uma eletrônica de suporte (por exemplo, conversores de digital para analógico ou de analógico para digital, processadores de sinal ou similares). Um usuário pode operar os vários controles de entrada de interface de usuário 255 para invocar a funcionalidade de um acessório 202 e pode ver e/ou ouvir uma saída do acessório 202 através da interface de usuário 255. Além disso, em algumas modalidades, um usuário pode operar o dispositivo de computação móvel 200 (ou aplicativos em execução nele) através da interface de usuário de acessório 255.
[0043] A memória 265 pode ser implementada usando-se qualquer tipo de memória, disco ou outro meio de armazenamento que possa armazenar um código de programa para o controlador 260 e/ou dados. Por exemplo, a memória 265 pode armazenar um software específico de acessório 280 que pode prover instruções para o controlador 260 interagir com um hardware específico de acessório 275 e/ou uma interface de usuário 255. Em algumas modalidades, o acessório 202 pode receber uma informação (por exemplo, entrada de usuário, metadados, e/ou dados de aplicativo) a partir do dispositivo de computação móvel 200, e essa informação também pode ser armazenada na memória 265.
[0044] O hardware específico de acessório 275 pode representar qualquer hardware necessário para se permitir uma funcionalidade desejada do acessório 202. Por exemplo, o hardware específico de acessório 275 pode incluir um ou mais dispositivos de acumulação de dados, tal como qualquer tipo de sensor ou medidor. Em algumas modalidades, o hardware específico de acessório 275 pode incluir um medidor elétrico que gera dados representando características elétricas (resistência, diferença de voltagem ou similar); um sensor de luz que detecta luz e/ou padrões de luz; um sensor de movimento, um sensor de temperatura; um sensor de unidade; um sensor de pressão; um sensor de produto químico que responde à presença de produtos químicos selecionados (por exemplo, gases potencial mente tóxicos, tal como monóxido de carbono); e assim por diante. O hardware específico de acessório 275 também pode incluir um ou mais dispositivos médicos, tais como um medidor de glicose, um medidor respiratório, um monitor de taxa de batimento cardíaco e/ou um monitor de função cardíaca, um monitor de pressão sanguínea, ou similar.
[0045] Em algumas modalidades, o hardware específico de acessório 275 que inclui um dispositivo de acumulação de dados pode prover um ou mais sinais elétricos (por exemplo, voltagem, resistência, e/ou corrente) que correspondem a ou representam os dados físicos. Sinais analógicos e/ou digitais em uma variedade de formatos podem ser usados. O hardware específico de acessório 275 também pode incluir componentes de processamento de sinal que processam o sinal antes do envio dele para o controlador 260; em algumas modalidades, um hardware específico de acessório 275 pode enviar o sinal elétrico diretamente para o controlador 260, o qual pode processar o sinal. Por exemplo, se um hardware específico de acessório 275 incluir um termômetro implementado usando-se um termopar, os dados de resistência do termopar podem ser convertidos em dados de temperatura pelo hardware específico de acessório 275, pelo controlador 260 ou ambos. Ainda, os sinais representando dados acumulados pelo hardware específico de acessório 275 podem ser enviados (com ou sem um processamento pelo controlador 260) para um aplicativo em execução no dispositivo de computação móvel 200, por exemplo, usando-se um protocolo de aplicativo, conforme descrito abaixo; assim, um aplicativo em execução no dispositivo de computação móvel 200 também pode processar dados acumulados usando o hardware específico de acessório 275.
[0046] Em algumas modalidades, o hardware específico de acessório 275 pode incluir um ou mais dispositivos controláveis por computador. Os exemplos de dispositivos controláveis por computador incluem motores, atuadores, luzes, câmeras, válvulas, alto-falantes, telas de exibição, impressoras, e/ou qualquer outro equipamento que seja controlável pelo controlador 260. Em algumas modalidades, um aplicativo em execução no dispositivo de computação móvel 200 pode enviar sinais de controle para o acessório 202, e o controlador 260 pode operar o hardware específico de acessório 275 em resposta aos sinais de controle.
[0047] Em algumas modalidades, o hardware específico de acessório 275 pode incluir componentes de interface de usuário 255. Assim, um aplicativo em execução no dispositivo de computação móvel 200 pode receber uma entrada de usuário a partir do acessório 202, prover uma saída para um usuário através do acessório 202 e/ou controlar, interagir com ou responder a qualquer operação que o acessório 202 seja capaz de realizar.
[0048] Em algumas modalidades, o hardware específico de acessório 275 pode incluir interfaces de rede e/ou de comunicação. Por exemplo, o hardware específico de acessório 275 pode incluir um receptor de RF (por exemplo, para FM, AM, rádio por satélite, e/ou outras bandas) e/ou um transmissor de RF (por exemplo, um transmissor de alcance curto para uso pessoal). Em outras modalidades, o hardware específico de acessório 275 pode incluir uma interface de comunicação para uma rede de área pessoal, tal como um transceptor de Bluetooth ou uma interface de comunicação sem fio de alcance curto. Em ainda outras modalidades, o hardware específico de acessório 275 pode incluir uma interface de telefonia, GSM, CDMA e/ou outras interfaces de rede de voz e/ou de dados.
[0049] Assim sendo, o hardware específico de acessório 275 pode envolver qualquer componente de hardware para o qual uma interoperabilidade com um dispositivo de computação móvel e/ou de comunicação possa ser desejável.
[0050] Será apreciado que as configurações de sistema e os componentes descritos aqui são ilustrativos e que variações e modificações são possíveis. O dispositivo de computação móvel e/ou acessório pode ter outras capacidades não especificamente descritas aqui. Embora o acessório 202 e o dispositivo de computação móvel 200 sejam descritos aqui com referência a blocos em particular, é para ser entendido que os blocos são definidos por conveniência de descrição e não são pretendidos para implicarem em qualquer arranjo físico de partes componentes. Ainda, os blocos não precisam corresponder a componentes fisicamente distintos.
[0051] A interface de I/O de acessório 205 de dispositivo de computação móvel 200 e a interface de I/O de dispositivo de computação móvel 250 de acessório 202 permitem que o dispositivo de computação móvel 200 seja conectado ao acessório 202 e, subsequentemente, desconectado do acessório 202. Conforme usado aqui, o dispositivo de computação móvel 200 e o acessório 202 estão "conectados" sempre que um canal de comunicação entre a interface de I/O de acessório 205 e a interface de I/O de dispositivo de computação móvel 250 estiver aberto, e estão "desconectados" sempre que o canal de comunicação estiver fechado. Uma conexão pode ser obtida por afixação física (por exemplo, entre respectivos conectores de combinação de dispositivo de computação móvel 200 e acessório 202), por uma afixação indireta, tal como um cabo, ou pelo estabelecimento de um canal de comunicação sem fio. De modo similar, uma desconexão pode ser obtida por um destacamento físico, uma desconexão de um cabo, um desligamento do acessório 202 ou do dispositivo de computação móvel 200 ou pelo fechamento de canal de comunicação sem fio. Assim, uma variedade de canais de comunicação pode ser usada, incluindo canais sem fio, tais com barramento serial universal ("USB"), FireWire (padrão IEEE 1394), ou receptor / transmissor assíncrono universal ("UART"), ou canais sem fio, tais como Bluetooth (um padrão de comunicação sem fio de alcance curto desenvolvido pela Bluetooth SIG e licenciado sob a marca registrada Bluetooth®), WiFi (aderindo a qualquer um dos padrões da família 802.11 do IEEE), uma rede de área pessoal sem fio, infravermelho ou similar. Em algumas modalidades, uma comunicação pode ocorrer usando-se um canal com fio e um sem fio. Em algumas modalidades, múltiplos canais de comunicação entre um dispositivo de computação móvel e um acessório podem ser abertos concorrentemente, ou um dispositivo de computação móvel pode ser concorrentemente conectado a múltiplos acessórios, com cada acessório usando um canal de comunicação diferente.
[0052] Independentemente do canal de comunicação em particular, desde que o dispositivo de computação móvel 200 e o acessório 202 estejam conectados a cada outro, os dispositivos podem se comunicar pela troca de comandos e dados, conforme especificado pelo protocolo de comunicação de acessório. O protocolo de comunicação de acessório pode definir um formato para o envio de mensagens entre o dispositivo de computação móvel 200 e o acessório 202. Por exemplo, o protocolo de comunicação de acessório pode especificar que cada mensagem seja enviada em um pacote com um cabeçalho, uma carga útil e/ou uma parte final. O cabeçalho pode prover uma informação básica, tal como um indicador de começo, um comprimento do pacote e um comando a ser processado pelo destinatário, enquanto a carga útil provê quaisquer dados associados ao comando; a quantidade de dados associados pode ser diferente para comandos diferentes, e alguns comandos podem prover cargas úteis de comprimento variável. O pacote também pode incluir uma parte final que pode prover códigos de detecção de erro ou de correção de erro, por exemplo, conforme conhecido na técnica, e/ou outra informação, conforme desejado. Em várias modalidades, o paciente pode definir comandos específicos para indicação de uma ação a ser executada pelo destinatário; para sinalizar a conclusão de uma tarefa, uma mudança de estado ou a ocorrência de um erro; e/ou para a identificação da natureza dos dados associados. Em algumas modalidades, os comandos podem ser definidos de modo que qualquer comando em particular seja válido em apenas uma direção.
[0053] O protocolo de comunicação de acessório também pode especificar um ou mais enlaces de transporte físicos usáveis para a transmissão de sinais entre dispositivos. Por exemplo, o enlace de transporte pode ser um enlace de USB, um enlace de UART, um enlace de FireWire, um enlace de Bluetooth, um enlace de WiFi, um enlace paralelo, um enlace serial, etc. Neste nível, o protocolo de comunicação de acessório pode especificar, por exemplo, bytes de começo, bytes de sincronização, bytes de parada e/ou outros sinais auxiliares. Em algumas modalidades, o protocolo de comunicação de acessório pode prover múltiplos enlaces de transporte alternativos; assim, um dispositivo de computação móvel único pode suportar uma comunicação por uma variedade de enlaces físicos, incluindo enlaces com fio e/ou sem fio.
[0054] O protocolo de comunicação de acessório pode definir vários "jargões", onde um "jargão" se refere geralmente a um grupo de comandos relacionados que podem ser suportados (ou não suportados) por várias classes de acessórios. Em uma modalidade, um comando pode ser identificado de forma única por um primeiro byte que identifica o jargão ao qual o comando pertence e um segundo byte que identifica o comando em particular no jargão. Outras estruturas de comando também podem ser usadas. Não é requerido que todos os acessórios ou todos os dispositivos de computação móveis aos quais um acessório pode ser conectado suportem todo jargão definido no protocolo de comunicação de acessório ou todo comando de um jargão em particular (por exemplo, diferentes dispositivos poderiam usar versões diferentes de um dado jargão).
[0055] Em algumas modalidades, todo acessório 202 e todo dispositivo de computação móvel 200 que são projetados para interoperarem com cada outro suportam pelo menos um jargão "geral" que inclui comandos comuns a todos esses dispositivos. O jargão geral pode incluir comandos permitindo que o dispositivo de computação móvel e o acessório identifiquem a si mesmos para cada outro e provejam pelo menos alguma informação sobre suas respectivas capacidades, incluindo quaisquer outros jargões (se houver) que cada um suporta e quais capacidades do outro dispositivo cada um pretende usar enquanto conectados.
[0056] O jargão geral também pode incluir comandos de autenticação que o dispositivo de computação móvel pode usar para verificar a identidade pretendida e capacidades do acessório (ou vice- versa), e o acessório (ou o dispositivo de computação móvel) pode ser impedido de invocar certos comandos ou jargões, se a autenticação for mal sucedida. Por exemplo, um gerenciador de autenticação (não mostrado) no dispositivo de computação móvel 200 pode se comunicar com um controlador de autenticação (também não mostrado) no acessório 202 para a realização de um procedimento de autenticação, por exemplo, com base em criptografia de chave pública e um armazenamento de certificados digitais mantidos no gerenciador de autenticação de dispositivo de computação móvel 200.
[0057] O jargão geral ou um outro jargão do protocolo de comunicação de acessório também pode incluir comandos de "túnel" que permitem uma troca de informação arbitrária entre um aplicativo 226 em execução no dispositivo de computação móvel 200 e no acessório 202. Por exemplo, um comando TunnelToAcc pode ser definido como sendo enviável pelo dispositivo de computação móvel 200 para o acessório 202. A carga útil deste comando pode ser quaisquer dados, sinais de controle ou uma outra informação que um aplicativo 226 em execução no dispositivo de computação móvel 200 possa gerar e enviar para o acessório 202. De modo similar, um comando TunnelToHost pode ser definido como sendo enviável pelo acessório 202 para o dispositivo de computação móvel 200. A carga útil deste comando pode ser quaisquer dados, sinais de controle ou uma outra informação que o acessório 202 possa gerar e enviar para um aplicativo 226 em execução no dispositivo de computação móvel 200. Estes comandos de túnel podem ser definidos de modo que o protocolo de comunicação de aplicativo seja agnóstico quanto ao conteúdo de carga útil. Os exemplos de técnicas para o gerenciamento de uma comunicação, de modo que um aplicativo em particular envie dados, sinais de controle ou outra informação apenas para acessórios capazes de processá-los (e vice- versa) são descritos abaixo.
[0058] Em algumas modalidades, o acessório pode se comunicar com uma API associada a um ou mais aplicativos no dispositivo de computação móvel usando-se o protocolo de comunicação de aplicativo. Por exemplo, essa comunicação pode usar o comando de "túnel" discutido acima. Em algumas modalidades, o acessório pode se comunicar com uma API associada a um ou mais aplicativos usando o protocolo de comunicação de acessório. Em outras modalidades, o acessório também pode se comunicar com o sistema operacional de dispositivo de computação móvel usando um ou ambos o protocolo de comunicação de acessório e/ou o protocolo de comunicação de aplicativo. Assim, as modalidades mostradas aqui podem ser usadas para a facilitação de uma comunicação a partir de um acessório para um aplicativo, uma API e/ou um sistema operacional no dispositivo de computação móvel usando qualquer um ou ambos dentre um protocolo de comunicação de aplicativo e/ou um protocolo de comunicação de acessório.
[0059] Um protocolo de comunicação de acessório suportado por um dispositivo de computação móvel e um acessório pode incluir vários outros jargões, tal como um jargão simples remoto que permite que o acessório envie um comando indicando uma função do dispositivo de computação móvel a ser invocado, um jargão de interface de usuário remota que pode ser usado para comunicação de comandos e dados relacionados a replicar toda ou parte de uma interface de usuário do dispositivo de computação móvel no acessório (desse modo suportando um controle remoto mais avançado), um jargão de sintonizador que permite que um usuário controle um acessório sintonizador pela operação do dispositivo de computação móvel, um jargão de armazenamento que permite que o acessório armazene dados sobre o dispositivo de computação móvel, e assim por diante. Qualquer jargão ou combinação de jargões ou outros comandos ou grupos de comandos podem ser usados em relação às modalidades descritas aqui.
[0060] Será apreciado que o protocolo de comunicação de acessório descrito aqui é ilustrativo e que variações e modificações são possíveis. Os comandos específicos descritos aqui podem ser substituídos por outros comandos ou uma combinação de comandos ou outros tipos de mensagens e formatos. Além disso, não é requerido que todos os comandos e as operações descritos aqui sejam suportados por qualquer dispositivo de computação móvel ou acessório em particular.
[0061] Conforme citado acima, o aplicativo 226 em execução no dispositivo de computação móvel 200 e no acessório 202 pode trocar dados arbitrários, sinais de controle e/ou uma outra informação (também referida a FCqui como "mensagens"). Estas mensagens podem se relacionar a uma ampla variedade de circunstâncias. Por exemplo, as mensagens relacionadas a eventos de entrada de usuário, condições externas detectadas, dados recebidos ou quaisquer outros eventos ou condições que podem ocorrer no dispositivo de computação móvel 200 podem ser comunicadas para o acessório 202. Inversamente, as mensagens relacionadas a eventos de entrada de usuário, condições externas detectadas, dados recebidos ou outros eventos ou condições que podem ocorrer no acessório 202 podem ser comunicadas para o dispositivo de computação móvel 200.
[0062] Por exemplo, em algumas modalidades, o dispositivo de computação móvel 200 pode processar eventos de entrada a partir de um usuário, por exemplo, através da interface de usuário 255, tais como eventos de tela de toque, pressões de botão, eventos de roda de rolagem, etc. O dispositivo de computação móvel 200 pode prover dados representativos de eventos de entrada para um aplicativo rodando no dispositivo de computação móvel 200, para um acessório 202 ou ambos. O acessório 202 pode interpretar esses dados como uma entrada para controle, por exemplo, do hardware específico de acessório 275 e/ou para processamento no controlador 260. Por exemplo, os dados de tela de toque podem ser coletados pelo dispositivo de computação móvel 200 para uso por um aplicativo, pelo acessório 202 ou ambos; em algumas modalidades, os dados de tela de toque podem incluir dados representando batidas e/ou movimentos, tais como passadas, apertos, arrastes e outros gestos. Em algumas modalidades, os dados de tela de toque podem ser enviados em um formato de dados brutos (por exemplo, uma sequência de coordenadas representando onde uma pressão correspondente a um movimento de dedo foi detectada). Em outras modalidades, os dados de tela de toque podem ser convertidos em dados processados, tais como eventos de gesto (por exemplo, uma batida, uma passada ou um arraste de um ponto para um outro, um aperto, etc.) antes de ser enviado para um acessório. Em algumas modalidades, os dados brutos de teclado podem ser enviados para um sistema de entrada interativa e/ou dados processados de teclado podem ser enviados para um acessório. Em algumas modalidades, alguns ou todos os tipos de dados de entrada de usuário podem ser comunicados para um acessório 202 usando-se um aplicativo ou um protocolo de aplicativo, por exemplo, conforme descrito abaixo; em outras modalidades, alguns ou todos os tipos de dados de entrada de usuário podem ser comunicados usando-se o protocolo de comunicação de acessório até qualquer extensão em que o protocolo de comunicação de acessório suporte o envio de dados de entrada de usuário de um tipo em particular.
[0063] O dispositivo de computação móvel 200 também pode enviar uma outra comunicação além de uma entrada de usuário para o acessório 202. Por exemplo, em algumas modalidades, o dispositivo de computação móvel 200 pode incluir vários sensores e/ou dispositivos de acumulação de dados, além dos dispositivos de entrada de usuário; os exemplos podem incluir vários acelerômetros, giroscópios, bússola, dispositivos de determinação de localização (por exemplo, um receptor de sistema de posicionamento global ou um sistema de triangulação telefônica), sensores de luz, sensores de infravermelho, câmera, interfaces de rede (por exemplo, telefone, WiFi, Bluetooth), ou similares. O dispositivo de computação móvel 200 pode prover todos ou quaisquer destes dados para um acessório 202, por exemplo, em resposta a uma requisição específica do acessório 202. Em algumas modalidades, alguns ou todos estes dados podem ser comunicados para o acessório 202, usando-se um aplicativo e um protocolo de aplicativo, por exemplo, conforme descrito abaixo; em outras modalidades, alguns ou todos estes dados podem ser comunicados usando-se o protocolo de comunicação de acessório para qualquer que seja a extensão até a qual o protocolo de comunicação de acessório suporta o envio de informação de um tipo em particular.
[0064] Em um outro exemplo, o acessório 202 pode receber eventos de entrada a partir do dispositivo de computação móvel 200. Esses eventos podem corresponder a dados de entrada de usuário e/ou outros detectados no dispositivo de computação móvel 200, incluindo, mas não limitando, qualquer um dos tipos de dados descritos acima. Em algumas modalidades, esses eventos de entrada podem ser processados pelo controlador 260 no acessório 202 para controle do hardware específico de acessório 275. Por exemplo, a tela de toque ou outros eventos de entrada de usuário no dispositivo de computação móvel 200 podem ser enviados para o acessório 202 para ativação, mudança de estado, recebimento de dados a partir de, provisão de dados para, desligamento e/ou feitura de regulagens no hardware específico de acessório 275. Os dados de tela de toque, por exemplo, podem ser enviados em formato de dados brutos ou como eventos interpretados (por exemplo, pressão, passada, aperto). Em algumas modalidades, o software específico de acessório 280 pode incluir instruções para o recebimento e/ou a interpretação de dados brutos de tela de toque. Em algumas modalidades, o software específico de acessório 280 pode incluir instruções para a tradução de dados brutos de tela de toque em comandos e/ou controles para um hardware específico de acessório 275. Em uma outra modalidade, os dados de tela de toque podem ser providos em um formato bruto para um aplicativo em execução no dispositivo de computação móvel 200, o qual pode interpretar os dados e enviar comandos correspondentes e/ou uma informação para o acessório 202.
[0065] Mais ainda, os eventos de entrada recebidos no acessório 202 a partir do dispositivo de computação móvel 200 podem ser processados pelo controlador 260 executando o software específico de acessório 280. Em algumas modalidades, o software específico de acessório 280 pode interagir com o hardware específico de acessório 275 em resposta a eventos de entrada recebidos a partir do dispositivo de computação móvel 200.
[0066] Ainda, em algumas modalidades, o hardware específico de acessório 275 também pode ser controlado pelo dispositivo de computação móvel 200 através de uma conexão com o acessório 202. Por exemplo, um aplicativo em execução no dispositivo de computação móvel 200 pode incluir um código de programa que, quando executado pelo processador 230, pode ter um controle, uma interface com, interoperar com e/ou receber sinais a partir do hardware específico de acessório 275 no acessório 202. Em algumas modalidades, o aplicativo em execução no dispositivo de computação móvel 200 pode trocar mensagens com um programa de controle em execução no controlador 260 do acessório 202, desse modo instruindo o controlador 260 para comunicação com e/ou controle de uma operação do hardware específico de acessório 275. Essas mensagens podem ser trocadas usando-se um protocolo de aplicativo, por exemplo, conforme descrito abaixo.
[0067] Em algumas modalidades, o hardware específico de acessório 275 pode prover dados de entrada para o controlador 260. Por exemplo, o hardware específico de acessório 275 pode incluir um sensor de medição que pode converter as características físicas em dados (ou sinais eletrônicos representando os dados; os termos são usados de forma intercambiável) que podem ser enviados para o controlador 260 e/ou armazenados na memória 265. O controlador 260 pode processar os dados (por exemplo, aplicar correções de calibração, reduzir ruído e/ou outras operações de processamento de dados). Os dados processados podem ser enviados a partir do acessório 202 para o dispositivo de computação móvel 200. No dispositivo de computação móvel 200, um aplicativo pode processar adicionalmente os dados e/ou prover os dados para um usuário através da interface de usuário. Mais ainda, o aplicativo pode realizar qualquer número de funções em resposta aos dados.
[0068] Em algumas modalidades, um acessório e um aplicativo podem trocar quaisquer mensagens desejadas, onde o termo "mensagem" se refere geralmente a qualquer tipo de sinal de controle, evento, dados, status ou informação de configuração ou qualquer outro tipo de informação disponível para o remetente. Para facilitar a troca de mensagens, um acessório e um aplicativo pode usar um protocolo de aplicativo mutuamente de acordo. O protocolo de aplicativo pode especificar um universo de formatos aceitos para mensagens que podem ser trocadas. Os dispositivos ou programas aderindo a um protocolo de aplicativo em particular podem estruturar as mensagens que eles enviam de acordo com o universo de protocolo de aplicativo de formatos aceitos e pode interpretar mensagens que eles recebam de acordo com o universo de protocolo de aplicativo de formatos aceitos. Por exemplo, no caso de uma comunicação digital binária, o protocolo de aplicativo pode especificar como os bits compreendendo a mensagem são para serem interpretados pelo destinatário. Assim, como o protocolo de comunicação de acessório, um protocolo de aplicativo pode especificar estruturas de pacote; comandos; jargões, formatos de pacote; e/ou outros formatos, estruturas de dados, semântica ou regras de interpretação, de modo que uma mensagem em particular enviada por um participante seja interpretada de forma correta pelo destinatário. De fato, em algumas modalidades, as porções do protocolo de comunicação de acessório podem ser adotadas diretamente como todo ou parte de um protocolo de aplicativo para um acessório e/ou aplicativo em particular.
[0069] Em certas modalidades descritas aqui, as mensagens de protocolo de aplicativo podem ser enviadas entre os dispositivos pela encapsulação, pelo envolvimento ou pelo empacotamento das mensagens em pacotes se conformando ao protocolo de comunicação de acessório, por exemplo, usando comandos de tunelamento, conforme descrito acima. Assim, o enlace de transporte especificado pelo protocolo de comunicação de acessório pode ser usado, e não é necessário que um protocolo de aplicativo especifique um enlace de transporte físico.
[0070] É contemplado que uma faixa ilimitada de acessórios e aplicativos que usam uma variedade de protocolos de aplicativo diferentes pode ser criada para uso com um dispositivo de computação móvel em particular (ou uma linha de dispositivos de computação móveis). Em algumas modalidades, o dispositivo de computação móvel 200 pode ser configurado com uma capacidade de gerenciamento de protocolo de aplicativo (por exemplo, usando um gerenciador de aplicativo) que inclui um rastreamento de protocolo(s) de aplicativo usado(s) em cada acessório conectado e o(s) protocolo(s) de aplicativo usado(s) em cada aplicativo em execução e/ou instalado. Por exemplo, o dispositivo de computação móvel 200 pode prover serviços de sistema para facilitação da identificação de um aplicativo apropriado a ser usado com um acessório em particular e/ou a identificação quanto a se um acessório adequado está disponível para um aplicativo em particular. Estes serviços podem ser providos sem se requerer que os serviços de sistema do dispositivo de computação móvel 200 implementem ou se comuniquem de acordo com qualquer protocolo de aplicativo.
[0071] A figura 3 é um diagrama de blocos que mostra vários módulos e processos no dispositivo de computação móvel 200 de acordo com uma modalidade da presente invenção. Os vários módulos mostrados podem corresponder a programas em execução no processador 230 da figura 2, a programas em execução nos outros processadores no dispositivo de computação móvel 200, circuitos integrados específicos de aplicação, ou outras implementações. Em algumas modalidades, os chips de processador múltiplo ou múltiplos núcleos de processador em um único chip podem ser usados para a implementação dos vários módulos e processos descritos aqui. Alguns ou todos os processadores podem ser processadores de finalidade geral programados executando um software e/ou programas de firmware; outros podem ser processadores de sinal digital, máquinas de estado com uma funcionalidade embutida, ou qualquer combinação dos mesmos.
[0072] As portas 305 a 307 fornecem canais de comunicação para os acessórios 300 a 302 respectivamente. Cada uma das portas 305 a 307 pode ser uma porta física e/ou lógica associada a um canal com fio, tal como USB ou UART e pode incorporar elementos de hardware (por exemplo, circuitos e/ou pinos de driver compatíveis com USB) juntamente com um software de controle adequado. A porta 308 pode ser uma porta lógica (por exemplo, uma porta serial virtual) associada a um canal sem fio, tal como Bluetooth. Em algumas modalidades, cada porta 305 a 307 pode enviar e receber mensagens conformando-se ao protocolo de comunicação de acessório, conforme aplicado ao transporte físico em particular ou canal associado àquela porta. Embora três portas sejam mostradas, é entendido que um dispositivo de computação móvel pode ser projetado para suportar qualquer número de portas físicas e/ou lógicas em qualquer combinação. Ainda, conforme descrito abaixo, um acessório único pode se conectara múltiplas portas em algumas modalidades.
[0073] O gerenciador de protocolo 310, o qual pode ser, por exemplo, um módulo de firmware ou de software executado pelo processador 230, pode receber mensagens de dispositivo de computação móvel - protocolo (também referidas como comandos) a partir das portas 305 a 307 e começar o processo de interpretação das mensagens. Em algumas modalidades, o gerenciador de protocolo 310 ou um daemon (monitor de execução) de protocolo associado (não mostrado) associado ao gerenciador de protocolo 310 também pode criar ou definir as portas 305 a 307 e conectá-las ao hardware de comunicação adequando, tais como pinos de conector e circuitos de driver, transceptores sem fio, etc. Em uma modalidade, o gerenciador de protocolo 310 (ou seu daemon de protocolo associado) pode extrair mensagens de dispositivo de computação móvel - protocolo internas recebidas nas várias portas e entregar as mensagens extraídas para a camada de suporte 315 ou para outros componentes no dispositivo de computação móvel 200. Assim, os níveis superiores da pilha de processo da figura 3 podem ser independentes de um enlace de transporte em particular.
[0074] Em uma outra modalidade, o gerenciador de protocolo 310 pode receber uma informação interna (por exemplo, uma mensagem que foi estruturada de acordo com um protocolo de aplicativo pelo aplicativo 404 que criou a mensagem) pretendida para um acessório conectado (por exemplo, qualquer um dos acessórios 300 a 302) a partir da camada de suporte 315, empacotar a mensagem externa em um pacote de dispositivo de computação móvel - protocolo, e entregar o pacote para uma das portas 305 a 307 que estiver conectada ao acessório desejado.
[0075] Em algumas modalidades, o gerenciador de protocolo 310 (ou um daemon de protocolo associado) também pode suportar e/ou controlar a abertura e o fechamento de portas. Por exemplo, no caso de uma porta virtual, o gerenciador de protocolo 310 pode criar um conjunto de portas virtuais no começo e abrir e/ou fechar as portas conforme as conexões forem requisitadas e/ou terminadas.
[0076] O gerenciador de protocolo 310 pode manter um mapa de porta dinâmica 325 que associa protocolos de aplicativo específicos a portas específicas. Por exemplo, quando um acessório, tal como o acessório 300 estabelece uma conexão com o dispositivo de computação móvel 200 em uma porta em particular, tal como a porta 305, o acessório 300 pode identificar o(s) protocolo(s) de aplicativo que suporta (por exemplo, AP3 no caso do acessório 300) para o gerenciador de protocolo 310, por exemplo, pela provisão de uma string de nome de protocolo através da porta 305. O gerenciador de protocolo 310 pode armazenar uma associação entre o nome de protocolo de aplicativo e a porta no mapa de porta 325. Quando o acessório é subsequentemente desconectado, a associação pode ser removida do mapa de porta 325. Assim, o mapa de porta 325 pode prover uma lista de protocolos de aplicativo que atualmente estão disponíveis para uso pelos aplicativos. Conforme descrito abaixo, uma lista como essa facilita um roteamento de comunicações entre acessórios e aplicativos, bem como notifica aplicativos compatíveis, quando acessórios compatíveis estiverem conectados.
[0077] Uma camada de suporte de software 315 pode atuar como um intermediário entre o gerenciador de protocolo 310 (e, opcionalmente, outras funções de dispositivo de nível baixo) e os aplicativos 320 a 322 que podem ser executados no dispositivo de computação móvel 200. Por exemplo, a camada de suporte de software 315 pode prover uma interface de programa aplicativo (API) através da qual os aplicativos podem invocar uma funcionalidade de dispositivo. A camada de suporte de software 315 pode prover um nível extra de independência de dispositivo para os aplicativos 320 a 322; contudo, aqueles versados na técnica apreciarão que nem todas as camadas mostradas na figura 3 são requeridas. Por exemplo, em algumas modalidades, o gerenciador de protocolo 310 pode se comunicar diretamente com os aplicativos 320 a 322.
[0078] Na modalidade mostrada, a camada de suporte 315 pode prover uma tabela de consulta de informação de acessório 330. Em uma modalidade, a tabela de informação de acessório 330 pode incluir uma informação sobre cada acessório conectado, tais como tipo de acessório, identificador de acessório e/ou o(s) nome(s) de um ou mais protocolos de aplicativo suportados pelo acessório. A tabela de informação de acessório 330 pode ser preenchida e atualizada em resposta a uma informação provida pelo gerenciador de protocolo 310 conforme os acessórios se conectarem e desconectarem.
[0079] Os aplicativos 320 a 322 podem ser aplicativo em execução em execução de forma concorrente ou sequencial e podem ser implementados como um código de programa executável, por exemplo, pelo processador 230. Vários aplicativos 320 a 322 podem prover várias formas de interação de usuário com o dispositivo de computação móvel 200 e/ou os acessórios conectados 300 a 302. Por exemplo, um aplicativo pode prover uma interface de usuário para um acessório de sonda de medição conectado. Em resposta a uma entrada de usuário, o aplicativo pode instruir a sonda de medição para começar a gravação de dados de medição e parar a gravação de dados de medição. O aplicativo também pode apresentar dados de medição para um usuário. O aplicativo pode converter dados em várias formas e/ou prover interações de usuário adicionais, tais como uma visualização de uma gravação de medições ao longo do tempo, a realização de uma análise de operações nos dados (por exemplo, cálculo de média, análise de tendência, análise gráfica, ou similares) e assim por diante.
[0080] Um aplicativo em execução (por exemplo, qualquer um dos aplicativos 320 a 322) pode consultar a tabela de informação de acessório 330 em qualquer tempo para determinar se um acessório compatível (isto é, um acessório que suporta um protocolo de aplicativo usado pelo aplicativo) está conectado. Se um acessório compatível estiver conectado, o aplicativo poderá se comunicar com o acessório usando o protocolo de aplicativo. Por exemplo, conforme descrito abaixo, o aplicativo pode iniciar uma sessão de comunicação com o acessório.
[0081] Será apreciado que os módulos descritos aqui são ilustrativos e que variações e modificações são possíveis. O dispositivo de computação móvel 200 pode suportar qualquer tipo de aplicativo, e os aplicativos podem ser abertos ou fechados sob o controle de um usuário ou de um outro processo. Certos módulos, tais como a camada de suporte 315 e o gerenciador de protocolo 310, podem ser implementados em um software e/ou um firmware e configurados para serem automaticamente começados na ativação do dispositivo e para terminarem apenas no desligamento ou quando várias condições anormais forem detectadas; os aplicativos 320 a 322 podem começar e terminar em resposta a uma entrada de usuário ou outra entrada. Em algumas modalidades, um aplicativo pode ser automaticamente aberto quando um acessório correspondente for conectado, por exemplo, conforme descrito abaixo. Os vários módulos ou processos também podem entrar em estados inativos para a minimização de consumo de recurso, quando não em uso. Ainda, nem todas as camadas e os módulos mostrados aqui são requeridos. Por exemplo, em algumas modalidades, os aplicativos poderiam se comunicar diretamente com o gerenciador de protocolo, desviando-se da camada de suporte 315. Em outras modalidades, os módulos ou as camadas mostrados como separados na figura 3 podem ser combinados, ou módulos adicionais ou camadas podem ser providos, tais como o daemon de protocolo e/ou os módulos associados a vários serviços de sistema de dispositivo de computação móvel 200 (por exemplo, reexecução de áudio e/ou de vídeo, conexões de rede e similares).
[0082] Também é para ser entendido que um acessório pode implementar módulos, camadas e outros componentes similares àqueles mostrados na figura 3, ou qualquer variação ou modificação dos mesmos. Desde que o acessório seja capaz de trocar uma informação com um dispositivo de computação móvel de acordo com um protocolo de comunicação de acessório, a implementação interna pode ser variada, conforme desejado.
[0083] Conforme mostrado na figura 3, o dispositivo de computação móvel 200 em algumas modalidades pode manter múltiplos aplicativos concorrentemente em execução 320 a 322 e/ou conexões concorrentes com múltiplos acessórios 305 a 307. Os aplicativos e/ou acessórios podem suportar protocolos de aplicativo diferentes (e potencialmente incompatíveis), e cada protocolo de aplicativo pode ter um nome atribuído (por exemplo, uma string única) para distinção dele de todos os outros protocolos de aplicativo. Por exemplo, na modalidade da figura 3, o aplicativo 320 e o acessório 301 suportam o protocolo de aplicativo AP1; o aplicativo 321 e o acessório 302 suportam o protocolo de aplicativo AP2; e o aplicativo 322 e o acessório 303 suportam o protocolo de aplicativo AP3.
[0084] É contemplado que terceiros podem ser capazes de desenvolverem independentemente aplicativos e/ou acessórios. Se dois acessórios (ou aplicativos) associarem o mesmo nome de protocolo de aplicativo a protocolos de aplicativo que de fato não são compatíveis, isto poderá criar um conflito de nome, por exemplo, se ambos os acessórios tentarem se conectar ao mesmo dispositivo de computação móvel concorrentemente. Para se evitarem esses conflitos, pode ser desejável prover um gerenciamento de espaço de nome centralizado para nomes de protocolo de aplicativo. Em algumas modalidades, um gerenciador de espaço de nome central (por exemplo, o fabricante do dispositivo de computação móvel) pode atribuir nomes a protocolos de aplicativo mediante uma requisição de desenvolvedores do mesmo. Em uma outra modalidade, o gerenciador de espaço de nome central pode simplesmente definir uma convenção de denominação que, caso aderida a ele, deve evitar conflitos de nome, e os desenvolvedores de acessórios e/ou aplicativos podem evitar conflitos pela aderência à convenção.
[0085] Em uma modalidade, uma convenção de nome de domínio reverso é adotada para o gerenciamento do espaço de nome de protocolo de aplicativo. Os nomes de domínio convencionais fornecem, da esquerda para a direita, domínios de nível mais baixo para domínios de nível de topo. Por exemplo, no nome de domínio "help.example.com", o termo "com" é o domínio de nível de topo, e o termo "example"é um domínio de nível mais baixo, e o termo "help"é o domínio de nível mais baixo. Como um outro exemplo, o nome de domínio "mac.apple.com", da esquerda para a direita, especifica o domínio de nível mais baixo "mac", o domínio médio "apple"e o domínio de nível de topo "com". Os nomes de domínio reverso, por outro lado, proveriam "com.apple.mac".
[0086] A convenção de nome de domínio reverso pode ser usada para a especificação de protocolos de aplicativo usados por uma companhia específica. Isto é, o nome de domínio reverso "com.companyl, accessoryl" especifica que o protocolo "accessoryl" está associado à companhia (ou outro desenvolvedor) "companyl". Assim, em geral, uma companhia pode implementar um protocolo usando a convenção de nome de domínio reverso, onde a primeira porção do nome de domínio reverso referencia a companhia ("com.companyl") e está associada ao nome de domínio na Internet da companhia (ou outro desenvolvedor). Até o ponto que os diferentes desenvolvedores de acessórios e/ou aplicativos estão associados a diferentes nomes de domínio de Internet, uma convenção de nome de domínio reverso permite que os desenvolvedores distingam aplicativos ou protocolos e/ou acessórios de outros pela denominação de seus protocolos com base no inverso do nome de domínio de Internet. Esta convenção permite que os desenvolvedores denominem independentemente seus protocolos, sem preocupação quanto à denominação de convenções para outros desenvolvedores. Mais ainda, se houver um conflito entre dois desenvolvedores usando os mesmos nomes, uma checagem simples de quem possui o nome de domínio de Internet correspondente deve determinar qual desenvolvedor tem direito a um nome de domínio reverso em particular.
[0087] Em algumas modalidades, nomes de domínio reverso podem ser anexados para incluírem um identificador global que é específico para todos os dispositivos em uma classe de dispositivo. Por exemplo, todos os dispositivos de tipo de passagem seriais podem incluir um identificador anexado ao nome de domínio reverso. Por exemplo, um nome de domínio reverso como esse pode ter o formato a seguir: "com.company1.accessory1 .serialpass" ou "serialpass.com.company1.accessory1". Com uma convenção como essa, diferentes companhias podem produzir dispositivos de passagem seriam e ainda o dispositivo de computação móvel pode reconhecer esses dispositivos, apesar de diferenças de fabricante. Esta convenção de nome de domínio reverso é apenas um exemplo de como os protocolos de aplicativo podem ser identificados. Qualquer tipo de convenção pode ser usada.
[0088] Assim sendo, quando um acessório é conectado a um dispositivo de computação móvel, o acessório pode prover ao dispositivo de computação móvel uma lista de seus protocolos de aplicativo suportados pelo suprimento do nome que foi atribuído a cada protocolo suportado usando-se a convenção de nome de domínio reverso. Um acessório pode suportar um protocolo de aplicativo único ou múltiplos protocolos de aplicativo. Com base na informação recebida, o dispositivo de computação móvel 200 da figura 3 pode preencher o mapa de porta 325, a tabela de informação de acessório 330 e/ou outras tabelas de consulta com uma informação, tais como tipo de acessório, identificador de acessório, nome de protocolo de aplicativo, e/ou identificador de porta de comunicação. Conforme descrito abaixo, os aplicativos 320 a 322 podem usar estas tabelas de consulta para determinarem se um acessório compatível está disponível, e a camada de suporte 315 e/ou o gerenciador de protocolo 310 podem usar as tabelas de consulta para o roteamento de comunicações, sem terem que entender qualquer um dos protocolos de aplicativo.
[0089] Por exemplo, o dispositivo de computação móvel 200 pode ser conectado de forma sem fio a um termômetro, e também conectado a uma câmera usando um cabo. (Por exemplo, na figura 3, o acessório 302 pode ser um termômetro e a porta Z uma porta sem fio, enquanto o acessório 300 pode ser uma câmera e a porta X uma porta com fio.) Mediante uma conexão, o termômetro pode identificar seu protocolo de aplicativo suportado pelo envio do nome de domínio reverso "com.temprus.thermometerl". Este nome de domínio reverso pode ser enviado para o dispositivo de computação móvel usando-se o protocolo de comunicação de acessório. No dispositivo de computação móvel, este nome de domínio reverso pode ser armazenado como um nome de protocolo de aplicativo em uma tabela de consulta (por exemplo, o mapa de porta 325 e/ou a tabela de informação de acessório 330); em algumas modalidades, o nome de domínio reverso pode ser armazenado em conjunto com um identificador de acessório para o termômetro e/ou a porta sem fio em que o termômetro pode ser acessado. De modo similar, mediante uma conexão, a câmera pode identificar seu protocolo de aplicativo suportado pelo envio do nome de domínio reverso a seguir "com.camerasrus.cameral", de novo usando o protocolo de comunicação de acessório. Este nome de domínio reverso também pode ser armazenado na tabela de consulta (por exemplo, o mapa de porta 325 e/ou a tabela de informação de acessório 330), por exemplo, em conjunto com um identificador de acessório para a câmera e/ou a porta em que a câmera pode ser acessada.
[0090] O dispositivo de computação móvel 200 pode executar um aplicativo de temperatura (por exemplo, o aplicativo 321) que se comunica com um termômetro usando o protocolo de aplicativo "com.temprus.thermometerl" para a feitura de leituras de temperatura. Durante uma execução, o aplicativo de temperatura pode acessar a tabela de consulta para ver se um protocolo de aplicativo compatível está presente, por exemplo, ao buscar o nome de protocolo "com.temprus.thermometerl". Quando o aplicativo de temperatura encontra "com.temprus.thermometerl", o aplicativo tem uma combinação e pode começar uma comunicação com o termômetro usando o protocolo de aplicativo com.temprus.themometerl. A comunicação é roteada através da porta associada, por exemplo, pelo uso de comandos de tunelamento do protocolo de comunicação de acessório. O protocolo de aplicativo pode especificar comandos, uma informação de pacote, dados, etc., que podem ser diferentes do que é especificado no protocolo de comunicação de acessório. Mais ainda, a companhia provendo o aplicativo e/ou o acessório (por exemplo, a companhia TempRUs) pode implementar qualquer protocolo de comunicação para comunicação entre aplicativos e acessórios.
[0091] A figura 4 é um diagrama simplificado que ilustra adicionalmente uma comunicação entre um aplicativo e um acessório, de acordo com algumas modalidades da invenção. O dispositivo de computação móvel 400 pode ser conectado ao acessório 402, permitindo que o aplicativo 404 em execução no dispositivo de computação móvel 400 se comunique com o acessório 402 usando um protocolo de aplicativo.
[0092] Na modalidade mostrada na figura 4, o aplicativo 404 já determinou que o acessório 402 é um acessório compatível e criou uma sessão 406 ao invocar chamadas de função apropriadas para a camada de suporte 408. A sessão 406 pode ser, por exemplo, um objeto de software criado pelo aplicativo 404 usando uma chamada de API para a camada de suporte 408. A sessão 406 pode estar associada ao aplicativo 404 que a criou, bem como a um acessório em particular e/ou um protocolo de aplicativo especificado pelo aplicativo 404, quando ele criar a sessão. A sessão 406 pode prover, dentre outras coisas, um fluxo de entrada e um fluxo de saída, cujos conteúdos são recebidos, respectivamente, a partir de e entregues para o aplicativo 404. (A criação de uma sessão é descrita abaixo).
[0093] Para a comunicação de uma mensagem (por exemplo, sinais de controle e/ou uma outra informação) para o acessório 402 usando- se o protocolo de aplicativo, o aplicativo 404 gera a mensagem e a escreve como dados para um fluxo de saída de sessão 406. Nesta modalidade, o aplicativo 404 é unicamente responsável pela formatação da mensagem de acordo com o protocolo de aplicativo; outros processos intermediários no dispositivo de computação móvel 400 não alteram os dados que são escritos no fluxo de saída.
[0094] A sessão 406 detecta a presença de dados no fluxo de saída e envia uma instrução de envio correspondente (SND) para o gerenciador de protocolo 410. A instrução de SND provê os identificadores de acessório e de protocolo de acessório associados à sessão 406 e um "feixe" que representa dados a partir do fluxo de saída. Em algumas modalidades, o feixe pode corresponder a todos os dados de mensagem; contudo, dependendo do comprimento da mensagem e das restrições que poderiam ser impostas quanto ao comprimento de pacote pelo protocolo de comunicação de acessório, um feixe também pode corresponder apenas a uma porção dos dados de mensagem. Inversamente, em algumas modalidades, um feixe único poderia incluir múltiplas mensagens de protocolo de aplicativo.
[0095] O gerenciador de protocolo 410 pode usar os identificadores de acessório e de protocolo de acessório providos pela sessão 406 juntamente com o mapa de porta 412 para a seleção de uma porta para transmissão do feixe. O gerenciador de protocolo 410 também pode empacotar o feixe em um comando do protocolo de comunicação de acessório, por exemplo, um comando TunnelToAcc, conforme descrito acima. O comando de protocolo de comunicação de acessório é enviado para a porta 414 para transmissão. (Embora apenas uma porta seja mostrada na figura 4, é entendido que o dispositivo de computação móvel 400 pode ter múltiplas portas.)
[0096] As figuras 5A a 5C ilustram um exemplo de empacotamento (envolvimento) de uma mensagem de protocolo de aplicativo em um comando de protocolo de comunicação de acessório de acordo com algumas modalidades da invenção. A figura 5A mostra um exemplo de um pacote de protocolo de aplicativo 500. Conforme mostrado, o pacote 500 inclui o cabeçalho 502 e a carga útil 504. O protocolo de comunicação de acessório, por exemplo, pode ditar o tamanho do cabeçalho e que informação pode ser provida no cabeçalho 502. Em algumas modalidades, o cabeçalho 502 pode incluir um comando ou um código de byte que pode indicar o que está contido na carga útil e/ou o que é para ser feito com os dados na carga útil. Por exemplo, na modalidade mostrada, o cabeçalho 502 inclui um código de comando para o comando TunnelToAcc. O cabeçalho 502 também pode incluir uma outra informação, tal como uma informação especificando o tamanho da carga útil 504. Em algumas modalidades, uma parte final opcional 506 pode ser incluída no fim do pacote 500; a parte final pode incluir uma informação usável para a detecção ou a correção de erros (por exemplo, uma soma de verificação) e/ou outra informação, conforme desejado. Aqueles versados na técnica reconhecerão que vários tipos de pacotes podem ser usados no protocolo de comunicação de acessório.
[0097] A figura 5B mostra um exemplo de um pacote de protocolo de aplicativo 510. O pacote de protocolo de aplicativo 510 neste exemplo inclui um cabeçalho 512 (Cabeçalho de Aplicativo), uma carga útil 514 (Carga Útil de Aplicativo) e a parte final 516. Vários outros tipos de pacote, estilos, configurações, cargas úteis, regiões de informação, etc. podem ser usados em um pacote de protocolo de aplicativo. De fato, os aplicativos e/ou os acessórios podem usar o pacote de protocolo de aplicativo de qualquer tipo, tamanho, configuração, etc., conforme projetado, desenvolvido e/ou criado pelos desenvolvedores de aplicativo, sem limitação; em algumas modalidades, alguns ou todos os pacotes de protocolo de aplicativo podem ser modelados (ou mesmo indistinguíveis pelo conteúdo dos) nos pacotes de protocolo de comunicação de acessório. Em algumas modalidades, o pacote de protocolo de aplicativo pode ou não incluir um cabeçalho. Em algumas modalidades, um pacote de protocolo de aplicativo pode incluir uma carga útil 514 com um tamanho fixo ou variável. Em algumas modalidades, comandos, dados e/ou outros elementos de mensagem podem ser providos na carga útil e/ou no cabeçalho. As características específicas dos comandos e/ou de dados e/ou de outros elementos de mensagem podem ser especificadas pelo protocolo de aplicativo. Ainda, não é requerido que os protocolos de aplicativo usem uma estrutura de pacote para todas as mensagens de forma alguma; as mensagens de protocolo de acessório podem ter qualquer formato e/ou estrutura que sejam capazes de serem interpretados corretamente pelo destinatário.
[0098] A figura 5C mostra um exemplo de um pacote de protocolo de aplicativo 510 empacotado (ou envolvido) com a carga útil 504 de pacote de protocolo de aplicativo 520. Conforme mostrado, o pacote 520 pode incluir o cabeçalho de pacote de protocolo de aplicativo 502 seguido pelo pacote de protocolo de aplicativo 510. Em algumas modalidades, o cabeçalho 502 pode incluir um comando ou um código de byte indicando que a carga útil é um pacote de protocolo de aplicativo. O pacote de protocolo de aplicativo neste exemplo inclui um cabeçalho de pacote de protocolo de aplicativo 512, uma carga útil de pacote de protocolo de aplicativo 514 e uma parte final de pacote de protocolo de aplicativo 516. O pacote de protocolo de aplicativo 510 pode ou não preencher completamente a carga útil 504 de pacote de protocolo de aplicativo 520. Mais geralmente, um pacote de protocolo de aplicativo para um comando TunnelToAcc pode incluir qualquer feixe de dados pretendido para entrega para o acessório e não está limitado a portar um único pacote de protocolo de aplicativo.
[0099] Com referência, novamente, à figura 4, o acessório 402 recebe o pacote de comando de protocolo de acessório TunnelToAcc, por exemplo, na porta 422. A porta 422 pode rotear o pacote de comando TunnelToAcc para um intérprete de protocolo 424, o qual pode ser, por exemplo, um processo de software em execução em um controlador ou outro processador de acessório 402. O intérprete de protocolo 424 pode ler o comando TunnelToAcc, extrair o feixe contido ali, e encaminhar o feixe para um outro processo 426 em execução em um controlador ou outro processador de acessório 402. O processo 426 pode incluir qualquer processo que seja capaz de processar a informação recebida em conformidade com o protocolo de aplicativo. Por exemplo, o processo 426 pode incluir um processo que extrai instruções a partir da informação recebida e gera sinais de controle correspondentes para um hardware específico de acessório (por exemplo, um hardware específico de acessório 275 da figura 2).
[00100] Uma comunicação a partir do acessório 402 para o dispositivo de computação móvel 400 também é suportada. Por exemplo, o processo 426 pode gerar um feixe de dados correspondente a uma mensagem no protocolo de aplicativo e prover o feixe para o intérprete de protocolo 424 para ser enviado para o dispositivo de computação móvel 400. O intérprete de protocolo 424 pode empacotar o feixe no interior do comando TunnelToHost do protocolo de comunicação de acessório (por exemplo, de modo similar ao exemplo mostrado nas figuras 5A a 5C) e enviar o comando para a porta 422 para transmissão para o dispositivo de computação móvel 400.
[00101] No dispositivo de computação móvel 400, a porta 414 recebe o pacote de comando TunnelToHost e, em resposta a ele, extrai o feixe e o encaminha para a camada de suporte 408, juntamente com uma identificação do acessório e do protocolo de aplicativo associado ao feixe. Em algumas modalidades, o gerenciador de protocolo 410 pode determinar estes identificadores com base em qual porta enviou o comando TunnelToHost', assim, o comando TunnelToHost não precisa prover uma identificação do acessório ou do protocolo de aplicativo.
[00102] A camada de suporte 408 usa os identificadores de acessório e de protocolo de aplicativo para dirigir o feixe para o fluxo de entrada de sessão 406. O aplicativo 404 então pode ler os dados chegando a partir do fluxo de entrada de sessão 406, interpretar os dados de acordo com o protocolo de aplicativo e responder de modo conforme.
[00103] Assim, por exemplo, o aplicativo 404 pode ser um aplicativo de termômetro, e o acessório 402 pode incluir um termômetro. O aplicativo 404 pode requisitar uma medição de temperatura a partir do acessório 402 usando um protocolo de aplicativo apropriado (por exemplo, um protocolo denominado "com.temprus.thermometerl"). O protocolo de aplicativo, por exemplo, pode especificar um comando Get_Temp que é enviado pelo aplicativo para requisitar dados de temperatura do acessório. O aplicativo 404 pode criar um pacote de protocolo de aplicativo que inclua, por exemplo, o comando Get_Temp e quaisquer preferências ou variáveis associadas ao comando (por exemplo, se é para retornar os dados de temperatura em Fahrenheit ou Celsius). O aplicativo 404 pode criar um pacote com o cabeçalho apropriado e/ou a parte final, conforme definido pelo protocolo de aplicativo. O aplicativo 404 então pode passar este pacote como uma mensagem de protocolo de aplicativo para o fluxo de saída de sessão 406. A sessão 406 pode dirigir o gerenciador de protocolo 410 para enviar um comando de tunelamento de protocolo de aplicativo, especificando que o protocolo de aplicativo é "com.temprus.thermometerl". O gerenciador de protocolo 410 pode empacotar o comando Get_Temp em um pacote de comando TunnelToAcc do protocolo de comunicação de acessório e também pode consultar o nome de protocolo de aplicativo e determinar que este protocolo de aplicativo está associado à porta 414. O gerenciador de protocolo 410 então pode rotear o pacote de comando TunnelToAcc para a porta 414 para entregar para o acessório 402.
[00104] O acessório 402 pode receber o comando TunnelToAcc na porta 422. O intérprete de protocolo 424 pode extrair o pacote de comando Get_Temp e entregá-lo para o processo 426, o qual, neste exemplo, pode ser um processo que controla um sensor de temperatura e recebe dados dali, assim sendo, o processo 426 pode obter dados de temperatura que são para serem retornados para o aplicativo 404. Para o envio de dados, o processo 426 pode gerar, por exemplo, um pacote de comando Send_Temp em conformidade com o protocolo de aplicativo. Este pacote pode incluir os dados de temperatura requisitados (por exemplo, usando a escala de temperatura especificada no comando Get Temp). O processo 426 pode prover o pacote de comando Send_Temp como um feixe para o intérprete de protocolo 424, com uma indicação que ele deve ser enviado para o dispositivo de computação móvel 400. O intérprete de protocolo 424 pode empacotar o pacote de comando Send_Temp em um comando TunnelToHost do protocolo de comunicação de acessório, e a porta 422 pode comunicar o comando TunnelToHost para a porta 414 de dispositivo de computação móvel 400. A porta 414 pode entregar o comando TunnelToHost chegando para o gerenciador de protocolo 410, o qual pode extrair o feixe (neste caso, o pacote de comando Send_Temp) e provê-lo para a camada de suporte 408, juntamente com a informação que o feixe está associado ao protocolo "com.temprus.thermometerl", conforme determinado a partir do mapa de porta 412. A camada de suporte 408 então pode dirigir o feixe para a sessão 406, em particular para o fluxo de entrada de sessão 406. O aplicativo 404 pode ler o feixe a partir do fluxo de entrada, reconhecê-lo como um pacote de comando Send_Temp em conformidade com o protocolo de aplicativo, e extrair os dados de temperatura.
[00105] Em algumas modalidades, um acessório pode usar um protocolo de aplicativo e comandos do protocolo de comunicação de acessório para comunicação com um acessório. A figura 6 ilustra um caminho para comandos do protocolo de comunicação de acessório na modalidade da figura 4. Além de enviar mensagens de protocolo de aplicativo através da sessão 406, o aplicativo 404 pode invocar comandos de acessório - protocolo ao fazer chamadas de API apropriadas para a camada de suporte 406, a qual pode instruir o gerenciador de protocolo 410 para enviar um comando de protocolo de aplicativo (representado aqui como "mobile computing deviceProtCmdOut") através da porta 414 para o acessório 402. De modo similar, um comando de acessório - protocolo recebido a partir do acessório 402 (representado aqui como "mobile computing deviceProtCmdln") pode ser recebido e processado pelo gerenciador de protocolo 410, e o gerenciador de protocolo pode comunicar o comando para a camada de suporte 406. A camada de suporte 406, por sua vez, pode atuar de modo conforme no aplicativo 404.
[00106] Em algumas modalidades, um protocolo de aplicativo pode incorporar jargões e/ou comandos especificados pelo protocolo de comunicação de acessório. Por exemplo, o protocolo de comunicação de acessório pode definir um jargão de sintonizador, RFTuner, que permite que um usuário controle um acessório de sintonizador de frequência de rádio através do dispositivo de computação móvel. Por exemplo, o jargão RFTuner pode incluir comandos para sintonização do receptor para ligado e desligado, para mudança da estação, etc. Em algumas modalidades, um aplicativo de sintonizador de rádio pode ser executado no dispositivo de computação móvel, e o aplicativo de sintonizador de rádio em execução no dispositivo de computação móvel e o acessório de sintonizador de rádio podem suportar um protocolo de aplicativo de sintonizador de rádio que permite que o acessório de sintonizador de rádio se comunique com o aplicativo de sintonizador de rádio. Alguns ou todos os comandos do jargão RFTuner podem ser usados com o protocolo de aplicativo de sintonizador de rádio, e o protocolo de aplicativo de sintonizador de rádio pode incluir outros comandos da mesma forma (por exemplo, comandos para o controle de uma lista pré-regulada de estações que o usuário gosta). Assim, o aplicativo de sintonizador de rádio pode usar o jargão RFTuner como parte do protocolo de aplicativo de sintonizador de rádio para comunicação com o acessório de sintonizador de rádio, por exemplo, para mudança da estação, e também pode usar outros comandos do protocolo de aplicativo de sintonizador de rádio para outras operações. O dispositivo de computação móvel também pode usar o jargão RFTuner como parte do protocolo de comunicação de acessório para comunicação com o acessório de sintonizador de rádio, independentemente do aplicativo. Assim, o acessório de sintonizador de rádio pode enviar comandos e/ou mensagens para o dispositivo de computação móvel usando um jargão único em qualquer um dos dois protocolos.
[00107] Como um outro exemplo, o jargão RFTuner pode incluir um comando RFSetFreq que é enviado a partir do dispositivo de computação móvel (por exemplo, o aplicativo em execução no dispositivo de computação móvel) para sintonizar o acessório de sintonizador de rádio para a frequência para uma frequência incluída no comando. O aplicativo de sintonizador de rádio pode criar um pacote com o cabeçalho e/ou a parte final apropriados, conforme definido pelo protocolo de aplicativo, e incluir o comando RFSetFreq e a frequência requerida na carga útil de pacote. O pacote pode ser enviado, então, para o gerenciador de protocolo, o qual pode enfeixar o pacote em um pacote de protocolo de acessório com um comando do protocolo de comunicação de acessório, por exemplo, um comando TunnelToAcc, conforme descrito acima. O pacote de protocolo de acessório então pode ser enviado para o acessório. Como um outro exemplo, o comando RFSetFreq pode ser usado sem um acessório de sintonizador de rádio e sem ser tunelado. O dispositivo de computação móvel pode enviar um pacote usando o protocolo de comunicação de acessório usando o comando RFSetFreq e a frequência associada ao acessório como um pacote independente.
[00108] Como ainda um outro exemplo, um acessório pode usar o jargão RFTuner para comunicação com o dispositivo de computação móvel usando o protocolo de aplicativo e/ou o protocolo de comunicação de acessório. Por exemplo, o acessório pode usar o comando TunnelToHost para tunelar comandos RFTuner para o dispositivo de computação móvel, quando de uma comunicação com um aplicativo específico no dispositivo de computação móvel. Como um outro exemplo, o acessório pode enviar comandos RFTuner, sem tunelamento para o dispositivo de computação móvel.
[00109] Em uma outra modalidade, um acessório, tal como um console de alto-falante pode prover um controle remoto de reexecução de mídia no dispositivo de computação móvel. As funções de controle remoto podem ser implementadas usando-se comandos do protocolo de comunicação de acessório; por exemplo, o protocolo de comunicação de acessório pode incluir um comando ButtonStatus que o acessório pode enviar para a identificação de uma função em particular invocada pelo usuário (por exemplo, Tocar, Pausar, Faixa Seguinte, Faixa Anterior, etc.). O dispositivo de computação móvel pode ter um motor de reexecução para mídia armazenada que pode processar o comando ButtonStatus e responder de modo conforme. Um aplicativo em execução no dispositivo de computação móvel pode prover uma reexecução de outras fontes de mídia, por exemplo, a partir de um fluxo de dados da Internet. Seria desejável que o usuário fosse capaz de controlar remotamente a reexecução do conteúdo de transmissão contínua pela operação do acessório da mesma forma que o usuário controla a reexecução de mídia armazenada. Assim sendo, um protocolo de aplicativo de "controle de transmissão contínua" pode ser definido, que inclui comandos ou outros sinais de controle para o controle da reexecução de um conteúdo transmitido continuamente. O usuário pode operar o acessório exatamente da mesma forma para controle da reexecução de um conteúdo de mídia armazenado ou transmitido continuamente. Se um conteúdo armazenado estiver sendo reexecutado, o acessório poderá comunicar a informação de controle remoto para o motor de reexecução usando o protocolo de comunicação de acessório (por exemplo, o comando ButtonStatus). Se um conteúdo transmitido continuamente estiver sendo reexecutado, o acessório poderá comunicar a informação de controle remoto para o aplicativo usando o protocolo de aplicativo de controle de transmissão contínua. Em uma modalidade, o comando ButtonStatus do protocolo de comunicação de acessório pode ser incorporado no protocolo de aplicativo de controle de transmissão contínua.
[00110] Em ainda uma outra modalidade, um acessório poderia enviar uma informação de localização para o dispositivo de computação móvel. A informação de localização pode incluir qualquer informação representando a localização do acessório e/ou o dispositivo de computação móvel e pode ser determinada de várias formas, tal como usando um receptor de sistema de posicionamento global (GPS) e/ou uma triangulação de uma localização com base em uma informação sobre pontos de acesso de rede de telefonia móvel próximos. O protocolo de comunicação de acessório pode prover um jargão de "localização" que seja usável por um acessório para a transmissão de uma informação de localização para o dispositivo de computação móvel. Contudo, um aplicativo poderia usar uma informação de localização que não fosse provida no jargão de localização. Essa informação pode ser transmitida pelo acessório para o aplicativo usando um protocolo específico de acessório. Assim, dependendo de como a informação de localização é para ser usada, o mesmo acessório pode transmitir uma informação de localização para o dispositivo de computação móvel usando o jargão de localização do protocolo de comunicação de acessório ou o protocolo específico de acessório.
[00111] Será apreciado que os percursos de comunicação descritos aqui são ilustrativos e que variações e modificações são possíveis. Por exemplo, um percurso pode incluir mais ou menos camadas no lado de acessório e/ou de dispositivo de computação móvel. Em algumas modalidades, cada pacote de tunelamento de dispositivo de computação móvel conterá uma mensagem de protocolo de acessório, mas isto não é requerido. Por exemplo, uma única mensagem de protocolo de acessório poderia ser enviada usando-se múltiplos pacotes de tunelamento de dispositivo de computação móvel, desde que o destinatário (o acessório ou a parâmetro conforme for o caso) seja capaz de reconstruir uma mensagem a partir de múltiplos feixes de dados recebidos. De modo similar, poderia ser permitido que um único pacote de tunelamento de dispositivo de computação móvel contivesse múltiplas mensagens de protocolo de acessório, desde que o destinatário fosse capaz de analisar gramatical mente o feixe em múltiplas mensagens.
[00112] Na descrição da figura 4, foi assumido que o aplicativo 404 já tinha estabelecido a sessão 406 com o acessório compatível 403. Os exemplos de técnicas permitindo que um aplicativo identifique um acessório compatível (ou vice-versa) e estabeleça uma sessão serão descritos, agora.
[00113] A figura 7 é um fluxograma de processo 700 para a identificação de um acessório e um aplicativo compatível de acordo com uma modalidade da presente invenção. O processo 700 pode começar no bloco 702. O dispositivo de computação móvel pode determinar se um acessório foi conectado no bloco 704. Por exemplo, o dispositivo de computação móvel pode detectar se um acessório foi acoplado fisicamente a um conector, por exemplo, conforme mostrado na figura 1A, ou se um acessório foi acoplado de forma sem fio ao dispositivo de computação móvel, por exemplo, conforme mostrado na figura 1B. Conforme citado acima, um acessório pode ser considerado como estando conectado sempre que um canal de comunicação com fio ou sem fio entre o dispositivo de computação móvel e o acessório estiver aberto, e o bloco 704 pode incluir a detecção da abertura de um canal como esse. Um gerenciador de aplicativo em execução no dispositivo de computação móvel pode monitorar as conexões de hardware ou os módulos de comunicação para determinar se um canal de comunicação entre o dispositivo de computação móvel e o acessório está aberto.
[00114] No bloco 706, o dispositivo de computação móvel pode receber uma informação de protocolo de aplicativo a partir do acessório. Em algumas modalidades, esta informação pode ser comunicada usando-se pacotes definidos pelo protocolo de comunicação de acessório. Em outras modalidades, a informação de protocolo de aplicativo pode ser comunicada de qualquer maneira entendida por um ou ambos o acessório e o dispositivo de computação móvel. Por exemplo, a informação de protocolo de aplicativo pode ser comunicada usando-se qualquer protocolo de comunicação padrão da indústria, tal como um protocolo para USB, um protocolo para Bluetooth ou um protocolo para WiFi. Por exemplo, o protocolo de comunicação de acessório pode especificar um ou mais comandos e formatos de dados associados que um acessório pode enviar para um dispositivo de computação móvel, para a provisão de uma informação sobre si mesmo e suas capacidades; em algumas modalidades estes comandos podem ser parte do jargão geral do protocolo de comunicação de acessório. A informação provida pelo acessório pode incluir strings de texto para o(s) nome(s) do(s) protocolo(s) de comunicação de aplicativo suportado(s) pelo acessório. Os nomes podem ser especificados, por exemplo, usando-se a convenção de nome de domínio reverso, conforme descrito acima, ou qualquer outra convenção de denominação desejada. O acessório também pode enviar uma outra informação de identificação. Por exemplo, o acessório pode enviar uma informação identificando seu tipo; fabricante; nome de modelo; número de série; versões de hardware, software e/ou firmware; etc. O acessório também pode enviar uma informação indicando as capacidades do dispositivo de computação móvel que ele é capaz de ou pretende usar. Por exemplo, o acessório pode especificar qual jargão do protocolo de comunicação de acessório ele pode usar, se recebe ou provê sinais de áudio e/ou de vídeo a partir de ou para o dispositivo de computação móvel, os estados operacionais iniciais preferidos do dispositivo de computação móvel (por exemplo, se uma troca de sinal de áudio e/ou de vídeo deve ser inicialmente habilitada ou desabilitada, um formato preferido para sinalização de áudio e/ou de vídeo), e assim por diante.
[00115] Em outras modalidades, o protocolo de aplicativo pode ser especificado por uma referência a uma loja de aplicativo ou a partir de um servidor pela Internet. Por exemplo, quando um acessório é acoplado ao dispositivo de computação móvel, o dispositivo de computação móvel pode requisitar uma informação de protocolo de aplicativo a partir da loja de aplicativo e/ou de um servidor através da Internet. Em uma modalidade, o dispositivo de computação móvel pode enviar uma informação de identificação de acessório, tal como fabricante do acessório, nome de modelo e/ou número de série para a loja de aplicativo ou um outro servidor, e receber uma informação de protocolo de aplicativo em resposta. A informação de protocolo de aplicativo enviada a partir do acessório, por exemplo, pode incluir o nome de protocolo de aplicativo; um arquivo especificando vários comandos de protocolo de aplicativo, mensagens e/ou especificações de pacote; uma listagem de acessórios com os quais o protocolo de aplicativo é compatível; uma listagem de aplicativos com os quais o protocolo de aplicativo é compatível; uma indicação de uma localização de rede em que um aplicativo ou uma atualização de aplicativo pode ser transferido (via download); etc. A informação de protocolo de aplicativo pode ser enviada em um formato de metadados. Em algumas modalidades, várias versões do protocolo de aplicativo podem ser tornadas disponíveis através da loja de aplicativo ou através da Internet. Por exemplo, versões diferentes de um protocolo de aplicativo podem permitir vários níveis de funcionalidade e podem ser providas para uso com um dispositivo de computação móvel em preços diferentes. Por exemplo, versões "leves", versões grátis, versões completas, versões de demonstração, etc. podem ser tornadas disponíveis. Por exemplo, uma versão completa pode definir um conjunto de comandos usáveis pelo dispositivo de computação móvel e/ou pelo acessório, ao passo que uma versão leve define um subconjunto dos comandos definidos pela versão plena.
[00116] Em algumas modalidades, os protocolos de aplicativo podem ser enumerados, quando comunicados para o dispositivo de computação móvel. O acessório pode identificar cada protocolo de aplicativo suportado com um número de índice ou algum tipo de indicação que se refira a cada aplicativo. Por exemplo, o acessório pode enviar uma mensagem que indique que um índice 1 é um protocolo de aplicativo 1, um índice 2 é um protocolo de aplicativo 2, e um índice 3 é um protocolo de aplicativo 3. Cada protocolo de aplicativo pode ser indicado usando-se qualquer tipo de indicação, tal como, por exemplo, usando uma convenção de nome de domínio reverso. Por último, estes protocolos podem ser referenciados usando-se seu número de índice. Essa enumeração pode ser usada em modalidades descritas por toda esta exposição.
[00117] O dispositivo de computação móvel pode autenticar o acessório usando procedimentos de autenticação de acordo com o protocolo de comunicação de acessório no bloco 708. Estes procedimentos podem incluir, por exemplo, técnicas de autenticação com base em certificados de chave pública armazenados no dispositivo de computação móvel e chaves privadas mantidas por vários acessórios e/ou outras técnicas. Em algumas modalidades, o dispositivo de computação móvel pode autenticar todo acessório mediante uma conexão e uma identificação (por exemplo, após o bloco 706). Em outras modalidades, o dispositivo de computação móvel pode autenticar todo acessório antes de ou durante a identificação no bloco 706 e, em ainda outras modalidades, uma autenticação pode ocorrer mais tarde no processo ou não ocorrer de forma alguma. Por exemplo, em algumas modalidades, o dispositivo de computação móvel permite certos recursos e/ou operações associados ao protocolo de comunicação de acessório a ser acessado apenas por acessórios autenticados; esses recursos de "acesso restrito" podem incluir recursos relacionados a uma comunicação de comandos de protocolo de aplicativo (por exemplo, os comandos de tunelamento descritos acima podem ser comandos de acesso restrito). O dispositivo de computação móvel pode esperar para autenticar um acessório até o acessório tentar usar um recurso de acesso restrito, ou o dispositivo de computação móvel pode autenticar o acessório em qualquer momento após o recebimento de uma informação indicando que o acessório irá ou poderia tentar usar um recurso de acesso restrito.
[00118] O dispositivo de computação móvel então pode criar e/ou atualizar uma lista de protocolo de aplicativo "conectado" no bloco 710, usando a informação de protocolo de aplicativo suprida no bloco 706. Por exemplo, com referência à figura 3, o mapa de porta 325 e/ou a tabela de informação de acessório 330 podem ser atualizados para associarem o acessório recém-conectado e seu(s) protocolo(s) de aplicativo a uma porta. Qualquer uma das informações de identificação de acessório providas no bloco 706 pode ser armazenada em uma lista de protocolo de aplicativo conectado pelo dispositivo de computação móvel. Um exemplo de uma lista de protocolo conectado é mostrado na figura 8 como a tabela 820. A tabela 820 lista cada protocolo de aplicativo que um acessório atualmente conectado identificou em associação à porta à qual o acessório está conectado. (Assim sendo, a tabela 820 pode ser um exemplo de mapa de porta 325 da figura 3.) É entendido que o formato e o conteúdo de informação da tabela 820 podem ser variados, conforme desejado.
[00119] Com referência novamente à figura 7, no bloco 712, o dispositivo de computação móvel pode determinar se quaisquer aplicativos estão disponíveis, que usem o(s) protocolo(s) de aplicativo associado(s) ao acessório (esses aplicativos também são referidos aqui como aplicativos "compatíveis"). Por exemplo, o dispositivo de computação móvel pode armazenar uma tabela de protocolos de aplicativo suportados, com cada protocolo sendo associado ao aplicativo (ou aplicativos) que ele suporta. Um exemplo de uma tabela de protocolo de aplicativo suportado é mostrado na figura 8 como a tabela 810. A tabela 810 inclui uma lista de nomes de protocolo de aplicativo, e cada nome de protocolo de aplicativo está associado a um identificador de um ou mais aplicativos. Em algumas modalidades, a tabela 810 pode ser implementada como uma tabela de consulta que pode ser acessada usando-se o nome de um protocolo de aplicativo para retornar um identificador de aplicativo; a tabela 810 pode ser acessível usando-se um identificador de aplicativo para o retorno de uma lista de protocolos de aplicativo associados a um aplicativo em particular.
[00120] Em algumas modalidades, a tabela 810 inclui apenas protocolos de aplicativo associados aos aplicativos atualmente em execução. Por exemplo, quando um aplicativo é aberto, ele pode prover um processo de sistema do dispositivo de computação móvel (por exemplo, a camada de suporte 315 da figura 3) com uma lista de quaisquer protocolos de aplicativo que energia elétrica requeira e/ou possa usar. O processo de sistema de dispositivo de computação móvel pode atualizar a tabela 810 de modo conforme. Em outras modalidades, a tabela 810 pode ser uma tabela persistente que é mantida para todos os aplicativos instalados no dispositivo de computação móvel. Por exemplo, a instalação (ou a atualização) de um aplicativo pode incluir uma notificação de um processo de sistema do dispositivo de computação móvel (por exemplo, a camada de suporte 315 de quaisquer protocolos de aplicativo que o aplicativo requeira e/ou seja capaz de usar; o dispositivo de computação móvel pode atualizar a tabela 810 de modo conforme.
[00121] Em algumas modalidades, quando um acessório é acoplado ao dispositivo de computação móvel, o acessório pode identificar a si mesmo pelo envio de uma informação de identificação, por exemplo, usando um jargão de identificação de acessório associado ao protocolo de comunicação de acessório. A informação de identificação pode ser usada pelo dispositivo de computação móvel para a seleção de um protocolo de comunicação de aplicativo apropriado, por exemplo, por uma referência à tabela 810. Em algumas modalidades, o dispositivo de computação móvel pode enviar uma informação de identificação de acessório para uma loja de aplicativo e/ou um servidor através da Internet para a identificação de um protocolo de comunicação de aplicativo compatível com o acessório. Em algumas modalidades, a loja de aplicativo e/ou o servidor podem enviar um arquivo detalhando um protocolo de comunicação de aplicativo compatível com o acessório. Em algumas modalidades, o acessório não pode enviar uma informação de protocolo de aplicativo para o dispositivo de computação móvel, ao invés disso, o acessório pode enviar uma informação de identificação de acessório que, então, é usada pelo dispositivo de computação móvel para escolher o protocolo de comunicação de aplicativo apropriado.
[00122] Com referência novamente ao bloco 712 da figura 7, nas modalidades em que uma tabela de protocolo de aplicativo suportado (por exemplo, a tabela 810 da figura 8) é provida, o dispositivo de computação móvel pode determinar se um aplicativo compatível está disponível ao acessar a tabela de protocolo suportado usando o nome de protocolo do acessório recém-conectado. Por exemplo, conforme mostrado na figura 8, se o acessório recém-conectado tiver provido protocol Sth ng{c} como seu identificador de protocolo de aplicativo, o bloco 712 de processo 700 poderá incluir consultar protocolString{c} na tabela de protocolo suportado 810 e, desse modo, determinar que um aplicativo "App8" esteja associado a este protocolo de aplicativo. Neste caso, o bloco 712 resultaria em uma determinação que um aplicativo está disponível. Conforme adicionalmente mostrado na figura 8, se o acessório recém-conectado tiver provido protocolString{x} como seu protocolo de aplicativo, nenhuma combinação poderia ser encontrada na tabela 810, e o bloco 712 de processo 700 resultaria em uma determinação que um aplicativo compatível não está disponível.
[00123] Se um aplicativo compatível não estiver disponível, o processo 700 poderá facilitar a localização e a obtenção de um aplicativo compatível no bloco 714. Por exemplo, o dispositivo de computação móvel pode dirigir o usuário para uma loja de aplicativo (por exemplo, a Loja iTunes® provida pela Apple Inc.) ou um outro recurso para a compra e/ou a transferência (via download) de aplicativos. Vários tipos de assistência podem ser providos. Por exemplo, em algumas modalidades, a informação de acessório provida para o dispositivo de computação móvel no bloco 706 pode incluir um identificador de um aplicativo preferido para uso com o acessório. Este identificador poderia ser um URL (localizador de recurso uniforme, por exemplo, um endereço de página a rede mundial), um identificador de produto único para o aplicativo preferido em uma loja de aplicativo em particular, ou similar. O dispositivo de computação móvel pode usar esta informação para a localização do aplicativo preferido e alertar ao usuário para comprar e/ou transferir (via download) o aplicativo.
[00124] Em outras modalidades, o dispositivo de computação móvel pode usar a informação de protocolo de aplicativo, com ou sem outra informação de identificação de acessório, para buscar um aplicativo compatível, por exemplo, em uma loja de aplicativo. Por exemplo, conforme mostrado na figura 9, o dispositivo de computação móvel pode formular uma consulta 825 usando um ou mais protocolos de aplicativo conectados e/ou um identificador para um aplicativo preferido provido pelo acessório (representado como appCode 830). O dispositivo de computação móvel pode enviar a consulta 825 para um URL 840 associado à busca em uma loja de aplicativo ou um outro destino. No exemplo mostrado, a consulta inclui uma lista de todos os protocolos de aplicativo conectados (ligados a um operando "OU" lógico), juntamente com o appCode 830 para o aplicativo preferido. No caso em que múltiplos aplicativos combinam na consulta, o aplicativo preferido 830 pode ser usado pela loja de aplicativo para destacar o aplicativo preferido (assumindo que ele esteja na lista de combinações). Assim, embora vários aplicativos possam ser listados, que suportam um ou mais dos protocolos de aplicativo na lista de protocolo conectado 820, o aplicativo preferido 820 pode ser o aplicativo padrão e pode estar listado, por exemplo, no topo de uma lista de resultados e/ou marcado com um símbolo, uma palavra ou um logotipo indicando-o como preferido. Em algumas modalidades, mais de uma versão do aplicativo preferido pode ser provida com uma pontuação, de modo que ao usuário possa ser apresentada uma lista em níveis. Por exemplo, uma versão profissional, uma versão padrão e/ou uma versão grátis do aplicativo preferido podem ser todas providas.
[00125] Em resposta a uma consulta, a loja de aplicativo pode retornar uma lista de um ou mais aplicativos compatíveis, e o dispositivo de computação móvel pode alertar ao usuário para selecionar um aplicativo compatível a transferir (via download). Em outras modalidades, os aplicativos podem ser instalados imediatamente quando da transferência (via download); em outras modalidades, o usuário pode ser separadamente alertado para transferir (via download) e, então, instalar o aplicativo. Em ainda outras modalidades, pode ser requerido que o usuário compre o aplicativo. Em algumas modalidades, a compra pode ser feita através de uma loja de aplicativo, usando crédito, e/ou através de uma conta previamente estabelecida.
[00126] Em ainda outras modalidades, um aplicativo compatível pode ser pré-armazenado no acessório em si, e o protocolo de comunicação de acessório pode incluir comandos permitindo que o acessório indique que ele tem um aplicativo compatível armazenado nele; em resposta a uma indicação como essa, o dispositivo de computação móvel pode transferir (via upload) o aplicativo compatível a partir do acessório e instalá-lo. (Em algumas modalidades, o dispositivo de computação móvel pode alertar ao usuário para uma aprovação antes da transferência (via upload) e/ou da instalação dos aplicativos providos para acessório).
[00127] Com referência, novamente, à figura 7, no bloco 716, é determinado se um aplicativo compatível agora está disponível e instalado. (Por exemplo, um aplicativo compatível poderia não ter sido localizado ou o usuário poderia ter escolhido não comprá-lo ou transferi- lo (via download).) Caso não, o processo 700 pode terminar no bloco 718.
[00128] Se, no bloco 716, um aplicativo compatível estiver disponível (previamente instalado ou apenas instalado através do bloco 714), então, no bloco 720, o dispositivo de computação móvel poderá determinar se o aplicativo compatível já está rodando. Caso não, o aplicativo poderá ser aberto no bloco 722. Dependendo da implementação, o bloco 722 pode incluir alertar ao usuário para confirmar que o aplicativo deve ser aberto.
[00129] No bloco 724, o aplicativo pode se comunicar com o acessório. Em algumas modalidades, o bloco 724 pode incluir a criação de uma sessão e o envio e/ou o recebimento de comandos de protocolo de aplicativo através da sessão, por exemplo, conforme descrito acima. O bloco 724 também pode incluir o envio e/ou o recebimento de comandos ou uma outra informação usando o protocolo de comunicação de acessório. Assim, o mesmo aplicativo e o acessório podem usar funções suportadas pelo protocolo de comunicação de acessório e também podem trocar uma outra informação, sinais de controle, dados, etc., usando um protocolo de aplicativo que poderia ou não se sobrepor às funções suportadas pelo protocolo de comunicação de acessório. Uma comunicação pode persistir indefinidamente, por exemplo, até o acessório se tornar desconectado do dispositivo de computação móvel e/ou o aplicativo terminar. Nesse ponto, o processo 700 pode terminar (bloco 718).
[00130] O processo 700 pode ser implementado usando-se um hardware, um software e/ou um firmware em um dispositivo de computação móvel. Por exemplo, os processos de sistema e/ou aplicativos podem estar em execução para controle da funcionalidade do dispositivo de computação móvel para a realização das ações descritas acima.
[00131] Em algumas modalidades, o dispositivo de computação móvel pode manter uma lista persistente de todos ou de vários protocolos de aplicativo suportados por qualquer acessório que nunca tenha se conectado àquele dispositivo de computação móvel, mesmo após o acessório se desconectar. Quando o dispositivo de computação móvel se comunica com uma loja de aplicativo, o dispositivo de computação móvel pode prover alguns ou todos os protocolos na lista persistente para a loja de aplicativo (por exemplo, como uma consulta de busca a um servidor hospedando a loja de aplicativo), e a loja de aplicativo pode sugerir aplicativos em que o usuário poderia estar interessado com base na lista. Por exemplo, a loja de aplicativo pode identificar outros aplicativos que usem o(s) mesmo(s) protocolo(s) de aplicativo. Se a lista persistente também contiver uma informação identificando acessórios em particular associados a cada protocolo de aplicativo, a informação provida pela loja de aplicativo poderá identificar acessórios em particular como compatíveis com os aplicativos identificados. Isto pode ajudar ao usuário na seleção de aplicativos a comprar e/ou a transferir (via download).
[00132] A figura 10 é um fluxograma de um processo 1000 que pode ser executado por um aplicativo para iniciar uma comunicação com um acessório de acordo com uma modalidade da presente invenção. O processo 1000 pode começar (bloco 1002), por exemplo, quando o aplicativo é aberto no dispositivo de computação móvel. Por exemplo, o usuário pode abrir manualmente o aplicativo, ou o aplicativo pode ser aberto automaticamente pelo dispositivo de computação móvel em resposta a um acessório se conectando (por exemplo, conforme descrito acima com referência à figura 7).
[00133] No bloco 1004, o aplicativo checa para determinar se um acessório compatível está conectado. (Conforme usado aqui, um acessório é "compatível" com um aplicativo em particular se o acessório suportar um protocolo de aplicativo que seja requerido e/ou usável por aquele aplicativo.) Por exemplo, em modalidades em que o dispositivo de computação móvel mantém uma tabela de acessório conectado, tal como a tabela 820 da figura 8, o aplicativo poderá consultar a tabela usando o nome de um protocolo de aplicativo desejado para determinar se um acessório compatível está conectado. Esta consulta pode incluir, por exemplo, invocar uma chamada de função de API com uma camada de suporte (por exemplo, a camada de suporte 315 da figura 3).
[00134] Se, no bloco 1006, um acessório compatível não estiver conectado, o aplicativo poderá esperar no bloco 1008 por uma certa quantidade de tempo e, então, tentar de novo. Se, por exemplo, um período de expiração for atingido, então, o processo 1000 terminará no bloco 1020. Em algumas modalidades, enquanto espera no bloco 1008, o aplicativo pode gerar uma mensagem para o usuário alertando ao usuário para conectar um acessório compatível. Em algumas modalidades, o aplicativo pode se registrar junto a um serviço de sistema de dispositivo de computação móvel e requisitar uma notificação, quando um acessório compatível tiver se tornado disponível, ao invés de checar repetidamente. Em ainda outras modalidades, o aplicativo pode sair se um acessório compatível não estiver conectado e também pode notificar ao usuário que o aplicativo não rodará a menos que um acessório compatível seja conectado, ou o aplicativo pode rodar com uma funcionalidade reduzida.
[00135] Se um acessório compatível for detectado no bloco 1010, o aplicativo poderá iniciar uma sessão com aquele acessório. Por exemplo, o acessório pode invocar uma chamada de API de camada de suporte 408 (vide a figura 4) ou um gerenciador de aplicativo (vide a figura 14) para criar uma sessão que esteja associada a um acessório em particular e um protocolo de aplicativo (por exemplo, a sessão 406 da figura 4). A sessão, representada na figura 10 pelo bloco 1012, pode continuar indefinidamente. Conforme descrito acima, durante a sessão, o aplicativo pode enviar e/ou receber mensagens (por exemplo, sinais de controle, dados, informação de status e/ou outra) usando o protocolo de aplicativo associado à sessão, e o aplicativo também pode enviar e/ou receber mensagens usando o protocolo de comunicação de acessório até o ponto em que a funcionalidade desejada seja suportada no protocolo de comunicação de acessório.
[00136] Uma sessão pode eventualmente terminar. Por exemplo, no bloco 1014, o aplicativo pode determinar que a sessão deve terminar (por exemplo, em resposta a uma instrução de usuário, tal como saindo do aplicativo ou indicando que o acessório não é mais para ser usado) e pode terminar a sessão no bloco 1016, em resposta a uma determinação como essa. Como um outro exemplo, no bloco 1018, o aplicativo pode ser notificado que o acessório se desconectou; isto também pode resultar em uma terminação de sessão no bloco 1016. A terminação no bloco 1016 pode incluir, por exemplo, invocar uma chamada de API para destruir ou fechar o objeto de sessão e liberar recursos associados. Por exemplo, em modalidades em que apenas uma sessão em um tempo é permitida para uma dada combinação de acessório e protocolo de aplicativo, uma terminação de sessão pode sinalizar para o dispositivo de computação móvel que o acessório e seu protocolo agora estão livres para serem usados em uma outra sessão, por exemplo, com um aplicativo diferente. Em algumas modalidades, a terminação da sessão pode resultar na desconexão do acessório (por exemplo, o dispositivo de computação móvel pode fechar a porta); em outras modalidades, o acessório pode permanecer conectado após a sessão terminar; e, em ainda outras modalidades, o aplicativo pode instruir os serviços de sistema de dispositivo de computação móvel quanto a se é para desconectar o acessório quando a sessão termina.
[00137] Uma vez que a sessão termine, o processo 1000 pode terminar. Em algumas modalidades, se o aplicativo ainda estiver em execução após o processo de terminação da sessão, 1000 poderá retornar para o bloco 1004 para procurar por um acessório compatível e começar uma nova sessão.
[00138] Será apreciado que o protocolo de comunicação de acessório descrito aqui é ilustrativo e que variações e modificações são possíveis. Os atos descritos como sequenciais podem ser executados em paralelo, a ordem dos fatos pode ser modificada, e/ou os atos podem ser adicionados, omitidos ou combinados.
[00139] Em algumas modalidades, um dispositivo de computação móvel pode suportar conexões concorrentes com múltiplos acessórios e/ou uma execução concorrente de múltiplos aplicativos. Assim, um aplicativo único pode estar interagindo concorrentemente com múltiplos aplicativos.
[00140] Por exemplo, a figura 11 ilustra um aplicativo 1100 no dispositivo de computação móvel 1102 concorrentemente interagindo com o acessório A 1106 e o acessório B 1108 de acordo com algumas modalidades da invenção. O acessório A 1106 e o acessório B 1108 podem ser tipos diferentes de acessórios, ou eles podem ser acessórios similares ou mesmo idênticos. Neste exemplo, cada acessório é conectado em uma porta diferente; assim, o acessório A 1106 é conectado à porta 1110 e o acessório A1106 é conectado à porta 1112. O aplicativo 1100 criou duas sessões 1114, 1116. A sessão 1112 está associada ao acessório 1104 e usa um protocolo de aplicativo A1, enquanto a sessão 1114 está associada ao acessório A 1106 e usa um protocolo de aplicativo B1. As sessões 1112 e 1114 são independentes de cada outra; podem ser iniciadas, usadas e/ou terminadas sem afetarem a outra. Em algumas modalidades, a sessão pode ser específica de protocolo. A porta 1110 pode usar o protocolo de comunicação de acessório para a provisão de um "túnel" para mensagens em conformidade com o protocolo A1 passarem entre o dispositivo de computação móvel 1102 e o acessório 1106, e a porta 1112 pode usar o (mesmo) protocolo de comunicação de acessório para a provisão de um túnel separado para mensagens em conformidade com o protocolo B1 passarem entre o dispositivo de computação móvel 1102 e o acessório 1108. É entendido que os protocolos de aplicativo A1 e B1 podem ser protocolos diferentes ou o mesmo protocolo, conforme desejado. Ainda, embora dois acessórios e duas sessões sejam mostrados, qualquer número de acessórios e sessões pode ser conectado a um aplicativo em particular da maneira descrita aqui, desde que apenas recursos suficientes de hardware e/ou de software (por exemplo, portas e/ou sessões) estejam disponíveis no dispositivo de computação móvel.
[00141] A figura 12 ilustra dois aplicativos, o aplicativo 1 1200 e o aplicativo 2 1202 que estão em execução no dispositivo de computação móvel 1204 e concorrentemente interagindo com o acessório A 1206 e o acessório B 1208 de acordo com algumas modalidades da invenção. O acessório A 1206 e o acessório B 1208 podem ser tipos diferentes de acessórios, ou eles podem ser acessórios similares ou mesmo idênticos. Neste exemplo, cada acessório é conectado em uma porta diferente; assim, o acessório A 1206 é conectado à porta 1210 e o acessório B 1208 é conectado à porta 1212. O aplicativo 1 1200 criou uma sessão 1214 associada ao acessório A 1206 e ao protocolo de aplicativo A1, e o aplicativo 2 1202 criou uma sessão 1216 associada ao acessório B 1208 e ao protocolo de aplicativo B1. As sessões 1212 e 1214 são independentes de cada outra; qualquer uma pode ser iniciada, usada e/ou terminada sem afetar a outra. A porta 1210 pode usar o protocolo de comunicação de acessório para prover um túnel para mensagens em conformidade com o protocolo de aplicativo A1 para passagem entre o dispositivo de computação móvel 1204 e o acessório A 1106, e a porta 1212 pode usar o (mesmo) protocolo de comunicação de acessório para a provisão de um túnel separado para mensagens em conformidade com o protocolo de aplicativo B1 passarem entre o dispositivo de computação móvel 1204 e o acessório 1208. Como com a figura 11, é entendido que os protocolos de aplicativo A1 e B1 podem ser protocolos diferentes ou o mesmo protocolo, conforme desejado. Ainda, embora dois acessórios, dois aplicativos e duas sessões sejam mostrados, qualquer número de acessórios, sessões e/ou aplicativos podem ser concorrentemente suportados da maneira descrita aqui, desde que apenas recursos suficientes de hardware e/ou de software (por exemplo, portas e/ou sessões) estejam disponíveis no dispositivo de computação móvel.
[00142] A figura 13 ilustra dois aplicativos, o aplicativo 1 1300 e o aplicativo 2 1302, em execução no dispositivo de computação móvel 1304 e concorrentemente interagindo com um acessório 1306 de acordo com algumas modalidades da invenção. Neste exemplo, o acessório 1306 suporta dois protocolos de aplicativo diferentes (A1 e A2). Os protocolos A1 e A2 podem diferentes no nome apenas, ou eles podem ser dois protocolos distintos e potencialmente incompatíveis. O acessório 1306 é conectado ao dispositivo de computação móvel 1304 na porta 1310, a qual está associada ao protocolo A1, e também é conectado ao dispositivo de computação móvel 1304 na porta 1312, a qual está associada ao protocolo A2. O aplicativo 1 1300 criou uma sessão 1314 associada ao acessório 1306 e ao protocolo de aplicativo A1, e pode se comunicar, portanto, com o acessório 1306 através da porta 1310. De modo similar, o aplicativo 2 1302 criou uma sessão 1316 associada ao acessório 1306 e o protocolo de aplicativo A2 criou uma sessão 1316 associada ao acessório 1306 através da porta 1312. As sessões 1312 e 1314 são independentes de cada outra. A porta 1310 pode usar o protocolo de comunicação de acessório para a provisão de um túnel para mensagens em conformidade com o protocolo de aplicativo A1 passarem entre o dispositivo de computação móvel 1304 e o acessório 1306, e a porta 1312 pode usar o (mesmo) protocolo de comunicação de acessório para a provisão de um túnel separado para mensagens em conformidade com o protocolo de aplicativo A2 passarem entre o dispositivo de computação móvel 1304 e o acessório 1306. Embora dois aplicativos e duas sessões sejam mostrados, qualquer número de acessórios, sessões e/ou aplicativos podem ser concorrentemente conectados ao mesmo acessório da maneira descrita aqui, desde que apenas recursos suficientes de hardware e/ou de software (por exemplo, portas e/ou sessões) estejam disponíveis no dispositivo de computação móvel.
[00143] Será apreciado que as configurações de sistema das figuras 11 a 13 são ilustrativas e que variações e modificações são possíveis. Por exemplo, qualquer número de aplicativos e qualquer número de acessórios podem ser conectados usando-se qualquer número de sessões e portas. Conforme descrito acima, a sessão pode ser uma entidade de software que esconde do aplicativo os detalhes de conexões físicas (por exemplo, portas e similares). Assim, o aplicativo não precisa saber a qual porta um acessório compatível está conectado de modo a se comunicar com ele. Ainda, o percurso de comunicação também pode incluir outras camadas intermediárias (por exemplo, um gerenciador de protocolo e/ou uma camada de daemon de protocolo, conforme descrito acima).
[00144] Um gerenciador de aplicativo pode ser usado para abstrair uma conexão de comunicação entre um aplicativo e uma porta de comunicação para se tornarem transparentes as particularidades de um protocolo de comunicação para programas aplicativos. Em algumas modalidades, quando uma conexão de comunicação é abstraída, um programa aplicativo pode se comunicar com um acessório ao escrever dados para um fluxo de saída e ler dados a partir de um fluxo de entrada, sem conhecer quaisquer detalhes do acessório com o qual está em comunicação. Isto pode ocorrer usando-se um gerenciador de aplicativo.
[00145] Em algumas modalidades, um gerenciador de aplicativo pode incluir porções de ou ser implementado pela camada de suporte 408 ou pelo gerenciador de protocolo 410 mostrados na figura 4. A figura 14 ilustra um exemplo de uma abstração como essa. A figura mostra o fluxo de dados entre a camada de aplicativo 1402, o gerenciador de aplicativo 1404 e uma camada de transporte de hardware 1406 de um dispositivo de computação móvel de acordo com algumas modalidades da invenção. A camada de aplicativo 1402 pode ser qualquer tipo de processo rodando no dispositivo de computação móvel. A camada de transporte de hardware 1402 pode incluir qualquer tipo de interface de hardware ou de interface de software entre o dispositivo de computação móvel e o acessório.
[00146] O gerenciador de aplicativo 1404 pode prover uma interface de comunicação entre os acessórios através da camada de transporte de hardware 1406 e através da camada de aplicativo 1402. Ao fazê-lo, uma comunicação pode ser abstraída, de modo que o aplicativo 1402 não saiba as especificidades do acessório com o qual está em comunicação ou as especificidades da porta em que o acessório é acoplado. O gerenciador de aplicativo 1404 pode ser um processo de fundo que faz parte do sistema operacional do dispositivo de computação móvel ou um outro processo de fundo em execução no dispositivo de computação móvel. O gerenciador de aplicativo 1404 pode prover fluxos de entrada e de saída para um aplicativo que podem ser usados para comunicação com um acessório.
[00147] Em algumas modalidades, o gerenciador de aplicativo 1404 pode gerenciar os acessórios conectados que são acoplados ao dispositivo de computação móvel e podem ser acessados através da camada de transporte de hardware 1406. O gerenciador de aplicativo 1404 também pode gerenciar recursos de comunicação de acessório de aplicativos em execução ou instalados no dispositivo de computação móvel. Em ambos os casos, o gerenciador de aplicativo 1404 pode armazenar uma informação de protocolo de aplicativo associada a acessórios e/ou aplicativos. As figuras 15 a 18 mostram vários processos que podem ser implementados para o estabelecimento de sessões e a provisão de comunicação entre um aplicativo e um acessório usando o gerenciador de aplicativo.
[00148] A figura 15 é um fluxograma de processo 1500 que pode ser executado por um gerenciador de aplicativo em um dispositivo de computação móvel para o estabelecimento e o gerenciamento de uma sessão de acordo com algumas modalidades da invenção. O processo 1500 pode começar no bloco 1502. No bloco 1504, o gerenciador de aplicativo monitora as portas de comunicação para determinar se um acessório foi conectado (isto é, está em comunicação) com o dispositivo de computação móvel. Em outras modalidades, o gerenciador de aplicativo pode monitorar o estado de hardware de um conector físico para determinar se um acessório está acoplado ao dispositivo de computação móvel. Em algumas modalidades, o gerenciador de aplicativo pode receber uma indicação de um módulo de WiFi ou Bluetooth indicando que uma conexão sem fio foi estabelecida. Independentemente do tipo de porta, o gerenciador de aplicativo pode determinar se um canal de comunicação foi estabelecido com o acessório. No bloco 1506, o processo 1500 continua a monitorar se um acessório está acoplado ao dispositivo de computação móvel.
[00149] Uma vez que um canal de comunicação tenha sido estabelecido, conforme determinado no bloco 1506, o processo 1500 pode realizar, então, processos de autenticação no bloco 1508. Uma autenticação pode prosseguir pelo envio de várias mensagens entre o dispositivo de computação móvel e o acessório usando o protocolo de acessório. Uma vez que o acessório seja autenticado e tenha recebido permissão para se comunicar com o dispositivo de computação móvel, a informação de capacidade de acessório poderá ser recebida no bloco 1510. A informação de capacidade pode incluir uma informação indicando um ou mais protocolos de aplicativo com os quais o acessório é compatível. Os protocolos de aplicativo podem ser indicados usando- se, por exemplo, uma convenção de nome de domínio reverso, conforme descrito acima, ou qualquer outra convenção para indicar o protocolo de aplicativo. Alguma ou toda a informação pode ser armazenada na memória no dispositivo de computação móvel no bloco 1512. Em particular, os protocolos de aplicativo podem ser armazenados em uma tabela de consulta (por exemplo, a tabela de protocolo de aplicativo conectado 820 da figura 8) que associa protocolos de aplicativo à porta de comunicação em que o acessório é acoplado.
[00150] No bloco 1514, o gerenciador de aplicativo pode determinar se é para permitir uma comunicação entre o acessório e o dispositivo de computação móvel ou um aplicativo em execução no dispositivo de computação móvel usando um protocolo de aplicativo suportado pelo acessório. Em algumas modalidades, uma comunicação pode ser permitida se um aplicativo (ou outro processo) estiver em execução no dispositivo de computação móvel que suporta um protocolo de aplicativo suportado pelo acessório. Por exemplo, o gerenciador de aplicativo pode comparar os protocolos de aplicativo suportados pelos aplicativos em execução no dispositivo de computação móvel com protocolos de aplicativo armazenados na tabela de consulta. Uma comunicação entre o acessório e o aplicativo pode ocorrer usando-se o protocolo de aplicativo. Em algumas modalidades, a mensagem de protocolo de aplicativo pode ser tunelada ou embutida em uma mensagem de protocolo de aplicativo (por exemplo, pelo envolvimento da mensagem de protocolo de aplicativo em uma mensagem de protocolo de aplicativo). Desde que o acessório não seja desacoplado do dispositivo de computação móvel no bloco 1516 e/ou a execução do aplicativo não seja terminada no bloco 1518, uma comunicação pode continuar. Caso contrário, em algumas modalidades, os protocolos de aplicativo armazenados na tabela de consulta podem ser removidos no bloco 1520, e o processo 1500 pode terminar no bloco 1522.
[00151] A figura 16 é um outro fluxograma de um processo que pode ser executado por um gerenciador de aplicativo em um dispositivo de computação móvel para coordenação da comunicação entre um acessório e um aplicativo em execução no dispositivo de computação móvel de acordo com algumas modalidades da invenção. O processo 1600 pode começar no bloco 1605. No bloco 1610, o gerenciador de aplicativo pode receber uma requisição para uma informação de acessório a partir de um aplicativo em execução no dispositivo de computação móvel. Se um acessório não for anexado no bloco 1615, uma mensagem poderá ser enviada para o aplicativo assim indicando, e o processo 1600 pode retornar para o bloco 1610 e esperar até um acessório ser acoplado ao MOD ou, em algumas modalidades, o processo 1600 pode terminar. Se um acessório for conectado ao dispositivo de computação móvel, então, o gerenciador de aplicativo poderá prover ao aplicativo uma informação de acessório incluindo uma indicação de quaisquer protocolos de aplicativo suportados por todo e qualquer acessório acoplado ao dispositivo de computação móvel no bloco 1620. O gerenciador de aplicativo pode enviar toda ou qualquer informação de protocolo de aplicativo, incluindo os protocolos de aplicativo suportados pelo acessório como metadados, por exemplo, usando a convenção de nome de domínio reverso. Cada protocolo de aplicativo pode estar associado a um identificador de protocolo de aplicativo.
[00152] Em algumas modalidades, ao invés de requisitar uma informação de acessório, o aplicativo pode enviar dados de protocolo de aplicativo para o gerenciador de aplicativo. E o gerenciador de aplicativo pode selecionar um protocolo de aplicativo a partir de uma tabela de consulta (por exemplo, a tabela de protocolo de aplicativo conectado 820) que é compatível com os dados de protocolo de aplicativo enviados a partir do aplicativo, caso ele exista.
[00153] No bloco 1625, o aplicativo pode abrir uma sessão de comunicação para um protocolo de aplicativo e pode indicar o protocolo par ao gerenciador de aplicativo; por exemplo, usando o identificador de protocolo de aplicativo. Ao fazê-lo, o aplicativo pode fazer a requisição sem especificar qualquer coisa sobre o acessório ou a porta. Em resposta à abertura da sessão de comunicação, o gerenciador de aplicativo pode prover um fluxo de saída e um fluxo de entrada associados à sessão para o aplicativo no bloco 1630. Em algumas modalidades, a sessão de comunicação é aberta para um protocolo em particular associado a um acessório em particular. Então, múltiplas sessões podem ser criadas usando-se múltiplos protocolos para comunicação com um ou muitos acessórios.
[00154] No bloco 1635, o gerenciador de aplicativo pode receber uma mensagem de protocolo de aplicativo a partir do aplicativo usando- se o protocolo de aplicativo associado à sessão de comunicação. A mensagem de protocolo de aplicativo pode ser recebida no gerenciador de aplicativo usando-se o fluxo de saída provido no bloco 1630. O gerenciador de aplicativo então pode envolver a mensagem de protocolo de aplicativo com um envolvedor de protocolo de acessório no bloco 1640. Em algumas modalidades, este envolvimento pode incluir o embutimento da mensagem de protocolo de aplicativo em uma mensagem de protocolo de acessório (por exemplo, conforme mostrado nas figuras 5A, 5B e 5C). Em algumas modalidades, este envolvimento pode tunelar a mensagem de protocolo de aplicativo usando o protocolo de acessório. No bloco 1645, a mensagem de protocolo de aplicativo envolvida pode ser enviada para o acessório. O processo 1600 então pode prosseguir para o bloco 1650. Retornando ao bloco 1635, se o gerenciador de aplicativo não receber uma mensagem de protocolo de aplicativo no bloco 1635, o processo 1600 poderá prosseguir para o bloco 1650.
[00155] No bloco 1650, o gerenciador de aplicativo pode receber uma mensagem de protocolo de acessório a partir do acessório. A mensagem de protocolo de acessório pode incluir uma mensagem de protocolo de aplicativo envolvida em uma mensagem de protocolo de acessório. No bloco 1655, o envolvedor de protocolo de acessório pode ser removido da mensagem de protocolo de aplicativo; e a mensagem de protocolo de aplicativo pode ser enviada para o aplicativo no bloco 1660.
[00156] Se o acessório for desconectado do dispositivo de computação móvel 1670 ou o aplicativo cessar a execução no dispositivo de computação móvel 1665, então, o processo 600 poderá terminar no bloco 1675. Caso contrário, o processo retorna para o bloco 1635.
[00157] Um processo que pode ser realizado em um acessório acoplado a um dispositivo de computação móvel é mostrado na figura 17. O processo 1700 pode começar no bloco 1702, quando um acessório se torna conectado ao dispositivo de computação móvel. No bloco 1704, o acessório pode enviar uma mensagem para o dispositivo de computação móvel indicando os protocolos de aplicativo suportados pelo acessório. Esta mensagem pode ser parte das capacidades de acessório descritas com respeito ao bloco 1510 da figura 15. Esta mensagem pode ser enviada de acordo com o protocolo de acessório. O acessório pode indicar os protocolos de aplicativo usando uma convenção de nome de domínio reverso (por exemplo, conforme descrito acima). Quando uma sessão de comunicação tiver sido estabelecida pelo gerenciador de aplicativo, no bloco 1706, o dispositivo de computação móvel pode enviar para o acessório uma mensagem, usando o protocolo de acessório, indicando que uma sessão de comunicação foi criada. Esta mensagem, ou uma mensagem subsequente, pode indicar o protocolo de aplicativo usado para a criação da sessão, conforme indicado no bloco 1708. Em algumas modalidades, no bloco 1708, um ID de sessão pode ser comunicado, ao invés de ou além do protocolo de aplicativo. No bloco 1710, uma mensagem de reconhecimento pode ser enviada para o dispositivo de computação móvel a partir do acessório, usando o protocolo de acessório, antes de uma comunicação com o dispositivo de computação móvel usando o protocolo de aplicativo no bloco 1712. O processo 1700 pode terminar no bloco 1714. O processo 1700 pode terminar, por exemplo, quando o aplicativo for fechado pelo usuário ou pelo sistema operacional, quando o aplicativo ou o sistema operacional fechar a sessão, e/ou quando o acessório for desconectado.
[00158] A figura 18 é um fluxograma de processo 1800 que pode ser executado por um aplicativo em um dispositivo de computação móvel para a abertura de uma comunicação com um acessório de acordo com algumas modalidades da invenção. O processo 1800 pode começar no bloco quadro 1805. No bloco 1810, o aplicativo pode requisitar uma informação sobre os acessórios conectados a partir do gerenciador de aplicativo. O gerenciador de aplicativo pode responder ao enviar uma informação de acessório para o aplicativo, a qual pode ser recebida pelo aplicativo no bloco 1815. Uma resposta a partir do gerenciador de aplicativo pode ser recebida no bloco 1815, que inclui uma informação de acessório. A informação de acessório pode incluir uma informação indicando os acessórios acoplados ao dispositivo de computação móvel, o(s) protocolo(s) de aplicativo compatível(is) com o acessório, e/ou identificadores associados ao(s) protocolo(s) de aplicativo. Em algumas modalidades, o gerenciador de aplicativo pode dirigir o aplicativo para a localização de memória em que uma listagem ou tabela dos protocolos de aplicativo conectados pode estar localizada.
[00159] No bloco 1820, o aplicativo (ou o dispositivo de computação móvel) pode determinar se qualquer um dos protocolos de aplicativo ou um protocolo de aplicativo único que seja compatível com um acessório anexado combina com um protocolo de aplicativo compatível com o aplicativo. Se uma combinação for encontrada, o processo 1800 se moverá para o bloco 1835. Se não houver combinações, um aplicativo que seja compatível com um protocolo de aplicativo associado ao acessório poderá ser buscado na internet (por exemplo, em uma loja de aplicativo on-line) ou no dispositivo de computação móvel no bloco 1825. Em algumas modalidades, a informação de acessório pode incluir uma informação indicando um aplicativo preferido para uso com o acessório. Em algumas modalidades, um aplicativo pode ser transferido (via download) e executado no dispositivo de computação móvel no bloco 1830 e o processo 1800 pode se mover para o bloco 1835. Em algumas modalidades, um add-on ou patch de aplicativo pode ser transferido (via download) a partir de uma localização de rede (por exemplo, em uma loja de aplicativo on-line) que provê uma compatibilidade com um protocolo de aplicativo que também é compatível com o acessório. Se um novo aplicativo não for transferido (via download) e não houver aplicativos compatíveis encontrados, então, o processo 1800 terminará no bloco 1865.
[00160] Em algumas modalidades, no bloco 1820, no caso de nenhum aplicativo compatível ser encontrado ou estar disponível no dispositivo de computação móvel, uma de três opções pode ser adotada. Em primeiro lugar, o usuário é alertado quanto a se ele gostaria de buscar e/ou transferir (via download) um aplicativo compatível a partir de uma localização de rede ou de uma loja de aplicativo. O processo então pode prosseguir de acordo com a escolha do usuário. Em segundo lugar, o dispositivo de computação móvel pode buscar e/ou transferir (via download) um aplicativo compatível sem alertar ao usuário. Em terceiro lugar, o dispositivo de computação móvel pode não alertar ao usuário nem buscar um aplicativo compatível. Em algumas modalidades, o acessório pode enviar uma mensagem indicando qual das três opções acima deve ser seguida pelo dispositivo de computação móvel. Esta mensagem pode ser enviada antes de ou no bloco 1810 ou no bloco 815. Em outras modalidades, uma regulagem de sistema no dispositivo de computação móvel pode ser feita pelo usuário indicando qual das opções acima deve ser seguida para todos os acessórios.
[00161] No bloco 1835, o aplicativo pode abrir uma sessão de comunicação que esteja ligada a um protocolo de aplicativo compatível. Uma vez que uma sessão seja criada, o gerenciador de aplicativo pode prover fluxos de entrada e de saída para o aplicativo no bloco 1840. No bloco 1845, o aplicativo pode se comunicar com o acessório ao escrever dados formatados de acordo com o protocolo de aplicativo para o fluxo de saída e pela leitura dos dados de protocolo de aplicativo a partir do fluxo de entrada.
[00162] Desde que o acessório seja acoplado ao dispositivo de computação móvel, conforme determinado no bloco 1850, e o aplicativo não termine a sessão no bloco 1855, o aplicativo pode se comunicar com o acessório usando os fluxos de entrada / saída providos pelo gerenciador de aplicativo. Caso contrário, a sessão pode ser terminada no bloco 1860 e o processo 1800 pode terminar no bloco 1855.
[00163] Em algumas modalidades da invenção, quando um acessório se conecta a um dispositivo de computação móvel, o acessório pode enviar uma informação de acessório que inclui metadados especificando um aplicativo preferido. Esta informação, por exemplo, pode ser enviada durante uma fase de identificação, uma fase de autenticação ou uma fase de capacidades. Em algumas modalidades, se um aplicativo preferido não estiver em execução no aplicativo e estiver armazenado em uma memória no dispositivo de computação móvel, o aplicativo poderá ser automaticamente aberto. Em algumas modalidades, o dispositivo de computação móvel pode prover uma notificação para o usuário perguntando se ele gostaria de abrir o aplicativo preferido, e abrir o aplicativo se o usuário responder afirmativamente.
[00164] Em algumas modalidades da invenção, se qualquer um dos aplicativos preferido (isto é, os aplicativos preferidos pelo acessório) for carregado no dispositivo de computação móvel, o dispositivo de computação móvel poderá destacar um ícone relacionado a um ou a cada um dos aplicativos preferidos em uma tela inicial da interface de usuário. Assim, um usuário poderá localizar mais facilmente os aplicativos compatíveis para uso com o acessório. Por exemplo, quando destacando o ícone de aplicativo, o dispositivo de computação móvel pode mudar a cor ou o tom do ícone, oscilar ou vibrar o ícone, aumentar o ícone, mudar o formato do ícone, mudar a ilustração no ícone, etc. Qualquer aspecto do ícone pode ser mudado.
[00165] Em outras modalidades da invenção, se o aplicativo preferido não estiver armazenado ou carregado no dispositivo de computação móvel, o dispositivo de computação móvel poderá ser dirigido para uma localização de rede, tal como uma loja de aplicativo para a transferência (via download) do aplicativo preferido. Em algumas modalidades, os metadados podem ser salvos e o aplicativo preferido pode ser transferido (via download) a partir de uma localização de rede em um tempo posterior. Por exemplo, o aplicativo pode ser transferido (via download) quando o usuário dirigir um navegador da web ou uma loja de aplicativo para uma localização de rede específica, em que o aplicativo preferido pode ser transferido (via download). Como um outro exemplo, o aplicativo pode ser transferido quando o usuário tiver o nível apropriado de conectividade sem fio para a transferência (via download) do aplicativo preferido. Em algumas modalidades, o aplicativo preferido pode ser carregado quando o dispositivo de computação móvel estiver acoplado a um computador principal.
[00166] Mais ainda, em algumas modalidades, os metadados enviados a partir do acessório para o dispositivo de computação móvel também podem incluir uma indicação especificando como se comportar quando o aplicativo preferido não combinar com um aplicativo carregado no dispositivo de computação móvel. Esta indicação pode ser parte de um comando ou de uma mensagem. Por exemplo, o acessório pode especificar que o aplicativo preferido deve combinar com um aplicativo no dispositivo de computação móvel e o aplicativo preferido deve ser transferido (via download) para interagir com o acessório. Como um outro exemplo, o acessório pode especificar um aplicativo preferido, mas interoperará com qualquer aplicativo com um protocolo de aplicativo compatível. Neste caso, o dispositivo de computação móvel pode transferir (via download) o aplicativo preferido, mas isto não é requerido. Mais ainda, em alguns casos, o dispositivo de computação móvel pode requisitar um feedback do usuário quanto a se é para transferir (via download) o aplicativo ou usar um aplicativo compatível. Como ainda um outro exemplo, o acessório pode especificar que o dispositivo de computação móvel nunca busque ou transfira (via download) um aplicativo a partir de uma localização de rede ou loja de aplicativo. Mais ainda, em algumas situações, o acessório pode especificar que o usuário nunca seja perguntado quanto a se é para transferir (via download) o aplicativo. Neste cenário, o acessório pode operar sem uma interação com um aplicativo no dispositivo de computação móvel.
[00167] Em ainda uma outra modalidade da invenção, um acessório pode ser acoplado a um dispositivo de computação móvel e um primeiro aplicativo pode estar em execução no dispositivo de computação móvel. O primeiro aplicativo pode estar associado a um protocolo de aplicativo que pode ou não ser compatível com o acessório, e o aplicativo pode ou não estar em comunicação com o acessório. O acessório pode enviar um comando para o dispositivo de computação móvel especificando um segundo aplicativo a executar. Isto pode ser iniciado em resposta a uma interação com um usuário, por exemplo, a partir da pressão de um botão no acessório a partir do usuário. O dispositivo de computação móvel então pode executar o segundo aplicativo em resposta ao recebimento do comando. Em algumas modalidades, o primeiro aplicativo pode rodar em paralelo com o segundo aplicativo. Em algumas modalidades, o primeiro aplicativo pode ser fechado e o segundo aplicativo carregado. Em algumas modalidades, o comando pode indicar o aplicativo por um número de série ou por nome. Em algumas modalidades, o comando também pode especificar uma localização de rede em que o aplicativo pode ser transferido (via download) e, então, executado. Mais ainda, em algumas modalidades o acessório pode requisitar que o segundo aplicativo seja executado, quando nenhum aplicativo estiver em execução no dispositivo de computação móvel ou quando o sistema operacional estiver em execução no dispositivo de computação móvel.
[00168] Embora esta invenção tenha sido descrita com respeito a modalidades específicas, alguém versado na técnica reconhecerá que numerosas modificações são possíveis. Por exemplo, em certas modalidades descritas aqui, uma porta está associada, no máximo, a um protocolo de aplicativo em qualquer dado momento. Em outras modalidades, as comunicações usando protocolos de aplicativo diferentes podem ser multiplexadas na mesma porta, e/ou comunicações com aplicativos diferentes usando o mesmo protocolo de aplicativo podem ser multiplexadas na mesma porta. Nessas modalidades, os comandos de dispositivo de computação móvel - protocolo usados para tunelamento de mensagens de protocolo de acessório (em qualquer direção) podem incluir um identificador de sessão e/ou de protocolo de aplicativo para facilitação da manipulação apropriada das mensagens de protocolo de acessório. Em uma modalidade como essa, quando um aplicativo estabelece uma sessão associada a um acessório e um protocolo de aplicativo em particular, um identificador daquela sessão pode ser provido para o acessório usando um comando do protocolo de comunicação de acessório. Os pacotes subsequentes de dispositivo de computação móvel - protocolo (por exemplo, pacotes de comando de tunelamento) associados àquela sessão podem incluir o identificador de sessão. Assim, o acessório pode associar quaisquer mensagens de protocolo de acessório que ele pode enviar ou receber a uma sessão em particular, mesmo se múltiplas sessões estiverem concorrentemente em progresso e mesmo se comunicações relacionadas a múltiplas sessões forem multiplexadas na mesma porta. O acessório então pode manter uma informação de estado em separado para múltiplas sessões, mesmo se comunicações para múltiplas sessões forem multiplexadas em uma única porta.
[00169] Foram descritas modalidades da invenção que fornecem um exemplo de como um protocolo de comunicação de aplicativo pode ser usado para uma comunicação entre um aplicativo e um acessório. Em muitos casos, o dispositivo de computação móvel pode ser agnóstico com respeito ao protocolo de comunicação de aplicativo. Algumas modalidades descrevem esquemas por meio dos quais o acessório e/ou o aplicativo comunicam uma informação especificando o protocolo de comunicação de aplicativo. Várias outras técnicas podem ser usadas, de modo que o acessório e/ou o aplicativo saiba qual protocolo de aplicativo usar. Por exemplo, o dispositivo de computação móvel pode incluir uma tabela com todos os protocolos de aplicativo conhecidos. O acessório e/ou o aplicativo podem especificar o protocolo de aplicativo ao apontarem para a entrada de tabela. Como um outro exemplo, o aplicativo pode requisitar uma informação de protocolo de aplicativo a partir do acessório usando qualquer número de protocolos de comunicação. Como um outro exemplo, o aplicativo pode especificar para o acessório quaisquer protocolos suportados pelo aplicativo e o acessório pode escolher o protocolo de aplicativo a usar. Como ainda um outro exemplo, uma máscara de bit pode ser usada, onde máscaras de bit predeterminadas diferentes podem ser usadas para a representação de vários protocolos de aplicativo. Vários outros meios para a identificação do protocolo de aplicativo também podem ser usados.
[00170] Várias outras modalidades também são mostradas. Por exemplo, um método para comunicação entre um dispositivo acessório e um aplicativo em execução em um dispositivo de computação móvel é mostrado, que opera no dispositivo acessório. O método pode compreender a comunicação de uma informação especificando pelo menos um protocolo de comunicação de aplicativo para o dispositivo móvel usando um protocolo de comunicação de acessório; e/ou uma comunicação com um aplicativo em execução no dispositivo móvel usando-se o protocolo de comunicação de acessório. Em algumas modalidades, o método também pode incluir uma comunicação com um sistema operacional em execução no dispositivo de computação móvel usando-se o protocolo de comunicação de acessório.
[00171] Em algumas modalidades, um pacote de protocolo de comunicação de aplicativo pode ser tunelado em um pacote de protocolo de comunicação de acessório. Em algumas modalidades, o método também pode incluir o recebimento de comandos de protocolo de comunicação de aplicativo a partir do aplicativo em execução no dispositivo de computação móvel e a mudança do estado do acessório em resposta a isso. Em algumas modalidades, o método também pode incluir o envio de dados para o aplicativo em execução no dispositivo de computação móvel em resposta a um comando a partir do aplicativo em execução no dispositivo de computação móvel, onde os dados podem ser enviados usando-se o protocolo de comunicação de aplicativo e o comando pode ser recebido usando-se o protocolo de comunicação de acessório. Em algumas modalidades, a informação especificando pelo menos um protocolo de comunicação de aplicativo pode ser provida em uma convenção de nome de domínio reverso. Em algumas modalidades, o método também pode incluir o controle da funcionalidade do dispositivo de computação móvel com o acessório usando o protocolo de comunicação de acessório.
[00172] Um dispositivo acessório é mostrado, que pode incluir um alojamento; uma interface de comunicação disposta pelo menos parcialmente no alojamento e configurada para troca de comandos e dados com um dispositivo de computação móvel, a interface de comunicação tendo pelo menos uma porta; e/ou uma lógica de controle disposta no alojamento e acoplada de forma comunicativa à interface de comunicação. A lógica de controle pode ser configurada para comunicação com um sistema operacional em execução no dispositivo de computação móvel através da interface de comunicação usando-se um protocolo de comunicação de acessório. A lógica de controle pode ser configurada para comunicação com um aplicativo em execução no dispositivo de computação móvel através da interface de comunicação usando-se um protocolo de comunicação de acessório.
[00173] Em algumas modalidades, a lógica de controle também pode ser configurada para comunicação de uma informação especificando o protocolo de comunicação de aplicativo usando o protocolo de comunicação de acessório. Em algumas modalidades, a lógica de controle também pode ser configurada para comunicação de uma informação especificando o protocolo de comunicação de aplicativo usando um protocolo de comunicação padrão, um outro além do protocolo de comunicação de acessório. Em algumas modalidades, a informação de protocolo de comunicação de aplicativo pode ser comunicada para o dispositivo de computação móvel usando-se uma convenção de nome de domínio reverso. Em algumas modalidades, a interface de comunicação pode compreender uma interface de comunicação sem fio.
[00174] Um método para comunicação entre um dispositivo acessório e um aplicativo em execução em um dispositivo de computação móvel, o método operando no dispositivo acessório. O método pode incluir a comunicação de uma informação de acessório para o dispositivo de computação móvel usando-se um protocolo de comunicação de acessório; o recebimento de pelo menos um dentre um identificador de sessão, um identificador de protocolo de aplicativo ou um comando de conexão aberta a partir de um dispositivo de computação móvel; e/ou após isso uma comunicação com o aplicativo em execução no dispositivo de computação móvel usando-se um protocolo de comunicação de aplicativo. Em algumas modalidades, o protocolo de comunicação de aplicativo pode ser um protocolo associado à stringde protocolo de aplicativo comunicada para o dispositivo de computação móvel. Em algumas modalidades, a informação de acessório pode incluir pelo menos uma string de protocolo de aplicativo, um índice de protocolo de aplicativo correspondente à stringde protocolo de aplicativo, uma informação de aplicativo preferido, ou uma informação de protocolo de comunicação de acessório. Em algumas modalidades, a informação de aplicativo preferido especifica um aplicativo o qual suporta uma comunicação usando-se um protocolo de comunicação de aplicativo associado às stringsde protocolo de aplicativo comunicadas para o dispositivo de computação móvel. Em algumas modalidades, a comunicação pode incluir o controle da funcionalidade do dispositivo de computação móvel com o acessório. Em algumas modalidades, a stringde protocolo de comunicação de aplicativo pode ser uma convenção de nome de domínio reverso.
[00175] Um outro dispositivo acessório é mostrado. O acessório pode incluir um alojamento; uma interface de comunicação disposta pelo menos parcial mente no alojamento, e/ou configurada para acoplamento de forma comunicativa a um dispositivo de computação móvel; um hardware de acessório; e/ou uma lógica de controle disposta no alojamento e acoplada de forma comunicativa à interface de comunicação e ao hardware específico de acessório. A lógica de controle pode ser configurada para comunicação de uma informação de protocolo de comunicação de aplicativo para um dispositivo de computação móvel através da interface de comunicação usando um protocolo de comunicação de acessório. A lógica de controle pode ser configurada para o estabelecimento de uma sessão de comunicação com um aplicativo em execução no dispositivo de computação móvel através da interface de comunicação, em que a sessão de comunicação usa o protocolo de comunicação de aplicativo para comunicação entre o acessório e o aplicativo em execução no dispositivo de computação móvel. A lógica de controle pode ser configurada para o recebimento de dados a partir do aplicativo em execução no dispositivo de computação móvel usando o protocolo de comunicação de acessório. A lógica de controle pode ser configurada para controle da operação do hardware de acessório em aplicativo aos dados recebidos a partir do aplicativo em execução no dispositivo de computação móvel.
[00176] Em algumas modalidades, a interface de comunicação pode compreender uma interface de comunicação sem fio. Em algumas modalidades, a lógica de controle ainda pode ser configurada para receber dados de hardware a partir do hardware de acessório, e/ou enviar os dados de hardware para o aplicativo em execução no dispositivo de computação móvel usando o protocolo de comunicação de aplicativo. Em algumas modalidades, o hardware de acessório pode compreender e os dados de hardware podem compreender dados coletados usando-se o sensor. Em algumas modalidades, o hardware de acessório pode compreender uma interface de hardware com um dispositivo elétrico e os dados de hardware podem compreender dados recebidos a partir do dispositivo elétrico através da interface de hardware. Em algumas modalidades, o hardware de acessório pode compreender uma interface de hardware com um dispositivo elétrico e os dados a partir do aplicativo em execução no dispositivo de computação móvel compreendem dados para controle do dispositivo elétrico usando uma interface de hardware. Em algumas modalidades, o hardware de acessório pode compreender um visor e os dados a partir do aplicativo em execução no dispositivo de computação móvel compreender uma informação exibível.
[00177] Um outro método para comunicação entre um dispositivo acessório e um aplicativo em execução em um dispositivo móvel é mostrado. Este método pode operar no dispositivo móvel. O método pode incluir a identificação de um dispositivo acessório, em que a identificação usa um protocolo de comunicação de acessório; o recebimento de uma informação a partir do dispositivo acessório especificando um protocolo de comunicação de aplicativo, em que a informação é recebida usando-se o protocolo de comunicação de acessório; a execução de um aplicativo no dispositivo de computação móvel; e/ou uma comunicação com o dispositivo acessório a partir do aplicativo usando-se o protocolo de comunicação de aplicativo. Em algumas modalidades, o método também pode incluir determinar se o protocolo de aplicativo pode ser listado em uma tabela de protocolo no dispositivo de computação móvel, em que a tabela de protocolo pode compreender protocolos suportados por aplicativos no dispositivo de computação móvel.
[00178] Em algumas modalidades, o método também pode incluir a transferência (via download) de um aplicativo que suporte o protocolo de aplicativo, no caso de a tabela de protocolo não incluir o protocolo de aplicativo. Em algumas modalidades, a informação a partir do dispositivo acessório especificando um protocolo de comunicação de aplicativo especifica um protocolo de comunicação de aplicativo usando uma convenção de nome de domínio reverso. Em algumas modalidades, a informação a partir do dispositivo acessório especificando o protocolo de comunicação de aplicativo também pode incluir um identificador associado ao protocolo de comunicação de aplicativo. Em algumas modalidades, a comunicação com o dispositivo acessório usando o protocolo de comunicação de aplicativo ainda pode compreender a encapsulação dos pacotes de protocolo de comunicação de aplicativo em pacotes de protocolo de comunicação de acessório. Em algumas modalidades, o protocolo de comunicação de aplicativo pode incluir comandos que são incluídos no protocolo de comunicação de acessório.
[00179] Um dispositivo de computação móvel também é mostrado, que pode incluir um alojamento; uma interface de comunicação disposta pelo menos parcialmente no alojamento, e/ou configurada para troca de comandos e dados com um acessório, a interface de comunicação tendo pelo menos uma porta; uma memória disposta no alojamento; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa à memória e à interface de comunicação. A lógica de controle pode ser configurada para receber uma indicação especificando um protocolo de comunicação de aplicativo a partir de um acessório através da interface de comunicação usando um protocolo de comunicação de acessório. A lógica de controle pode ser configurada para a execução de um aplicativo armazenado na memória. A lógica de controle pode ser configurada para o estabelecimento de uma comunicação entre o acessório e o aplicativo usando-se o protocolo de comunicação de aplicativo. Em algumas modalidades, pelo menos uma porta pode ser uma porta com fio ou uma sem fio. Em algumas modalidades, a lógica de controle ainda pode ser configurada para se determinar se um protocolo de comunicação de aplicativo especificado pelo aplicativo pode ser associado a um protocolo de comunicação de aplicativo armazenado na memória. Em algumas modalidades, a lógica de controle ainda pode ser configurada para o tunelamento de dados de protocolo de comunicação de aplicativo para o acessório usando-se o protocolo de comunicação de acessório. Em algumas modalidades, a lógica de controle ainda pode ser configurada para a encapsulação de um pacote de protocolo de comunicação de aplicativo com um pacote de protocolo de comunicação de acessório e para a provisão do pacote de protocolo de comunicação de acessório para a porta.
[00180] Um outro dispositivo móvel é mostrado, que pode incluir um alojamento; uma interface de comunicação disposta pelo menos parcial mente no alojamento, e/ou configurada para troca de comandos e dados com um acessório; uma memória disposta no alojamento; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa com a memória e a interface de comunicação. A lógica de controle pode ser configurada para o recebimento de uma informação de protocolo de comunicação de aplicativo a partir de um dispositivo acessório através da interface de comunicação, em que a informação de protocolo de comunicação de aplicativo pode incluir uma identificação de um protocolo de comunicação de aplicativo suportado pelo acessório, e/ou em que a informação de protocolo de comunicação de aplicativo pode ser recebida a partir do acessório usando-se um protocolo de comunicação de acessório. A lógica de controle pode ser configurada para a criação de pacotes encapsulados pela encapsulação de pacotes de protocolo de comunicação de aplicativo em pacotes de protocolo de comunicação de acessório. A lógica de controle pode ser configurada para o envio dos pacotes encapsulados para o acessório através da interface de comunicação. Em algumas modalidades, o dispositivo de computação móvel pode incluir uma tabela de protocolo armazenada na memória, em que a tabela de protocolo pode incluir uma listagem de protocolos de aplicativo suportados por aplicativos instalados no dispositivo de computação móvel.
[00181] Um meio que pode ser lido em computador é mostrado, que pode conter instruções de programa que, quando executadas por um processador de um dispositivo de computação móvel, fazem com que o processador execute um método. Este método pode incluir o recebimento de uma informação de protocolo de comunicação de aplicativo a partir de um dispositivo acessório usando um protocolo de comunicação de acessório, o recebimento de dados a partir do acessório usando o protocolo de comunicação de aplicativo, e/ou a manipulação dos dados recebidos a partir do acessório. Em algumas modalidades, o método também pode incluir a exibição de pelo menos uma porção dos dados manipulados em um visor do dispositivo de computação móvel. Em algumas modalidades, o método também pode incluir o controle da funcionalidade do acessório pelo envio de comandos para o acessório usando o protocolo de comunicação de aplicativo.
[00182] Um outro método é provido para o estabelecimento de uma sessão de comunicação entre um dispositivo acessório e um aplicativo instalado no dispositivo móvel. O método pode operar no dispositivo móvel e pode incluir a comparação de uma lista de protocolos de aplicativo suportados com uma lista de protocolos de aplicativo coletados; no caso de uma combinação ser encontrada entre um protocolo de aplicativo na lista de protocolos de aplicativo suportados e um protocolo de aplicativo na lista de protocolos de aplicativo coletados, a comunicação de uma informação especificando o protocolo de aplicativo combinado para o acessório; e/ou no caso de uma combinação não ser encontrada entre um protocolo de aplicativo na lista de protocolos de aplicativo suportados e um protocolo de aplicativo na lista de protocolos de aplicativo coletados, o direcionamento de um usuário do dispositivo móvel para uma loja de aplicativo, onde um aplicativo associado a pelo menos um protocolo de aplicativo na lista de protocolos de aplicativo coletados está disponível para ser transferido (via download). Em algumas modalidades, a lista de protocolos de aplicativo suportados pode incluir um ou mais protocolos de comunicação suportados pelo aplicativo, e/ou a lista de protocolos de aplicativo coletados pode incluir um ou mais protocolos de comunicação recebidos a partir de um ou mais acessórios acoplados ao dispositivo de computação móvel. Em algumas modalidades, no caso de uma combinação ser encontrada entre um protocolo de aplicativo na lista de protocolos de aplicativo suportados e um protocolo de aplicativo na lista de protocolos de aplicativo coletados, a requisição de uma sessão de comunicação com o acessório. Em algumas modalidades, no caso de uma comunicação de uma informação especificando o protocolo de aplicativo combinado se pode incluir um identificador de sessão. Em algumas modalidades, quando uma combinação é encontrada entre um protocolo de aplicativo na lista de protocolos de aplicativo suportados e um protocolo de aplicativo na lista de protocolos de aplicativo coletados, uma comunicação com o acessório usando o protocolo de aplicativo combinado. Em algumas modalidades, a loja de aplicativo pode ser uma loja de aplicativo baseada na Internet.
[00183] Um meio que pode ser lido em computador é mostrado, que contém instruções de programa que, quando executadas por um processador de um dispositivo de computação móvel, fazem com que o processador execute um método. O método inclui determinar se um identificador de protocolo de aplicativo suportado em uma lista de protocolos suportados combina com um identificador de protocolo de aplicativo em uma lista de protocolos coletados; e/ou em resposta a encontrar uma combinação entre o protocolo de aplicativo suportado e um protocolo de aplicativo na lista de protocolos de aplicativo coletados realizar um submétodo. O submétodo inclui a iniciação de uma sessão de comunicação entre o dispositivo de computação móvel e um acessório acoplado ao dispositivo de computação móvel; a comunicação para o acessório de uma informação especificando o protocolo de aplicativo suportado; e/ou uma comunicação com o acessório a partir do dispositivo de computação móvel usando o protocolo de aplicativo suportado. Em algumas modalidades, a lista de protocolos coletados pode incluir um ou mais identificadores de protocolo de comunicação representando protocolos de aplicativo compatíveis com o acessório, e/ou a lista de protocolos suportados pode incluir um ou mais identificadores de protocolo de comunicação representando protocolos de aplicativo compatíveis com um aplicativo instalado no dispositivo de computação móvel. Em algumas modalidades, o protocolo de aplicativo suportado pode ser diferente de um protocolo de comunicação de acessório. Em algumas modalidades, as instruções de programa ainda podem fazer com que o processador transfira (via download) um aplicativo que suporte um protocolo que combine com um protocolo de aplicativo na lista de protocolos coletados em resposta a não encontrar uma combinação entre o protocolo de aplicativo suportado e um protocolo de aplicativo na lista de protocolos de aplicativo coletados.
[00184] Um outro método operando em um dispositivo de computação móvel é provido, que pode incluir o recebimento de um identificador de protocolo de aplicativo a partir de um dispositivo acessório, em que o identificador de protocolo de aplicativo recebido pode incluir uma string de dados em formato de nome de domínio reverso e pode estar associado a um protocolo de comunicação de aplicativo; e/ou determinar se o identificador de protocolo de aplicativo recebido combina com um identificador de protocolo de aplicativo listado em uma tabela de protocolo armazenada em uma memória no dispositivo de computação móvel, após isso, a comunicação com o acessório usando o protocolo de comunicação de aplicativo. Em algumas modalidades, a tabela de protocolo pode incluir um ou mais identificadores de protocolo de aplicativo associados a aplicativos executáveis no dispositivo de computação móvel. Em algumas modalidades, o método também pode incluir a execução do aplicativo associado ao identificador de protocolo de aplicativo na tabela de protocolo, no caso de o identificador de protocolo de aplicativo recebido combinar com um identificador de protocolo de aplicativo na tabela de protocolo. Em algumas modalidades, o método também pode incluir a transferência (via download) de um aplicativo com um identificador de protocolo de aplicativo associado que combina com o identificador de protocolo de aplicativo recebido.
[00185] Um dispositivo de computação móvel também é mostrado, que inclui um alojamento; uma interface de comunicação disposta pelo menos parcialmente no alojamento, e/ou configurada para a troca de comandos e dados com um acessório; uma memória disposta no alojamento, a memória configurada para manter uma lista de protocolos de aplicativo suportados; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa à memória e à interface de comunicação. Em algumas modalidades, a lógica de controle pode ser configurada para receber a partir do acessório através da interface de comunicação uma informação que identifica um protocolo de comunicação de aplicativo suportado pelo acessório. Em algumas modalidades, a lógica de controle pode ser configurada para determinar se um protocolo de comunicação de aplicativo suportado pelo acessório corresponde a um protocolo identificado em uma lista de protocolos de aplicativo suportados, em que a lista de protocolos de aplicativo suportados pode incluir um ou mais protocolos suportados pelo aplicativo instalados no dispositivo móvel. Em algumas modalidades, a lógica de controle pode ser configurada para comunicação de uma informação especificando o protocolo de aplicativo combinado com o acessório usando um protocolo de dispositivo de computação móvel no caso de uma correspondência ser determinada entre o protocolo de aplicativo suportado pelo acessório e um protocolo identificado em uma lista de protocolos de aplicativo suportados. Em algumas modalidades, a lógica de controle pode ser configurada para comunicação com o acessório usando o protocolo de aplicativo combinado.
[00186] Um outro método também é provido, que pode incluir o recebimento de uma informação de protocolo de aplicativo a partir de um acessório usando um protocolo de dispositivo de computação móvel, em que a informação de protocolo de aplicativo identifica pelo menos um protocolo de aplicativo compatível com o acessório. O método também pode incluir determinar se o protocolo de aplicativo combina com um protocolo listado em uma lista de protocolos suportados, em que a lista de protocolos suportados pode incluir um ou mais protocolos de comunicação suportados pelo menos por um aplicativo instalado no dispositivo móvel, e/ou em que cada protocolo listado na lista de protocolos suportados pode ser associado a um aplicativo. E, no caso de um protocolo de aplicativo combinar com um protocolo na lista de protocolos suportados, o método ainda pode incluir a execução do aplicativo associado ao protocolo combinado na lista suportada. Em algumas modalidades, no caso de um protocolo de aplicativo não combinar com um protocolo na lista de protocolos suportados, a transferência (via download) de um aplicativo associado ao protocolo na lista de protocolos suportados a partir da Internet.
[00187] Um outro método é provido, que pode incluir o recebimento de uma informação em um dispositivo de computação móvel a partir de um acessório, em que a informação pode compreender uma identificação de um protocolo de aplicativo; a comparação do protocolo de aplicativo com protocolos listados em uma tabela de protocolo suportado armazenada na memória em um dispositivo de computação móvel, em que a tabela de protocolo suportado pode incluir pelo menos um protocolo de aplicativo associado a um aplicativo; e/ou no caso de o protocolo de aplicativo combinar com um protocolo listado na tabela de protocolo suportado, a execução do aplicativo associado ao protocolo de aplicativo no dispositivo de computação móvel. Em algumas modalidades, a informação pode compreender uma identificação de um aplicativo preferido, que suporta o protocolo de aplicativo, e/ou no caso de o protocolo de aplicativo não combinar com um protocolo listado na tabela de protocolo suportado, a transferência (via download) do aplicativo preferido. Em algumas modalidades, a informação identificando um protocolo de aplicativo identifica o protocolo de aplicativo usando-se um formato de nome de domínio reverso. Em algumas modalidades, o método também pode incluir uma comunicação com o acessório usando o protocolo de aplicativo. Em algumas modalidades, a informação identificando um protocolo de aplicativo pode ser formatada de acordo com o protocolo de dispositivo de computação móvel.
[00188] Um dispositivo de computação móvel é provido, que inclui um alojamento; uma interface de comunicação disposta pelo menos parcial mente no alojamento, e/ou configurada para troca de comandos e de dados com um acessório; uma memória disposta no alojamento, a memória compreendendo uma lista de protocolos de aplicativo suportados que lista protocolos compatíveis com um aplicativo, em que um protocolo de aplicativo suportado pode incluir um protocolo de aplicativo suportado por um aplicativo instalado no dispositivo de computação móvel; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa à memória e à interface de comunicação. A lógica de controle é configurada para receber uma mensagem a partir de um acessório identificando um protocolo de aplicativo suportado pelo acessório; determinar se o protocolo de aplicativo combina com um protocolo de aplicativo suportado armazenado na lista de protocolos de aplicativo suportados; e/ou no caso de uma combinação ser encontrada, a execução de um aplicativo associado ao acessório suportado combinado com o protocolo de aplicativo. Em algumas modalidades, a mensagem pode ser recebida a partir do acessório e identificar um endereço baseado na Internet, onde um aplicativo pode ser encontrado, que suporta o protocolo de aplicativo. Em algumas modalidades, o método também pode incluir a transferência (via download) do aplicativo a partir do endereço baseado na Internet. Em algumas modalidades, o método também pode incluir a instalação do aplicativo no dispositivo de computação móvel e a execução do aplicativo.
[00189] Um dispositivo de computação móvel é mostrado, compreendendo um alojamento; uma interface de comunicação disposta pelo menos parcialmente no alojamento, e/ou configurada para a troca de comandos e dados com um acessório, a interface de comunicação tendo uma primeira porta de comunicação e uma segunda porta de comunicação; uma memória disposta no alojamento; e/ou uma lógica de controle disposta no alojamento e acoplada de forma comunicativa à memória e à interface de comunicação. A lógica de controle pode ser configurada para comunicação com um primeiro acessório através da primeira porta de comunicação usando um primeiro protocolo de comunicação de aplicativo; e/ou comunicação com um segundo acessório através da segunda porta de comunicação usando um segundo protocolo de comunicação de aplicativo. Em algumas modalidades, pelo menos uma dentre a primeira porta de comunicação ou a segunda porta de comunicação compreende uma porta de comunicação sem fio. Em algumas modalidades, o primeiro protocolo de comunicação de aplicativo e o segundo protocolo de comunicação de aplicativo são diferentes. Em algumas modalidades, a lógica de controle ainda pode ser configurada para comunicação com o primeiro acessório através da primeira porta de comunicação e o segundo acessório através da segunda porta de comunicação usando- se um protocolo de comunicação de acessório. Em algumas modalidades, a lógica de controle ainda pode ser configurada para o estabelecimento de uma primeira sessão de comunicação para comunicação com o primeiro acessório através da primeira porta. Em algumas modalidades, a lógica de controle ainda pode ser configurada para o estabelecimento de uma segunda sessão de comunicação para comunicação com o segundo acessório através da primeira porta. Em algumas modalidades, a interface de comunicação pode incluir uma terceira porta de comunicação e a lógica de controle ainda pode ser configurada para comunicação com um terceiro acessório através da terceira porta de comunicação, usando-se um terceiro protocolo de comunicação de aplicativo.
[00190] Um meio que pode ser lido em computador compreende instruções de programa que, quando executadas por um processador de um dispositivo de computação móvel, fazem com que o processador execute um método. Este método pode incluir a requisição de uma primeira sessão de comunicação para comunicação com um primeiro acessório; o recebimento de um identificador de sessão para a primeira sessão de comunicação; a comunicação com o primeiro acessório através da primeira sessão de comunicação usando um primeiro protocolo de aplicativo; a requisição de uma segunda sessão de comunicação para comunicação com um segundo acessório; o recebimento de um identificador de sessão para a segunda sessão de comunicação; e/ou uma comunicação com o segundo acessório através da segunda sessão de comunicação usando um segundo protocolo de aplicativo. Em algumas modalidades, o primeiro protocolo de aplicativo e o segundo protocolo de aplicativo são os mesmos. Em algumas modalidades, as instruções de programa ainda fazem com que o processador determine se o primeiro acessório ou o segundo acessório está acoplado de forma comunicativa ao dispositivo de computação móvel.
[00191] Um dispositivo de computação móvel compreende um alojamento; uma interface de comunicação disposta pelo menos parcial mente no alojamento, e/ou configurada para uma troca de comandos e de dados com uma primeira porta de comunicação e uma segunda porta de comunicação; uma memória disposta no alojamento; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa à memória e à interface de comunicação. A lógica de controle é configurada para o estabelecimento de uma primeira sessão de comunicação entre a primeira porta de comunicação e um primeiro aplicativo em execução pela lógica de controle; uma comunicação com o primeiro acessório através da primeira sessão de comunicação usando um primeiro protocolo de aplicativo; o estabelecimento de uma segunda sessão de comunicação entre a segunda porta de comunicação e um segundo aplicativo em execução pela lógica de controle; e uma comunicação com um segundo acessório através da segunda sessão de comunicação usando um segundo protocolo de aplicativo. Em algumas modalidades, a lógica de controle ainda pode ser configurada para prover um túnel para mensagens de primeiro protocolo de comunicação de aplicativo usando-se um protocolo de comunicação de acessório. Em algumas modalidades, o protocolo de comunicação de acessório pode ser diferente para o primeiro protocolo de comunicação de aplicativo. Em algumas modalidades, a lógica de controle ainda pode ser configurada para a provisão de um túnel para mensagens de segundo protocolo de comunicação de aplicativo usando um protocolo de comunicação de acessório. Em algumas modalidades, o protocolo de comunicação de acessório pode ser diferente do segundo protocolo de comunicação de aplicativo.
[00192] Um outro método de execução em um dispositivo de computação móvel é provido. O método pode incluir o recebimento de uma indicação que um acessório pode ser acoplado de forma comunicativa ao dispositivo de computação móvel em uma porta de comunicação; a determinação que o acessório suporta uma comunicação com o dispositivo de computação móvel usando um protocolo de acessório e um protocolo de aplicativo; o estabelecimento de uma sessão de comunicação entre o acessório através da porta de comunicação e um aplicativo em execução no dispositivo de computação móvel através da porta de comunicação; e/ou o envio de mensagens a partir do aplicativo para o acessório usando-se a sessão de comunicação, em que as mensagens são mensagens de protocolo de aplicativo. Em algumas modalidades, o protocolo de acessório e o protocolo de aplicativo são diferentes. Em algumas modalidades, o método pode incluir o recebimento de uma indicação a partir do acessório que o acessório suporta o protocolo de aplicativo. Em algumas modalidades, também pode incluir a encapsulação de mensagens de protocolo de aplicativo em mensagens de protocolo de acessório.
[00193] Um método para o estabelecimento de uma sessão de comunicação entre um aplicativo em execução em um dispositivo de computação móvel e um acessório em comunicação com o dispositivo de computação móvel é provido. O método pode ser executado no dispositivo de computação móvel e pode incluir o recebimento de uma requisição a partir do aplicativo quanto a uma informação relacionada ao acessório; a provisão da informação de acessório para o aplicativo, em que a informação de acessório pode compreender um identificador de pelo menos um protocolo de comunicação de aplicativo com o qual o acessório pode ser compatível; o recebimento de uma requisição quanto a uma sessão de comunicação entre o acessório e o aplicativo para comunicação usando o protocolo de comunicação de aplicativo; o recebimento de uma mensagem a partir do aplicativo, em que a mensagem pode ser formatada de acordo com o protocolo de comunicação de aplicativo; o envolvimento da mensagem com um envolvedor de protocolo de comunicação de acessório; e/ou uma comunicação da mensagem para o acessório, em que a mensagem pode ser comunicada de acordo com um protocolo de comunicação de acessório que pode ser diferente do protocolo de comunicação de aplicativo. Em algumas modalidades, o envolvedor de protocolo de comunicação de acessório pode incluir um comando de tunelamento. Em algumas modalidades, o identificador de pelo menos um protocolo de comunicação de aplicativo pode compreender o identificador provido em um formato de nome de domínio reverso. Em algumas modalidades, o método também pode incluir o recebimento de uma mensagem a partir do acessório, em que a mensagem pode ser formatada de acordo com um protocolo de comunicação de acessório, a remoção do envolvedor de protocolo de comunicação de acessório da mensagem, e/ou o envio da mensagem para o aplicativo, em que a mensagem pode ser comunicada de acordo com o protocolo de comunicação de aplicativo. Em algumas modalidades, o método também pode incluir a monitoração de uma interface de comunicação quanto a uma conectividade de acessório; e/ou, no caso de um acessório poder ser acoplado de forma comunicativa à interface de comunicação, o recebimento de uma mensagem de capacidades incluindo as capacidades de acessório, em que a mensagem pode incluir um identificador para pelo menos um protocolo de comunicação de aplicativo com o qual o acessório pode ser compatível. Em algumas modalidades, a mensagem de capacidades pode ser formatada de acordo com o protocolo de comunicação de acessório.
[00194] Um dispositivo de computação móvel pode incluir um alojamento; uma interface de comunicação disposta pelo menos parcial mente no alojamento, e/ou configurada para a troca de comandos e dados com um acessório usando um protocolo de comunicação de acessório; uma memória disposta no alojamento; e/ou uma lógica de controle disposta no alojamento, e/ou acoplada de forma comunicativa à memória e à interface de comunicação, a lógica de controle sendo configurada para a execução de um gerenciador de acessório como um processo de fundo e um aplicativo. A lógica de controle em execução como um gerenciador de acessório pode ser configurada para a monitoração da interface de comunicação quanto a um acessório ser acoplado à interface de comunicação; no caso de um acessório se tornar acoplado à interface de comunicação, o recebimento de uma informação de capacidade de acessório incluindo protocolos de aplicativo compatíveis a partir do acessório usando o protocolo de comunicação de acessório; o recebimento, a partir do acessório, de mensagens formatadas para o protocolo de comunicação de aplicativo envolvidas com um envolvedor de dispositivo de controle; a remoção do envolvedor de protocolo de comunicação de acessório das mensagens; e/ou a comunicação das mensagens para o aplicativo. Em algumas modalidades, as capacidades de acessório são recebidas usando-se o protocolo de comunicação de acessório. Em algumas modalidades, a lógica de controle em execução como um gerenciador de acessório pode ser adicionalmente configurada para o estabelecimento de um fluxo de dados de entrada, de modo que os dados possam ser lidos a partir do fluxo de dados de entrada. Em algumas modalidades, a lógica de controle em execução como um gerenciador de acessório comunica mensagens recebidas a partir do acessório para o aplicativo usando o fluxo de dados de entrada. Em algumas modalidades, a lógica de controle em execução como o gerenciador de acessório ainda pode ser configurada para: o recebimento, a partir do aplicativo, de mensagens formatadas para protocolo de comunicação de aplicativo, o envolvimento das mensagens de protocolo de comunicação de acessório com um envolvedor de protocolo de comunicação de acessório, e/ou a comunicação das mensagens para o acessório. Em algumas modalidades, a lógica de controle em execução como o gerenciador de acessório ainda pode ser configurada para o estabelecimento de um fluxo de dados de saída, de modo que dados possam ser escritos no fluxo de dados de saída pelo aplicativo e enviados para o acessório. Em algumas modalidades, a lógica de controle em execução como o gerenciador de acessório comunica mensagens recebidas a partir do fluxo de dados de saída para o acessório.
[00195] Um outro método é provido. Este método pode compreender a monitoração de uma interface de acessório do dispositivo de computação móvel quanto a uma indicação que um acessório foi acoplado de forma comunicativa à interface de acessório; no caso de um acessório poder ser acoplado de forma comunicativa à interface de acessório, o recebimento de uma informação de capacidades a partir do acessório, em que a informação de capacidades pode ser recebida usando-se um protocolo de comunicação de acessório, e/ou a informação de capacidades pode incluir uma informação indicando um ou mais protocolos de comunicação de aplicativo compatíveis com o acessório; o estabelecimento de um fluxo de dados de entrada para um aplicativo em execução no dispositivo de computação móvel, em que uma mensagem de aplicativo recebida a partir do acessório envolvido em um envolvedor de protocolo de comunicação de acessório pode se removida do envolvedor de protocolo de comunicação de acessório e escrita no aplicativo usando-se o fluxo de dados de entrada; e/ou o estabelecimento de um fluxo de dados de saída para o aplicativo, em que uma mensagem de aplicativo escrita no fluxo de dados de saída a partir do aplicativo pode ser envolvida em um envolvedor de protocolo de comunicação de acessório e enviada para o acessório através da interface de acessório. Em algumas modalidades, a interface de acessório pode compreender uma interface de comunicação sem fio. Em algumas modalidades, a informação indicando um ou mais protocolos de comunicação de aplicativo pode ser provida usando-se um formato de nome de domínio reverso.
[00196] Um método em execução em um dispositivo de computação móvel também é provido. O método pode incluir o recebimento a partir de um aplicativo em execução no dispositivo de computação móvel de uma requisição para uma sessão de comunicação entre o dispositivo de computação móvel e um acessório externo usando-se um protocolo de aplicativo; determinar se o protocolo de aplicativo pode ser suportado pelo acessório; no caso de o protocolo de aplicativo poder ser suportado pelo acessório, a provisão de um fluxo de entrada e de um fluxo de saída para o aplicativo para comunicação com o acessório usando o protocolo de aplicativo; o recebimento de uma mensagem a partir do aplicativo através do fluxo de saída, em que a mensagem pode ser formatada de acordo com o protocolo de aplicativo; o envolvimento da mensagem em uma mensagem de protocolo de acessório; e/ou o envio da mensagem para o acessório.
[00197] Em algumas modalidades, a determinação ainda pode compreender: a consulta do protocolo de aplicativo em uma tabela de consulta. Em algumas modalidades, o método pode incluir o recebimento de uma mensagem a partir do acessório, em que a mensagem pode ser uma mensagem de protocolo de aplicativo envolvida em uma mensagem de protocolo de acessório; a remoção do envoltório do envolvedor de protocolo de acessório da mensagem de protocolo de aplicativo; e/ou a escrita da mensagem de protocolo de aplicativo no fluxo de entrada do aplicativo.
[00198] Um outro método em execução em um dispositivo de computação móvel é provido. O método compreende a abertura de uma primeira sessão de comunicação entre um primeiro aplicativo e um primeiro acessório, em que a sessão de comunicação provê uma com entre o primeiro aplicativo e o primeiro acessório usando um primeiro protocolo de comunicação; o recebimento de uma primeira mensagem a partir do primeiro aplicativo; o envio da primeira mensagem para o acessório envolvido em um envolvedor de protocolo de acessório; a abertura de uma segunda sessão de comunicação entre um segundo aplicativo e o primeiro acessório, em que a sessão de comunicação provê uma comunicação entre o primeiro aplicativo e o primeiro acessório usando um segundo protocolo de comunicação, em que os primeiro e segundo protocolos de aplicativo são diferentes; e/ou o recebimento de uma segunda mensagem a partir do segundo aplicativo e o envio da segunda mensagem para o acessório envolvido no envolvedor de protocolo de acessório.
[00199] Um meio que pode ser lido em computador contendo instruções de programa que, quando executadas por um processador de um dispositivo de computação móvel, fazem com que o processador execute um método é provido. O método pode incluir requisitar uma informação de acessório a partir de um gerenciador de acessório, em que o gerenciador de acessório pode ser um processo de fundo em execução no dispositivo de computação móvel e provê uma conectividade de comunicação entre aplicativos em execução no dispositivo de computação móvel e um acessório acoplado de forma comunicativa com o dispositivo de computação móvel; no caso de um acessório poder ser acoplado de forma comunicativa ao dispositivo de computação móvel, o recebimento a partir do gerenciador de acessório de um identificador de acessório e um ou mais identificadores de protocolo especificando pelo menos um protocolo de comunicação de aplicativo compatível com o acessório; determinar se o aplicativo pode ser compatível com pelo menos um protocolo de aplicativo; no caso de o aplicativo poder ser compatível, a abertura de uma sessão para comunicação com o acessório através do gerenciador de acessório usando o protocolo de comunicação de aplicativo; e/ou uma comunicação com o acessório usando o protocolo de comunicação de aplicativo. Em algumas modalidades, um identificador de protocolo pode ser formatado usando-se uma convenção de denominação de domínio reverso. Em algumas modalidades, a comunicação com o acessório pode compreender o recebimento de um fluxo de saída a partir do gerenciador de acessório; e/ou a escrita de dados de acordo com o protocolo de comunicação de aplicativo no fluxo de entrada. Em algumas modalidades, a comunicação com o acessório pode compreender o recebimento de um fluxo de entrada a partir do gerenciador de acessório; e/ou o recebimento de dados formatados de acordo com o protocolo de comunicação de aplicativo a partir do fluxo de entrada.
[00200] Um método para um aplicativo estabelecer uma comunicação com um acessório usando um gerenciador de aplicativo. O método pode incluir o recebimento de uma indicação a partir do gerenciador de aplicativo especificando um protocolo de aplicativo compatível com o acessório; o recebimento de um fluxo de entrada e de um fluxo de saída a partir do gerenciador de aplicativo para comunicação com o acessório usando o protocolo de aplicativo; e/ou, após isso, a escrita de mensagens de protocolo de aplicativo para o acessório no fluxo de saída. Em algumas modalidades, o método pode incluir o envio de uma informação de protocolo de aplicativo para o gerenciador de aplicativo, em que a informação de protocolo de aplicativo pode incluir uma indicação dos protocolos de aplicativo suportados pelo aplicativo. Em algumas modalidades, o protocolo de aplicativo compatível com o acessório pode ser um protocolo de aplicativo indicado pela informação de protocolo de aplicativo enviada pelo objeto apresentado previamente. Em algumas modalidades, o protocolo de aplicativo indicado pela informação de protocolo de aplicativo indica um protocolo de aplicativo usando uma convenção de nome de domínio reverso.
[00201] Um método realizado por um aplicativo em execução em um dispositivo de computação móvel é mostrado. O método inclui a requisição de uma informação de acessório a partir de um gerenciador de aplicativo, em que a informação de acessório pode incluir uma informação indicando um ou mais protocolos de aplicativo suportados por um acessório acoplado de forma comunicativa a um dispositivo de computação móvel; determinar se um protocolo de aplicativo suportado pelo acessório combina com um protocolo de aplicativo suportado pelo aplicativo; no caso de protocolos de aplicativo combinarem, a requisição de um fluxo de entrada e de fluxo de saída para comunicação com o acessório usando o protocolo de aplicativo; o recebimento de um fluxo de entrada e de um fluxo de saída; e/ou, após isso, a escrita de mensagens de protocolo de aplicativo para o acessório no fluxo de saída. Em algumas modalidades, o método pode incluir a leitura de mensagens de protocolo de aplicativo a partir do acessório usando o fluxo de entrada. Em algumas modalidades, a informação de acessório indica protocolos de aplicativo usando-se a convenção de nome de domínio reverso. Em algumas modalidades, a informação de acessório pode ser armazenada em uma tabela e a informação de acessório pode ser um ponteiro para a localização de armazenamento dos metadados associados à informação de acessório.
[00202] Um método realizado por um aplicativo em execução em um dispositivo de computação móvel é provido. O método inclui o acesso a uma tabela contendo uma informação indicando um protocolo de aplicativo suportado por um acessório acoplado ao dispositivo de computação móvel; determinar se um protocolo de aplicativo suportado pelo aplicativo combina como protocolo de aplicativo na tabela; no caso de os protocolos de aplicativo combinarem, a abertura de uma sessão de comunicação para comunicação com o acessório usando-se o aplicativo combinado; o recebimento de um fluxo de entrada e de um fluxo de saída; e/ou, após isso, a escrita de mensagens de protocolo de aplicativo quanto ao acessório no fluxo de saída. Em algumas modalidades, a tabela pode incluir uma pluralidade de protocolos de aplicativo associados ao acessório, e/ou o aplicativo determina se um protocolo de aplicativo suportado pelo aplicativo combina com qualquer um dos protocolos de aplicativo na tabela. Em algumas modalidades, o método também pode incluir a leitura de uma mensagem de protocolo de aplicativo a partir do acessório usando-se o fluxo de entrada. Em algumas modalidades, a informação de acessório indica protocolos de aplicativo formatados usando-se a convenção de nome de domínio reverso.
[00203] Circuitos, módulos lógicos, processadores e/ou outros componentes podem ser descritos aqui como sendo "configurados" para a realização de várias operações. Aqueles versados na técnica reconhecerão que, dependendo da implementação, essa configuração pode ser realizada através de projeto, configuração, interconexão e/ou programação dos componentes em particular e que, de novo, dependendo da implementação, um componente configurado poderia ou não ser reconfigurável para uma operação diferente. Por exemplo, um processador programável pode ser configurado pela provisão de um código executável adequado; um circuito lógico dedicado pode ser configurado pela conexão adequadamente de portas lógicas e outros elementos de circuito; e assim por diante.
[00204] Embora as modalidades descritas acima possam fazer referência a componentes específicos de hardware e de software, aqueles versados na técnica apreciarão que diferentes combinações de componentes de hardware e/ou de software também podem ser usadas e que operações em particular descritas como sendo implementadas em hardware também poderiam ser implementadas em software ou vice-versa.
[00205] Os programas de computador incorporando vários recursos da presente invenção podem ser codificados em vários meios de armazenamento que podem ser lidos em computador; os meios adequados incluem disco magnético ou fita; meios de armazenamento ótico, tal como um disco compacto (CD) ou DVD (disco versátil digital), uma memória flash e similares. Os meios de armazenamento que podem ser lidos em computador codificados com um código de programa podem ser acondicionados com um dispositivo compatível ou providos separadamente de outros dispositivos. Além disso, um código de programa pode ser codificado e transmitido através de redes óticas com fio e/ou sem fio em conformidade com uma variedade de protocolos, incluindo a Internet, desse modo se permitindo uma distribuição, por exemplo, através de uma transferência (via download) pela Internet.
[00206] Embora os exemplos e detalhes sejam descritos nesta exposição em relação a uma única modalidade, esses exemplos ou detalhes podem ser usados em conjunto com qualquer modalidade descrita aqui.
[00207] Assim, embora a invenção tenha sido descrita com respeito a modalidades específicas, será apreciado que se pretende que a invenção cubra todas as modificações e os equivalentes no escopo das concretizações.

Claims (18)

1. Método para comunicação entre um dispositivo acessório (202, 300, 402) e um aplicativo (226, 320, 404) em execução em um dispositivo de computação móvel (200, 400), o método caracterizado pelo fato de que compreende as etapas de: comunicar, pelo dispositivo acessório (202, 300, 402), com um sistema operacional (408) em execução no dispositivo de computação móvel (200, 400) via uma primeira porta (305, 414) do dispositivo de computação móvel (200, 400) usando um protocolo de comunicação do acessório, em que o protocolo de comunicação do acessório especifica um conjunto de comandos gerais para permitir a comunicação entre qualquer acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400), em que o conjunto de comandos gerais inclui comandos que habilitam que o dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400) se identifiquem e um comando de túnel que permite uma troca de informação arbitrária entre um aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o acessório (202, 300, 402); comunicar, pelo dispositivo acessório (202, 300, 402) via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400), ao sistema operacional (408) em execução no dispositivo de computação móvel (200, 400), informações que são utilizáveis pelo sistema operacional (408) do dispositivo de computação móvel (200, 400) para identificar um protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402), as informações sendo comunicadas usando o protocolo de comunicação do acessório, em que o protocolo de comunicação do aplicativo (226, 320, 404) é distinto do protocolo de comunicação do acessório e específico para um aplicativo (226, 320, 404) específico no dispositivo de computação móvel (200,400), e em que o dispositivo de computação móvel (200, 400) utiliza um gerenciador de protocolo (304, 410) para associar o protocolo de comunicação do aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402) com a primeira porta (305, 414) em um mapa de porta (325, 412) e corresponde o aplicativo (226, 320,404) específico à primeira porta (305, 414) quando o protocolo do aplicativo (226,320,404) usado pelo aplicativo (226,320, 404) está presente e associado com a primeira porta (305,414) no mapa de porta (325, 412); e comunicar, pelo dispositivo acessório (202, 300, 402) via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400), com o aplicativo (226, 320, 404) específico em execução no dispositivo de computação móvel (200, 400) usando o protocolo de comunicação do aplicativo (226, 320, 404), em que a comunicação com o aplicativo (226, 320, 404) específico inclui: gerar uma mensagem em conformidade com o protocolo de comunicação do aplicativo (226, 320, 404); agrupar a mensagem em um comando de túnel do protocolo de comunicação do acessório; e comunicar a mensagem agrupada ao dispositivo de computação móvel (200, 400), em que a mensagem agrupada é comunicada via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400) de acordo com o protocolo de comunicação do acessório.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320, 404) inclui uma informação que especifica o protocolo de comunicação de aplicativo (226, 320, 404).
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a informação que especifica o protocolo de comunicação de aplicativo (226, 320,404) é provida em uma convenção de nome de domínio reverso.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320, 404) inclui uma informação que identifica o dispositivo acessório (202, 300, 402).
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende: receber um comando em conformidade com o protocolo de comunicação de aplicativo (226, 320, 404) a partir do aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) via a primeira porta (305, 414); e mudar um estado do dispositivo acessório (202, 300, 402), em resposta ao recebimento do comando.
6. Dispositivo acessório (202, 300, 402), compreendendo: um alojamento; uma interface de comunicação (250, 422) localizada pelo menos parcialmente dentro do alojamento e configurada para trocar comandos e dados com um dispositivo de computação móvel (200, 400), a interface de comunicação (250, 422) tendo pelo menos uma porta (422); e uma lógica de controle (260), caracterizada pelo fato de que é configurada para: comunicar com um sistema operacional (408) em execução no dispositivo de computação móvel (200, 400) via uma primeira porta (305, 414) do dispositivo de computação móvel (200, 400) usando um protocolo de comunicação do acessório, em que o protocolo de comunicação do acessório especifica um conjunto de comandos gerais para permitir a comunicação entre qualquer dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400), em que o conjunto de comandos gerais inclui comandos que habilitam que o dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400) se identifiquem e um comando de túnel que permite uma troca de informação arbitrária entre um aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o acessório (202, 300, 402); comunicar, ao sistema operacional (408) em execução no dispositivo de computação móvel (200, 400) via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400), informações que são usáveis pelo sistema operacional (408) do dispositivo de computação móvel (200, 400) para identificar um protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402), as informações sendo comunicadas usando o protocolo de comunicação do acessório, em que o protocolo de comunicação de aplicativo (226, 320, 404) é distinto do protocolo de comunicação do acessório e específico para um aplicativo (226, 320, 404) específico no dispositivo de computação móvel (200, 400), e em que o dispositivo de computação móvel (200, 400) utiliza um gerenciador de protocolo (304, 410) para associar o protocolo de comunicação do aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402) com a primeira porta (305, 414) do dispositivo de computação móvel (200, 400) em um mapa de porta (325, 412) e corresponde o aplicativo (226, 320, 404) específico à primeira porta (305, 414) quando o protocolo do aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404) está presente e associado com a primeira porta (305, 414) do dispositivo de computação móvel (200, 400) no mapa de porta (325, 412); e comunicar, via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400), com um aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) usando o protocolo de comunicação do aplicativo (226, 320, 404), em que a comunicação com o aplicativo (226, 320, 404) inclui: gerar uma mensagem em conformidade com o protocolo de comunicação do aplicativo (226, 320, 404); agrupar a mensagem em um comando de túnel do protocolo de comunicação do acessório; e comunicar a mensagem agrupada ao dispositivo de computação móvel (200, 400), em que a mensagem agrupada é comunicada via a primeira porta (305, 414) do dispositivo de computação móvel (200, 400) de acordo com o protocolo de comunicação do acessório.
7. Dispositivo acessório (202, 300, 402), de acordo com a reivindicação 6, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320,404) inclui uma informação que especifica o protocolo de comunicação de aplicativo (226, 320, 404).
8. Dispositivo acessório (202, 300, 402), de acordo com a reivindicação 6, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320,404) inclui uma informação que identifica o dispositivo acessório (202, 300, 402).
9. Dispositivo acessório (202, 300, 402), de acordo com a reivindicação 8, caracterizado pelo fato de que a informação que identifica o dispositivo acessório (202, 300, 402) inclui um fabricante do dispositivo acessório (202, 300, 402) e um modelo do dispositivo acessório (202, 300, 402).
10. Método para comunicação entre um dispositivo acessório (202, 300, 402) e um aplicativo (226, 320, 404) em execução em um dispositivo de computação móvel (200, 400), o método caracterizado pelo fato de que compreende as etapas de: comunicar, por um sistema operacional (408) em execução no dispositivo móvel de computação, com o dispositivo acessório (202, 300, 402) via uma primeira porta (305, 414) do dispositivo de computação móvel (200,400) usando um protocolo de comunicação do acessório, em que o protocolo de comunicação do acessório especifica um conjunto de comandos gerais para permitir a comunicação entre qualquer dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400), em que o conjunto de comandos gerais inclui comandos que habilitam que o dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400) se identifiquem e um comando de túnel que permite uma troca de informação arbitrária entre um aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o acessório (202, 300, 402); executar um aplicativo (226, 320, 404) que usa um protocolo de comunicação de aplicativo (226, 320, 404); receber, a partir do dispositivo acessório (202, 300, 402) via a primeira porta (305, 414), por meio do sistema operacional (408) em execução no dispositivo de computação móvel (200, 400), uma informação que é utilizável pelo sistema operacional (408) do dispositivo de computação móvel (200, 400) para identificar um protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402), a informação sendo recebida usando o protocolo de comunicação do acessório, em que o protocolo de comunicação de aplicativo (226, 320, 404) é distinto do protocolo de comunicação do acessório e específico para um aplicativo (226, 320, 404) específico no dispositivo de computação móvel (200, 400); usar um gerenciador de protocolo (304, 410) para associar o protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo acessório (202, 300, 402) com a primeira porta (305, 414) em um mapa de porta (325, 412); permitir que o aplicativo (226, 320, 404) acesse o mapa de porta (325, 412) para determinar se o protocolo de comunicação de aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404) está presente; corresponder o aplicativo (226, 320, 404) à primeira porta (305, 414) quando o protocolo de aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404) está presente e associado à primeira porta (305, 414) no mapa de porta (325, 412); e permitir, pelo dispositivo de computação móvel (200, 400), uma comunicação entre o aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o dispositivo acessório (202, 300, 402) usando o protocolo de comunicação de aplicativo (226, 320, 404) via a primeira porta (305, 414), em que permitir a comunicação entre o aplicativo (226, 320, 404) e o acessório inclui: gerar, pelo aplicativo (226, 320, 404), uma mensagem em conformidade com o protocolo de comunicação do aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404); agrupar, pelo sistema operacional (408), a mensagem em um comando de túnel do protocolo de comunicação do acessório; e comunicar, pelo sistema operacional (408), a mensagem agrupada ao dispositivo de computação móvel (200,400) via a primeira porta (305, 414), em que a mensagem agrupada é comunicada de acordo com o protocolo de comunicação do acessório.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320, 404) inclui uma informação que especifica o protocolo de comunicação de aplicativo (226, 320, 404).
12. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320, 404) inclui uma informação que identifica o dispositivo acessório (202, 300, 402).
13. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que ainda compreende: determinar se o protocolo de comunicação de aplicativo (226, 320, 404) está incluído em uma tabela de protocolo armazenada no dispositivo de computação móvel (200, 400), a tabela de protocolo identificando protocolos de comunicação de aplicativo (226, 320, 404) suportados pelos aplicativos (226, 320, 404) residentes no dispositivo de computação móvel (200, 400); e se o protocolo de comunicação de aplicativo (226, 320, 404) estiver incluído na tabela de protocolo: determinar um aplicativo (226, 320, 404) associado ao protocolo de comunicação de aplicativo (226, 320, 404) na tabela de protocolo; e executar o aplicativo (226, 320, 404) determinado.
14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que a informação que é utilizável pelo protocolo de comunicação de aplicativo (226, 320, 404) para identificar o protocolo de comunicação de aplicativo (226, 320, 404) inclui um endereço baseado em Internet em que um ou mais aplicativos (226, 320,404) que suportam o protocolo de comunicação de aplicativo (226, 320, 404) podem ser encontrados.
15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que ainda compreende, se o protocolo de comunicação de aplicativo (226, 320, 404) não estiver incluído na tabela de protocolo: transferir (via download) um ou mais aplicativos (226, 320, 404) a partir do endereço baseado na Internet para o dispositivo de computação móvel (200, 400); e atualizar a tabela de protocolo para incluir o protocolo de comunicação de aplicativo (226, 320, 404).
16. Dispositivo de computação móvel (200, 400), compreendendo: um alojamento; uma interface de comunicação (205, 305, 414) localizada pelo menos parcialmente dentro do alojamento e configurada para trocar comandos e dados com um dispositivo acessório (202, 300, 402) usando um protocolo de comunicação do acessório, a interface de comunicação (205, 305, 414) tendo pelo menos uma porta (305, 414); uma memória (225) localizada dentro do alojamento; e um processador (230) localizado dentro do alojamento e acoplado de forma comunicativa à memória (225) e à interface de comunicação (205, 305, 414), o processador (230) caracterizado pelo fato de que está configurado para: executar um sistema operacional (408); executar um aplicativo (226, 320, 404) que usa um protocolo de comunicação de aplicativo (226, 320, 404); comunicar, pelo sistema operacional (408), com o dispositivo acessório (202, 300, 402) via a primeira porta (305, 414) da interface de comunicação (205, 305, 414) usando um protocolo de comunicação do acessório, em que o protocolo de comunicação do acessório especifica um conjunto de comandos gerais para permitir uma comunicação entre qualquer dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400), em que o conjunto de comandos gerais inclui comandos que habilitam que o dispositivo acessório (202, 300, 402) e o dispositivo de computação móvel (200, 400) se identifiquem e um comando de túnel que permite uma troca de informação arbitrária entre um aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o acessório (202, 300, 402); receber, a partir do dispositivo acessório (202, 300, 402) via a primeira porta (305,414) da interface de comunicação (205,305,414), através do sistema operacional (408), uma informação que é utilizável pelo sistema operacional (408) do dispositivo de computação móvel (200, 400) para identificar um protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo dispositivo acessório (202, 300, 402), a informação sendo recebida usando um protocolo de comunicação de acessório, em que o protocolo de comunicação do aplicativo (226, 320, 404) é distinto do protocolo de comunicação do acessório e específico para um aplicativo (226, 320, 404) específico no dispositivo de computação móvel (200, 400); usar um gerenciador de protocolo (304,410) para associar o protocolo de comunicação de aplicativo (226, 320, 404) suportado pelo acessório (202, 300, 402) com a primeira porta (305, 414) em um mapa de porta (325, 412); permitir que o aplicativo (226, 320, 404) acesse o mapa de porta (325, 412) para determinar se o protocolo de comunicação de aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404) está presente; corresponder o aplicativo (226, 320, 404) à primeira porta (305, 414) quando o protocolo de aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404) está presente e associado à primeira porta (305, 414) no mapa de porta (325, 412); e permitir uma comunicação entre o aplicativo (226, 320, 404) em execução no dispositivo de computação móvel (200, 400) e o dispositivo acessório (202, 300, 402) usando o protocolo de comunicação de aplicativo (226, 320, 404) via a primeira porta (305, 414), em que permitir a comunicação entre o aplicativo (226, 320, 404) e o acessório inclui: gerar, pelo aplicativo (226, 320, 404), uma mensagem em conformidade com o protocolo de comunicação do aplicativo (226, 320, 404) usado pelo aplicativo (226, 320, 404); agrupar, pelo sistema operacional (408), a mensagem em um invólucro de protocolo de comunicação do acessório; e comunicar, pelo sistema operacional (408), a mensagem agrupada ao dispositivo acessório (202, 300, 402) via a primeira porta (305, 414), em que a mensagem agrupada é comunicada de acordo com o protocolo de comunicação do acessório.
17. Dispositivo de computação móvel (200, 400), de acordo com a reivindicação 16, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320, 404) inclui uma informação que especifica o protocolo de comunicação de aplicativo (226, 320, 404).
18. Dispositivo de computação móvel (200, 400), de acordo com a reivindicação 16, caracterizado pelo fato de que a informação que é utilizável pelo dispositivo de computação móvel (200, 400) para a identificação do protocolo de comunicação de aplicativo (226, 320,404) inclui uma informação que identifica o dispositivo acessório (202, 300, 402).
BRPI1009309-5A 2009-03-16 2010-03-11 Metodo para comunicaqao entre um dispositivo acessorio e um aplicativo em execuqao em um dispositivo de computaqao movel, dispositivo acessorio e dispositivo de computaqao movel BRPI1009309B1 (pt)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US16064409P 2009-03-16 2009-03-16
US16060109P 2009-03-16 2009-03-16
US12/720,349 2010-03-09
US12/720,375 US9069908B2 (en) 2009-03-16 2010-03-09 Accessory and mobile computing device communication using an application communication protocol
US12/720,349 US8700789B2 (en) 2009-03-16 2010-03-09 Accessory and mobile computing device communication using an application communication protocol
US12/720,423 US8554924B2 (en) 2009-03-16 2010-03-09 Connection to multiple accessories with multiple accessory-specific protocols
US12/720,446 2010-03-09
US12/720,400 2010-03-09
US12/720,423 2010-03-09
US12/720,446 US8402145B2 (en) 2009-03-16 2010-03-09 Application communication with external accessories
US12/720,489 2010-03-09
US12/720,489 US8341318B2 (en) 2009-03-16 2010-03-09 Techniques for facilitating communication between an accessory and a mobile computing device using application specific protocols
US12/720,400 US8639733B2 (en) 2009-03-16 2010-03-09 Automatic identification of compatible applications and accessories
PCT/US2010/027058 WO2010107660A1 (en) 2009-03-16 2010-03-11 Accessory and mobile computing device communication using an application communication protocol

Publications (2)

Publication Number Publication Date
BRPI1009309A2 BRPI1009309A2 (pt) 2016-03-08
BRPI1009309B1 true BRPI1009309B1 (pt) 2021-11-16

Family

ID=42153714

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI1009309-5A BRPI1009309B1 (pt) 2009-03-16 2010-03-11 Metodo para comunicaqao entre um dispositivo acessorio e um aplicativo em execuqao em um dispositivo de computaqao movel, dispositivo acessorio e dispositivo de computaqao movel

Country Status (12)

Country Link
US (10) US8402145B2 (pt)
EP (4) EP2428899A1 (pt)
JP (2) JP4842383B2 (pt)
KR (1) KR101346541B1 (pt)
CN (2) CN105162955B (pt)
AU (1) AU2010226111B2 (pt)
BR (1) BRPI1009309B1 (pt)
DE (1) DE112010001170B4 (pt)
GB (1) GB2481349B (pt)
HK (1) HK1164584A1 (pt)
MX (1) MX2011009737A (pt)
WO (1) WO2010107660A1 (pt)

Families Citing this family (249)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101961052B1 (ko) 2007-09-24 2019-03-21 애플 인크. 전자 장치 내의 내장형 인증 시스템들
US8600120B2 (en) 2008-01-03 2013-12-03 Apple Inc. Personal computing device control using face detection and recognition
WO2012066544A1 (en) * 2010-11-16 2012-05-24 Modu Ltd. Cooperative tablet computer and mobile communicator
US8630684B2 (en) * 2008-12-08 2014-01-14 Verizon Patent And Licensing Inc. Accessory devices for mobile phones
US8082312B2 (en) 2008-12-12 2011-12-20 Event Medical, Inc. System and method for communicating over a network with a medical device
US20120081207A1 (en) * 2010-09-30 2012-04-05 Apple Inc. Application launching in conjunction with an accessory
US8402145B2 (en) * 2009-03-16 2013-03-19 Apple Inc. Application communication with external accessories
US20110029864A1 (en) * 2009-07-30 2011-02-03 Aaron Michael Stewart Touch-Optimized Approach for Controlling Computer Function Using Touch Sensitive Tiles
US20110055380A1 (en) * 2009-09-03 2011-03-03 Yockey Robert F Network providing automatic connections between devices based on user task
US8364745B2 (en) 2009-11-24 2013-01-29 International Business Machines Corporation Service oriented architecture enterprise service bus with universal ports
US7865629B1 (en) * 2009-11-24 2011-01-04 Microsoft Corporation Configurable connector for system-level communication
US8719112B2 (en) * 2009-11-24 2014-05-06 Microsoft Corporation Invocation of accessory-specific user experience
US8171094B2 (en) 2010-01-19 2012-05-01 Event Medical, Inc. System and method for communicating over a network with a medical device
US8346310B2 (en) * 2010-02-05 2013-01-01 Ford Global Technologies, Llc Method and apparatus for communication between a vehicle based computing system and a remote application
US8433828B2 (en) 2010-02-26 2013-04-30 Apple Inc. Accessory protocol for touch screen device accessibility
US8886709B2 (en) * 2010-05-21 2014-11-11 Blackberry Limited System and method for efficient image and document upload
WO2011149857A1 (en) * 2010-05-24 2011-12-01 Abbott Diabetes Care Inc. Method and system for updating a medical device
US8347014B2 (en) * 2010-06-04 2013-01-01 Apple Inc. Class-based compatibility testing and notification
US9098548B1 (en) * 2010-06-14 2015-08-04 Open Invention Network, Llc Method and apparatus for accessing a data source from a client using a driver
US9022279B2 (en) 2010-06-15 2015-05-05 Apple Inc. Method and system for locating an accessory and an application for use with a user device
ES2925983T3 (es) 2010-07-27 2022-10-20 Genomic Health Inc Método para usar la expresión génica para determinar el pronóstico del cáncer de próstata
US8648970B2 (en) * 2010-08-02 2014-02-11 Chip Goal Electronics Corporation, Roc Remote controllable video display system and controller and method therefor
US9363348B2 (en) * 2010-10-13 2016-06-07 Plantronics, Inc. Device and process for customizing a headset or other audio device
US8412235B1 (en) * 2010-11-08 2013-04-02 West Corporation Method and apparatus of requesting customized location information at a mobile station
US9344860B2 (en) 2010-11-12 2016-05-17 Maximilian Leroux Mobile device control with external device
US20120123222A1 (en) * 2010-11-15 2012-05-17 Pensiero Medical Electronics Corp. Biomedical devcie capable of using an earphone and microphone plug to transmit data and method for transmitting data
US9141780B2 (en) * 2010-11-22 2015-09-22 Smsc Holdings S.A.R.L. Method and system for authenticating communication
FR2971657A1 (fr) * 2011-02-11 2012-08-17 Alcatel Lucent Determination d'objets reels actifs pour mise en œuvre d'une application logicielle
US20120254329A1 (en) * 2011-03-31 2012-10-04 Majeti Venkata C Selectable activation/deactivation of features of applications on end user communication devices
US8566842B2 (en) 2011-04-01 2013-10-22 International Business Machines Corporation Identification of a protocol used in a message
US9692611B1 (en) * 2011-04-06 2017-06-27 Google Inc. Context-based sensor selection
FR2974260B1 (fr) * 2011-04-13 2013-09-06 Ingenico Sa Procede de multiplexage de message, dispositif et programme correspondant
US8819448B2 (en) * 2011-04-29 2014-08-26 Georgetown University Method and system for managing information on mobile devices
EP2710487A4 (en) 2011-05-09 2015-06-17 Google Inc GENERATING APPLICATION RECOMMENDATIONS BASED ON USER INSTALLED APPLICATIONS
EP2710465A1 (en) 2011-05-09 2014-03-26 Google, Inc. Identifying applications of interest based on application market log data
EP2710466A1 (en) 2011-05-09 2014-03-26 Google, Inc. Identifying applications of interest based on application metadata
CN103930871B (zh) 2011-05-09 2019-07-09 谷歌有限责任公司 基于安装历史给移动设备推荐应用
US9157953B2 (en) 2011-05-13 2015-10-13 Apple Inc. Test systems with cables that support multiple communications buses
US8806583B2 (en) * 2011-05-17 2014-08-12 GM Global Technology Operations LLC Remote video source authentication protocol
US9148470B2 (en) * 2011-05-26 2015-09-29 Candi Control, Inc. Targeting delivery data
US20120307078A1 (en) * 2011-06-03 2012-12-06 Microsoft Corporation Automatic sharing and replacement of content based on network connectivity
US8838261B2 (en) * 2011-06-03 2014-09-16 Apple Inc. Audio configuration based on selectable audio modes
US20120309289A1 (en) * 2011-06-06 2012-12-06 Apple Inc. Techniques for facilitating interoperation between an accessory and multiple devices
KR101769798B1 (ko) * 2011-06-08 2017-08-21 삼성전자 주식회사 액세서리 특성 설정 방법 및 이를 지원하는 액세서리 운용 시스템
US9325378B2 (en) * 2011-06-14 2016-04-26 Broadcom Corporation Computing device multiple display topology detection over radio
US9529752B2 (en) 2011-07-25 2016-12-27 Ford Global Technologies, Llc Method and apparatus for communication between a vehicle based computing system and a remote application
WO2013025254A1 (en) * 2011-08-12 2013-02-21 Emmoco, Inc. Embedded device application development
US20130045677A1 (en) * 2011-08-17 2013-02-21 Ho-Sung Chien Telematics System and Related Mobile Device and Method
US20130052946A1 (en) * 2011-08-23 2013-02-28 Manjirnath Chatterjee Home automation using a mobile device
US8909149B2 (en) * 2011-08-26 2014-12-09 Hewlett-Packard Development Company, L.P. Media module of a device
US20130060574A1 (en) * 2011-09-07 2013-03-07 Lee H. Perlman Provision of a mobile health product
US20130066650A1 (en) * 2011-09-07 2013-03-14 Happtique, Inc. Provision of a Mobile Health Product
TW201312340A (zh) * 2011-09-09 2013-03-16 Askey Technology Jiangsu Ltd 手持式電子裝置的測試系統及方法
EP2745493A4 (en) * 2011-09-12 2015-02-25 Nokia Corp METHOD AND DEVICE FOR STARTING AN APPLICATION IDENTIFIED BY A SENSOR
US8838845B2 (en) * 2011-09-23 2014-09-16 Qualcomm Incorporated Multimedia interface with content protection in a wireless communication device
US9002322B2 (en) 2011-09-29 2015-04-07 Apple Inc. Authentication with secondary approver
US8494585B2 (en) * 2011-10-13 2013-07-23 The Boeing Company Portable communication devices with accessory functions and related methods
US8930492B2 (en) 2011-10-17 2015-01-06 Blackberry Limited Method and electronic device for content sharing
US9071740B1 (en) 2011-10-28 2015-06-30 Google Inc. Modular camera system
US9182965B2 (en) * 2011-10-31 2015-11-10 Nokia Technologies Oy Method and apparatus for developing socially suitable applications and devices
US8989094B2 (en) * 2011-11-22 2015-03-24 Wifiname, Inc. Systems and methods for generating and displaying application information on a wireless station
KR101908947B1 (ko) * 2011-11-23 2018-10-17 삼성전자주식회사 외장 기기 연결을 위한 방법 및 장치
US9134969B2 (en) 2011-12-13 2015-09-15 Ipar, Llc Computer-implemented systems and methods for providing consistent application generation
US20130191575A1 (en) * 2011-12-21 2013-07-25 Hendricks Investment Holdings, Llc Methods and systems for providing alternative storage resources
KR101978305B1 (ko) * 2011-12-30 2019-08-29 삼성전자주식회사 디스플레이장치, 업그레이드장치, 디스플레이 시스템 및 그 제어방법
EP2610857A1 (en) * 2011-12-30 2013-07-03 Samsung Electronics Co., Ltd. Display apparatus, upgrading apparatus, display system and control method thereof
US9537968B1 (en) * 2012-01-06 2017-01-03 Google Inc. Communication of socket protocol based data over a storage protocol based interface
US9197686B1 (en) 2012-01-06 2015-11-24 Google Inc. Backfill of video stream
US20140195582A1 (en) * 2013-01-10 2014-07-10 Packetvideo Corporation System and method for providing an inter-application communication framework
EP2615806B8 (en) 2012-01-16 2017-11-22 GN Audio A/S Call management through a hands free communication device
US20130198029A1 (en) * 2012-01-26 2013-08-01 Microsoft Corporation Application recommendation and substitution
US9083546B2 (en) * 2012-01-31 2015-07-14 Rajendra Padma Sadhu System and method for communicating health parameters of an occupant in an automobile and a dynamic operation of the automobile and home automation
US8996588B2 (en) * 2012-02-02 2015-03-31 Salesforce.Com, Inc. Mechanism for facilitating dynamic management of assets in an on-demand services environment
US9026563B2 (en) 2012-02-02 2015-05-05 Salesforce.Com, Inc. Mechanism for facilitating dynamic social media-based management of assets in an on-demand services environment
CN103246834B (zh) * 2012-02-07 2016-08-17 联想(北京)有限公司 控制方法和电子设备
CN103257780A (zh) * 2012-02-20 2013-08-21 联想(北京)有限公司 显示屏幕旋转方法和电子设备
US9207713B1 (en) * 2012-03-15 2015-12-08 Amazon Technologies, Inc. Location-based device docking
US8910147B2 (en) * 2012-04-17 2014-12-09 Asustek Computer Inc. Application installation method and mobile device
US8755404B2 (en) 2012-04-25 2014-06-17 Gainspan Corporation Facilitating communication between resource-constrained devices and wireless communication terminals
US11216854B2 (en) 2012-04-27 2022-01-04 Blackberry Limited Software distribution accounting
US9167393B2 (en) 2012-05-02 2015-10-20 Nextlink Ipr Ab Cable chip system
CN104871193B (zh) * 2012-05-09 2019-01-04 谷歌有限责任公司 基于用户反馈生成应用推荐的计算机实现的系统和方法
US8832750B2 (en) * 2012-05-10 2014-09-09 Time Warner Cable Enterprises Llc Media synchronization within home network using set-top box as gateway
US9014183B2 (en) * 2012-05-24 2015-04-21 Apple Inc. Buffer transfer service
CN104508590A (zh) * 2012-05-24 2015-04-08 波普斯莱特传媒公司 用于移动计算设备的动态可变的装饰性防护附件
US20130332632A1 (en) * 2012-06-08 2013-12-12 Apple Inc. Holistic identification of an electronic device
US9306879B2 (en) * 2012-06-08 2016-04-05 Apple Inc. Message-based identification of an electronic device
US20140006276A1 (en) * 2012-06-28 2014-01-02 Bank Of America Corporation Mobile wallet account number differentiation
GB2503707A (en) * 2012-07-05 2014-01-08 Martin Richard Lambert A smartphone based remote monitoring and control system including a microcontroller unit to which are coupled one or more sensors and/or actuators
CN102779540A (zh) * 2012-08-08 2012-11-14 深圳乐投卡尔科技有限公司 基于Android平台控制iPod播放的方法
US9591339B1 (en) 2012-11-27 2017-03-07 Apple Inc. Agnostic media delivery system
US9774917B1 (en) 2012-12-10 2017-09-26 Apple Inc. Channel bar user interface
US10200761B1 (en) 2012-12-13 2019-02-05 Apple Inc. TV side bar user interface
US9532111B1 (en) 2012-12-18 2016-12-27 Apple Inc. Devices and method for providing remote control hints on a display
KR101358352B1 (ko) 2012-12-26 2014-02-07 주식회사 옥타컴 Usb 인터페이스 장치 및 usb 데이터 송수신 방법
US10521188B1 (en) 2012-12-31 2019-12-31 Apple Inc. Multi-user TV user interface
US9477483B2 (en) * 2013-01-03 2016-10-25 Tapjoy, Inc. Tracking mobile app installations
WO2014107629A1 (en) 2013-01-04 2014-07-10 Vuzix Corporation Interactive wearable and portable smart devices
US9954987B2 (en) 2013-02-06 2018-04-24 Analogix Semiconductor, Inc. Remote controller utilized with charging dock for controlling mobile device
WO2014134538A1 (en) 2013-02-28 2014-09-04 Xaptum, Inc. Systems, methods, and devices for adaptive communication in a data communication network
KR101503770B1 (ko) * 2013-03-04 2015-03-18 주식회사 코런 개방형 스마트 앱세서리
US20140259028A1 (en) * 2013-03-05 2014-09-11 Google Inc. Mechanism for establishing temporary background communication between applications
CN103186319A (zh) * 2013-03-11 2013-07-03 北京小米科技有限责任公司 桌面的显示方法和装置
US10357606B2 (en) 2013-03-13 2019-07-23 Tandem Diabetes Care, Inc. System and method for integration of insulin pumps and continuous glucose monitoring
US20140280451A1 (en) * 2013-03-14 2014-09-18 Ford Global Technologies, Llc Method and Apparatus for Mobile Device Connectivity Compatibility Facilitation
US10204331B2 (en) 2013-03-15 2019-02-12 Worldpay, Llc Conducting a transaction at a mobile POS terminal using a defined structure
US9242043B2 (en) 2013-03-15 2016-01-26 Tandem Diabetes Care, Inc. Field update of an ambulatory infusion pump system
KR102163357B1 (ko) 2013-05-21 2020-10-08 삼성전자주식회사 애플리케이션 관리 방법 및 장치
US20140351832A1 (en) * 2013-05-21 2014-11-27 Samsung Electronics Co., Ltd. Electronic device using framework interface for communication
US9331894B2 (en) * 2013-05-31 2016-05-03 International Business Machines Corporation Information exchange in data center systems
US10205769B2 (en) * 2013-05-31 2019-02-12 Itron, Inc. Distributed applications across platforms
US11328344B2 (en) 2013-05-31 2022-05-10 Itron, Inc. Utility application delivery platform
US9342288B2 (en) * 2013-05-31 2016-05-17 Itron, Inc. Surfacing cross platform applications
MA20150009A1 (fr) * 2013-06-06 2015-01-30 Univ Internationale De Rabat Privee Uir Systeme de localisation du telephone portable en mode off
US9730268B2 (en) 2013-06-07 2017-08-08 Apple Inc. Communication between host and accessory devices using accessory protocols via wireless transport
US9720467B2 (en) * 2013-08-09 2017-08-01 Qualcomm Incorporated Thermal mitigation adaptation for a mobile electronic device
US9378723B2 (en) 2013-08-22 2016-06-28 Qualcomm Incorporated Apparatus and method for acquiring configuration data
US9584601B2 (en) * 2013-08-29 2017-02-28 Telenav, Inc. Communication system with transport link mechanism and method of operation thereof
KR102088018B1 (ko) * 2013-09-03 2020-05-27 삼성전자주식회사 전자 기기간 연동 방법 및 장치
US9898642B2 (en) 2013-09-09 2018-02-20 Apple Inc. Device, method, and graphical user interface for manipulating user interfaces based on fingerprint sensor inputs
US9819661B2 (en) 2013-09-12 2017-11-14 The Boeing Company Method of authorizing an operation to be performed on a targeted computing device
US9497221B2 (en) 2013-09-12 2016-11-15 The Boeing Company Mobile communication device and method of operating thereof
US10064240B2 (en) 2013-09-12 2018-08-28 The Boeing Company Mobile communication device and method of operating thereof
US9588591B2 (en) 2013-10-10 2017-03-07 Google Technology Holdings, LLC Primary device that interfaces with a secondary device based on gesture commands
CA2964854A1 (en) * 2013-10-22 2015-04-30 Kindara, Inc. Integrated wireless fertility tracking system
KR101952928B1 (ko) 2013-10-30 2019-02-27 애플 인크. 관련 사용자 인터페이스 객체를 표시
CN105706023B (zh) * 2013-10-31 2019-01-15 惠普发展公司,有限责任合伙企业 与不支持的输入设备的通信
US9251109B2 (en) * 2013-12-20 2016-02-02 EXILANT Technologies Private Limited Communication with accessories
WO2015100340A1 (en) 2013-12-26 2015-07-02 Tandem Diabetes Care, Inc. Safety processor for wireless control of a drug delivery device
US10324987B2 (en) * 2013-12-31 2019-06-18 Samsung Electronics Co., Ltd. Application search using device capabilities
CN103796080B (zh) * 2014-01-06 2018-08-31 联想(北京)有限公司 一种数据处理方法与电子设备
US9577902B2 (en) 2014-01-06 2017-02-21 Ford Global Technologies, Llc Method and apparatus for application launch and termination
US10849502B2 (en) 2014-02-10 2020-12-01 Samsung Electronics Co., Ltd. System and method for providing health data of peripheral device
US20150271307A1 (en) 2014-03-21 2015-09-24 Motorola Mobility Llc Modular Device and Methods Therefor
KR102233378B1 (ko) 2014-04-07 2021-03-29 삼성전자주식회사 이동 단말과 연결된 착용형 기기의 동작 방법 및 그 착용형 기기
US20150293918A1 (en) * 2014-04-11 2015-10-15 Wesley W. Whitmyer, Jr. Web Searching Software Promoting Results Of Websites Formatted For Mobile Devices
CN111698669A (zh) * 2014-04-15 2020-09-22 华为技术有限公司 共享应用信息方法和装置
EP3134817A4 (en) * 2014-04-24 2017-12-13 Hewlett-Packard Development Company, L.P. Mobile device support for sensors in peripherals
US10482461B2 (en) 2014-05-29 2019-11-19 Apple Inc. User interface for payments
CN111782128B (zh) 2014-06-24 2023-12-08 苹果公司 用于在用户界面中导航的列界面
WO2016021743A1 (ko) * 2014-08-04 2016-02-11 에스피테크놀러지주식회사 공통 프로토콜을 이용하는 통신 단말기 및 그 제어방법
JP6035387B2 (ja) 2014-08-05 2016-11-30 三菱樹脂株式会社 積層多孔フィルム、非水電解液二次電池用セパレータ、非水電解液二次電池、スラリー、及び塗工液
US9420087B2 (en) 2014-09-02 2016-08-16 Apple Inc. Notifications with custom user interface
US10592187B2 (en) 2014-09-02 2020-03-17 Apple Inc. Accessory device operation with user mobile device over network connection
US9769301B2 (en) 2014-09-02 2017-09-19 Apple Inc. Accessory device application bundling
US10066959B2 (en) 2014-09-02 2018-09-04 Apple Inc. User interactions for a mapping application
US10602082B2 (en) 2014-09-17 2020-03-24 Fluke Corporation Triggered operation and/or recording of test and measurement or imaging tools
US9568368B2 (en) * 2014-09-17 2017-02-14 Fluke Corporation Mobile device used with isolated test and measurement input block
WO2016065261A1 (en) 2014-10-24 2016-04-28 Fluke Corporation Imaging system employing fixed, modular mobile, and portable infrared cameras with ability to receive, communicate, and display data and images with proximity detection
US9572104B2 (en) * 2015-02-25 2017-02-14 Microsoft Technology Licensing, Llc Dynamic adjustment of user experience based on system capabilities
CN104778143B (zh) * 2015-03-20 2018-06-01 飞天诚信科技股份有限公司 主动与苹果设备连接并进行通信的方法和苹果设备附件
KR102335913B1 (ko) * 2015-04-02 2021-12-06 삼성전자주식회사 전자 장치의 보조 입력 장치 및 그의 기능 실행 방법
US10280386B2 (en) * 2015-04-03 2019-05-07 Ecolab Usa Inc. Enhanced peroxygen stability in multi-dispense TAED-containing peroxygen solid
US9763024B2 (en) * 2015-04-09 2017-09-12 Yahoo Holdings, Inc. Mobile ghosting
US10373190B2 (en) 2015-05-13 2019-08-06 Shelfbucks, Inc. System and methods for determining location of pop displays with wireless beacons through engagement with mobile devices
US9544485B2 (en) 2015-05-27 2017-01-10 Google Inc. Multi-mode LED illumination system
US9940637B2 (en) 2015-06-05 2018-04-10 Apple Inc. User interface for loyalty accounts and private label accounts
US20160358133A1 (en) 2015-06-05 2016-12-08 Apple Inc. User interface for loyalty accounts and private label accounts for a wearable device
US9613423B2 (en) 2015-06-12 2017-04-04 Google Inc. Using a depth map of a monitored scene to identify floors, walls, and ceilings
US9554063B2 (en) 2015-06-12 2017-01-24 Google Inc. Using infrared images of a monitored scene to identify windows
US9235899B1 (en) 2015-06-12 2016-01-12 Google Inc. Simulating an infrared emitter array in a video monitoring camera to construct a lookup table for depth determination
US9886620B2 (en) 2015-06-12 2018-02-06 Google Llc Using a scene illuminating infrared emitter array in a video monitoring camera to estimate the position of the camera
US9626849B2 (en) 2015-06-12 2017-04-18 Google Inc. Using scene information from a security camera to reduce false security alerts
US9454820B1 (en) 2015-06-12 2016-09-27 Google Inc. Using a scene illuminating infrared emitter array in a video monitoring camera for depth determination
US9489745B1 (en) 2015-06-12 2016-11-08 Google Inc. Using depth maps of a scene to identify movement of a video camera
US9386230B1 (en) 2015-06-12 2016-07-05 Google Inc. Day and night detection based on one or more of illuminant detection, lux level detection, and tiling
EP3319540B1 (en) * 2015-07-07 2024-01-24 Intuitive Surgical Operations, Inc. Control of multiple devices
CN108353266B (zh) * 2015-08-20 2022-05-10 惠普发展公司,有限责任合伙企业 外围设备配对
US20170078544A1 (en) 2015-09-16 2017-03-16 Fluke Corporation Electrical isolation for a camera in a test and measurement tool
WO2017070629A1 (en) 2015-10-23 2017-04-27 Fluke Corporation Imaging tool for vibration and/or misalignment analysis
US10980911B2 (en) 2016-01-21 2021-04-20 Global Plasma Solutions, Inc. Flexible ion generator device
US11399995B2 (en) 2016-02-23 2022-08-02 Deka Products Limited Partnership Mobility device
US10926756B2 (en) 2016-02-23 2021-02-23 Deka Products Limited Partnership Mobility device
US10893028B2 (en) * 2017-05-20 2021-01-12 Deka Products Limited Partnership System and method for secure remote control of a medical device
US10908045B2 (en) 2016-02-23 2021-02-02 Deka Products Limited Partnership Mobility device
US10541987B2 (en) 2016-02-26 2020-01-21 Tandem Diabetes Care, Inc. Web browser-based device communication workflow
US10055368B2 (en) * 2016-02-26 2018-08-21 Sandisk Technologies Llc Mobile device and method for synchronizing use of the mobile device's communications port among a plurality of applications
US10749986B2 (en) 2016-04-11 2020-08-18 Samsung Electronics Co., Ltd. Platform for interaction via commands and entities
US10621581B2 (en) 2016-06-11 2020-04-14 Apple Inc. User interface for transactions
CN114693289A (zh) 2016-06-11 2022-07-01 苹果公司 用于交易的用户界面
DK201670622A1 (en) 2016-06-12 2018-02-12 Apple Inc User interfaces for transactions
DK201670581A1 (en) 2016-06-12 2018-01-08 Apple Inc Device-level authorization for viewing content
DK201670582A1 (en) 2016-06-12 2018-01-02 Apple Inc Identifying applications on which content is available
US10346457B2 (en) * 2016-07-27 2019-07-09 Microsoft Technology Licensing, Llc Platform support clusters from computer application metadata
WO2018022312A1 (en) * 2016-07-29 2018-02-01 CIS Secure Computing, Inc. Positive disconnect unit
US11695259B2 (en) 2016-08-08 2023-07-04 Global Plasma Solutions, Inc. Modular ion generator device
US11283245B2 (en) 2016-08-08 2022-03-22 Global Plasma Solutions, Inc. Modular ion generator device
US10564803B2 (en) 2016-08-18 2020-02-18 Samsung Electronics Co., Ltd. Selecting application that can handle data content
US10624019B2 (en) * 2016-08-30 2020-04-14 Hyungkoo Lee Wireless transceiver system
US10650621B1 (en) 2016-09-13 2020-05-12 Iocurrents, Inc. Interfacing with a vehicular controller area network
US11188947B2 (en) 2016-10-05 2021-11-30 Abl Ip Holding, Llc Analyzing movement of data collectors/gateways associated with retail displays
US10496808B2 (en) 2016-10-25 2019-12-03 Apple Inc. User interface for managing access to credentials for use in an operation
US11966560B2 (en) 2016-10-26 2024-04-23 Apple Inc. User interfaces for browsing content from multiple content applications on an electronic device
US10180615B2 (en) 2016-10-31 2019-01-15 Google Llc Electrochromic filtering in a camera
CN106603860A (zh) * 2016-12-30 2017-04-26 百度在线网络技术(北京)有限公司 通信连接建立方法及系统、移动终端与车载设备
JP6719120B2 (ja) * 2017-01-25 2020-07-08 株式会社ルースヒースガーデン 防犯システム、防犯方法、および、防犯プログラム
CN107241485A (zh) * 2017-04-19 2017-10-10 太仓诚泽网络科技有限公司 一种采用网关自动识别多媒体格式的方法
TWI637314B (zh) * 2017-05-10 2018-10-01 趙平 智慧型耳機裝置個人化系統及其使用方法
US11170409B2 (en) 2017-05-19 2021-11-09 Abl Ip Holding, Llc Wireless beacon based systems utilizing printable circuits
EP3635968A4 (en) * 2017-06-05 2021-03-10 Commscope Technologies LLC BAY CONTROL DEVICE WITH NATIVE SUPPORT FOR INTELLIGENT CONNECTION EQUIPMENT INSTALLED IN MULTIPLE BAYS
KR102367053B1 (ko) * 2017-07-13 2022-02-24 삼성전자주식회사 외부 전자 장치와 통신을 수행하기 위한 전자 장치
KR102301599B1 (ko) 2017-09-09 2021-09-10 애플 인크. 생체측정 인증의 구현
KR102185854B1 (ko) 2017-09-09 2020-12-02 애플 인크. 생체측정 인증의 구현
CN111093507B (zh) * 2017-09-13 2021-09-21 万睿视影像有限公司 X射线成像部件通信系统和协议
US10425335B2 (en) * 2017-09-19 2019-09-24 Sap Se Reconstructing message flows based on hash values
US11057352B2 (en) 2018-02-28 2021-07-06 Xaptum, Inc. Communication system and method for machine data routing
US10965653B2 (en) 2018-03-28 2021-03-30 Xaptum, Inc. Scalable and secure message brokering approach in a communication system
CN108665232A (zh) * 2018-04-16 2018-10-16 中山易美信息技术有限公司 一种手机端办公自动化系统
US10805439B2 (en) 2018-04-30 2020-10-13 Xaptum, Inc. Communicating data messages utilizing a proprietary network
US10454503B1 (en) * 2018-05-18 2019-10-22 Aram Falsafi System and method for wireless communication with improved protocol support
US11170085B2 (en) 2018-06-03 2021-11-09 Apple Inc. Implementation of biometric authentication
US10924593B2 (en) 2018-08-31 2021-02-16 Xaptum, Inc. Virtualization with distributed adaptive message brokering
US11100349B2 (en) 2018-09-28 2021-08-24 Apple Inc. Audio assisted enrollment
US10860096B2 (en) 2018-09-28 2020-12-08 Apple Inc. Device control using gaze information
CN109508276B (zh) * 2018-11-09 2023-03-14 四川长虹电器股份有限公司 提高Android平台上设备工厂检测效率的方法
US10938877B2 (en) 2018-11-30 2021-03-02 Xaptum, Inc. Optimizing data transmission parameters of a proprietary network
US10912053B2 (en) 2019-01-31 2021-02-02 Xaptum, Inc. Enforcing geographic restrictions for multitenant overlay networks
WO2020171838A1 (en) 2019-02-19 2020-08-27 Tandem Diabetes Care, Inc. System and method of pairing an infusion pump with a remote control device
WO2020171248A1 (ko) * 2019-02-19 2020-08-27 모비케이 주식회사 무선인증 기반의 악세서리를 이용한 온라인 콘텐츠 제공 시스템 및 이에 사용되는 스마트폰 케이스
US11363004B2 (en) 2019-03-08 2022-06-14 International Business Machines Corporation Secure device relay
US11328352B2 (en) 2019-03-24 2022-05-10 Apple Inc. User interfaces for managing an account
CN113906419A (zh) 2019-03-24 2022-01-07 苹果公司 用于媒体浏览应用程序的用户界面
CN113940088A (zh) 2019-03-24 2022-01-14 苹果公司 用于查看和访问电子设备上的内容的用户界面
US11683565B2 (en) 2019-03-24 2023-06-20 Apple Inc. User interfaces for interacting with channels that provide content that plays in a media browsing application
WO2020198237A1 (en) 2019-03-24 2020-10-01 Apple Inc. User interfaces including selectable representations of content items
EP3946514A4 (en) 2019-03-26 2022-12-21 Tandem Diabetes Care, Inc. METHOD OF PAIRING AN INFUSION PUMP WITH A REMOTE CONTROL DEVICE
CN113906380A (zh) 2019-05-31 2022-01-07 苹果公司 用于播客浏览和回放应用程序的用户界面
US11863837B2 (en) 2019-05-31 2024-01-02 Apple Inc. Notification of augmented reality content on an electronic device
US11481094B2 (en) 2019-06-01 2022-10-25 Apple Inc. User interfaces for location-related communications
US11477609B2 (en) 2019-06-01 2022-10-18 Apple Inc. User interfaces for location-related communications
US11581709B2 (en) 2019-06-07 2023-02-14 Global Plasma Solutions, Inc. Self-cleaning ion generator device
CN110166630B (zh) * 2019-06-23 2021-06-29 重庆安连普电子有限公司 一种基于Type-C接口对手机网络安全监控的方法及系统
CN114365073A (zh) 2019-09-29 2022-04-15 苹果公司 账户管理用户界面
US11169830B2 (en) 2019-09-29 2021-11-09 Apple Inc. Account management user interfaces
CN111045750B (zh) * 2019-12-19 2023-07-07 飞天诚信科技股份有限公司 多应用设备上自动匹配应用程序的方法及电子设备
CN113254367A (zh) * 2020-02-11 2021-08-13 合肥杰发科技有限公司 一种基于iAP1协议的命令处理方法、电子设备以及存储介质
US11843838B2 (en) 2020-03-24 2023-12-12 Apple Inc. User interfaces for accessing episodes of a content series
DK180985B1 (da) 2020-04-10 2022-09-02 Apple Inc Brugergrænseflader for muliggørelse af en aktivitet
US11816194B2 (en) 2020-06-21 2023-11-14 Apple Inc. User interfaces for managing secure operations
US11899895B2 (en) 2020-06-21 2024-02-13 Apple Inc. User interfaces for setting up an electronic device
CN114265601A (zh) * 2020-09-16 2022-04-01 伊姆西Ip控股有限责任公司 管理人工智能应用的方法、设备和程序产品
CN112165480B (zh) * 2020-09-22 2022-11-11 北京字跳网络技术有限公司 信息获取方法、装置和电子设备
FR3115130B1 (fr) * 2020-10-09 2023-04-14 Safran Electronics & Defense Procédé et système de gestion de compatibilité entre deux équipements
WO2022086566A1 (en) * 2020-10-23 2022-04-28 Hewlett-Packard Development Company, L.P. Event-based commands
US11973737B2 (en) * 2020-11-11 2024-04-30 Twilio Inc. System and method for automatically transitioning between carrier and IP messaging
US11720229B2 (en) 2020-12-07 2023-08-08 Apple Inc. User interfaces for browsing and presenting content
US11934640B2 (en) 2021-01-29 2024-03-19 Apple Inc. User interfaces for record labels
AU2022388574A1 (en) * 2021-11-09 2024-05-30 Audeo LLC Systems and methods for providing and using wearable electronic accessories
CN116502197A (zh) 2022-01-19 2023-07-28 戴尔产品有限公司 计算机实现的方法、设备和计算机程序产品

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05252228A (ja) * 1992-03-02 1993-09-28 Mitsubishi Electric Corp データ伝送装置及びその通信路管理方法
US5596723A (en) * 1994-06-23 1997-01-21 Dell Usa, Lp Method and apparatus for automatically detecting the available network services in a network system
US5938738A (en) * 1997-11-03 1999-08-17 Mustek Systems Inc. Peripheral control system
US6085247A (en) * 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6438616B1 (en) * 1997-12-18 2002-08-20 Sun Microsystems, Inc. Method and apparatus for fast, local corba object references
US6189102B1 (en) * 1998-05-27 2001-02-13 3Com Corporation Method for authentication of network devices in a data-over cable system
US6604157B1 (en) * 1999-02-19 2003-08-05 Hewlett-Packard Development Company System and method for allowing a user to select and scan from a peripheral to a target application on a host system
US6251014B1 (en) * 1999-10-06 2001-06-26 International Game Technology Standard peripheral communication
FR2800540B1 (fr) * 1999-10-28 2001-11-30 Bull Cp8 Terminal securise muni d'un lecteur de carte a puce destine a communiquer avec un serveur via un reseau de type internet
US6789111B1 (en) 1999-12-09 2004-09-07 Microsoft Corporation Automatic detection and installation of client peripheral devices by a server
JP2001320479A (ja) * 2000-05-10 2001-11-16 Nec Niigata Ltd 携帯電話機の接続装置及び接続方法、コンピュータ、並びに接続ケーブル
US20060031126A1 (en) * 2000-12-08 2006-02-09 Clarinet Systems, Inc. Method and for facilitating network communication between a wireless device and a service system via an interface
US7546298B2 (en) * 2001-01-09 2009-06-09 Nextair Corporation Software, devices and methods facilitating execution of server-side applications at mobile devices
KR100416342B1 (ko) * 2001-02-06 2004-01-31 주식회사 케이티프리텔 Sms와 무선 인터넷을 이용한 데이터 수신 방법 및시스템
JP2002335344A (ja) * 2001-03-07 2002-11-22 Casio Comput Co Ltd 接続ユニット、無線通信システム、接続ユニットの制御方法、及び、無線通信方法
US6671749B2 (en) 2001-03-07 2003-12-30 Hewlett-Packard Development Company, L.P. Peripheral driver installation method and system
US7099333B2 (en) 2001-03-07 2006-08-29 Lucent Technologies Inc. Automatic protocol version detection and call processing reconfiguration in a communication system
US7209470B2 (en) * 2001-03-16 2007-04-24 Intel Corporation Method and apparatus for encapsulating universal serial bus messaging over link layer communication protocol
KR100671153B1 (ko) * 2001-04-25 2007-01-17 엘지전자 주식회사 디바이스 드라이버 설치방법
AUPR571801A0 (en) * 2001-06-15 2001-07-12 Polartechnics Limited Apparatus for tissue type recognition using multiple measurement techniques
AU2002355800A1 (en) 2001-07-31 2003-02-17 Silicom Ltd. Device-related software installation
JP4667747B2 (ja) * 2001-11-20 2011-04-13 ウェスタン・ディジタル・テクノロジーズ・インク ネットワークを介して制御可能な装置にアクセスし制御するシステム
US20030149874A1 (en) 2002-02-06 2003-08-07 Xerox Corporation Systems and methods for authenticating communications in a network medium
KR100444996B1 (ko) 2002-02-08 2004-08-21 삼성전자주식회사 인터넷을 통한 디바이스 드라이버 자동 설치 및 유지 보수방법 및 그 시스템
US20030158954A1 (en) * 2002-02-19 2003-08-21 Williams Terry L. Software-defined radio communication protocol translator
US6742061B1 (en) 2002-03-08 2004-05-25 Nokia Corporation Accessory control interface
EP1347623A1 (en) * 2002-03-22 2003-09-24 Nokia Corporation Downloading of application software for an accessory device to a mobile terminal
US20030220988A1 (en) 2002-05-22 2003-11-27 Hymel James A. Method and electronic device for establishing an interface to control an accessory device
US8005505B2 (en) * 2002-06-25 2011-08-23 Hewlett-Packard Development Company, L.P. Identifying remote, external devices and facilitating communication therewith
US6976092B1 (en) * 2002-09-17 2005-12-13 Bellsouth Intellectual Property Corp. System that using transport protocol objects located at agent location to generate session ID and to provide translation between different instant messaging protocols
US7062261B2 (en) * 2003-01-31 2006-06-13 Motorola, Inc. Method and apparatus for automatic detection and installation of Java-enabled accessories
KR100447526B1 (ko) * 2003-03-18 2004-09-08 엔에이치엔(주) 인터넷 사용자의 접속 의도 판단 방법 및 이를 이용한인터넷 상의 광고 방법과 그 시스템
US7062260B2 (en) * 2003-03-27 2006-06-13 Nokia Corporation Fetching application and driver for extension device from network
US20050097248A1 (en) 2003-10-29 2005-05-05 Kelley Brian H. System and method for establishing a communication between a peripheral device and a wireless device
EP1706963A4 (en) * 2003-11-02 2011-06-15 Yossy Sela MOBILE PHONE GATEWAY DEVICE, COMMUNICATION SYSTEM AND GATEWAY OPERATING SYSTEM
US7519719B2 (en) 2004-04-15 2009-04-14 Agilent Technologies, Inc. Automatic creation of protocol dependent control path for instrument application
US7526588B1 (en) 2004-04-27 2009-04-28 Apple Inc. Communication between an accessory and a media player using a protocol with multiple lingoes
US8117651B2 (en) * 2004-04-27 2012-02-14 Apple Inc. Method and system for authenticating an accessory
US20050262269A1 (en) 2004-05-20 2005-11-24 Pike Jimmy D System and method for information handling system PCI express advanced switching
JP4342393B2 (ja) * 2004-07-14 2009-10-14 株式会社東芝 携帯端末機器に装着される電子装置及び電子装置の制御方法
US20090024757A1 (en) 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US7493327B1 (en) 2004-09-23 2009-02-17 Microsoft Corporation Schema-facilitated device capability discovery
JP4473695B2 (ja) 2004-10-01 2010-06-02 パナソニック株式会社 通信端末装置、電化機器及び通信方法
US7580621B2 (en) * 2005-06-30 2009-08-25 Hoya Corporation Optical image stabilizer
US8755845B2 (en) * 2005-07-01 2014-06-17 Plantronics, Inc. Wireless headset systems and methods for activating application programs on processor-based host
JP4764670B2 (ja) * 2005-07-29 2011-09-07 テックファーム株式会社 非接触送受信システム及び携帯情報端末
JP4107315B2 (ja) 2005-08-30 2008-06-25 コニカミノルタビジネステクノロジーズ株式会社 情報機器、その制御方法、および、制御プログラム
US7873384B2 (en) 2005-09-01 2011-01-18 Broadcom Corporation Multimode mobile communication device with configuration update capability
US9009265B2 (en) 2005-09-28 2015-04-14 Photobucket Corporation System and method for automatic transfer of data from one device to another
DE102005048427B3 (de) 2005-10-07 2007-05-31 Audioton Kabelwerk Gmbh Zweigniederlassung Scheinfeld Kommunikations-Anordnung für ein Fahrzeug
US7636030B2 (en) 2005-10-26 2009-12-22 Rockwell Automation Technologies, Inc. Security layers for wireless industrial control user interface
JP2007135054A (ja) * 2005-11-11 2007-05-31 Felica Networks Inc 携帯通信装置,情報処理方法,およびコンピュータプログラム
US7783702B2 (en) * 2005-11-30 2010-08-24 Microsoft Corporation Using a mobile phone to control a personal computer
US7983413B2 (en) * 2005-12-09 2011-07-19 Sony Ericsson Mobile Communications Ab VoIP accessory
US20070180445A1 (en) * 2006-01-30 2007-08-02 Microsoft Corporation Download Service For Device Drivers
GB0603781D0 (en) 2006-02-24 2006-04-05 Nokia Corp Application verification
US7616760B2 (en) * 2006-04-05 2009-11-10 Sony Ericsson Mobile Communications Ab Headset for use with a communication and/or multimedia device
US7689168B2 (en) * 2006-03-30 2010-03-30 Sony Ericsson Mobile Communications Ab Remote user interface for Bluetooth™ device
WO2007117592A2 (en) 2006-04-05 2007-10-18 Glenbrook Associates, Inc. System and method for managing product information
US8073984B2 (en) 2006-05-22 2011-12-06 Apple Inc. Communication protocol for use with portable electronic devices
EP1898306A1 (en) 2006-09-11 2008-03-12 Research In Motion Limited Method and apparatus for variably enabling USB interaction
US8584115B2 (en) * 2006-10-05 2013-11-12 International Business Machines Corporation Automated operating system device driver updating system
US7966428B2 (en) 2006-10-31 2011-06-21 Apple Inc. Control of electronic devices based on capability descriptions
JP2008210301A (ja) * 2007-02-28 2008-09-11 Sony Corp 記憶媒体、通信システム、並びに制御装置。
JP2008219621A (ja) * 2007-03-06 2008-09-18 Hitachi Communication Technologies Ltd 通話録音機能付き電話機およびその情報処理方法
US20080240058A1 (en) * 2007-04-02 2008-10-02 Broadcom Corporation Simultaneous wlan communications to carry personal area network communications
US20080248835A1 (en) 2007-04-04 2008-10-09 Sony Ericsson Mobile Communications Ab Accessory communication method and system for mobile services
US8078787B2 (en) * 2007-06-22 2011-12-13 Apple Inc. Communication between a host device and an accessory via an intermediate device
US8086781B2 (en) 2007-06-22 2011-12-27 Apple Inc. Serial pass-through device
US20090064202A1 (en) 2007-09-04 2009-03-05 Apple, Inc. Support layer for enabling same accessory support across multiple platforms
TW200922185A (en) * 2007-09-26 2009-05-16 Packetvideo Corp System and method for receiving broadcast multimedia on a mobile device
US20090181649A1 (en) * 2008-01-10 2009-07-16 Bull William E Dynamic Delivery and Presentation of Electronic Data to Mobile Electronic Devices
US8719454B2 (en) 2008-03-19 2014-05-06 Intel Corporation Enabling peripheral communication in a local area network
ATE554593T1 (de) * 2008-03-27 2012-05-15 Motorola Mobility Inc Verfahren und vorrichtung für die automatische nahfeld-kommunikations-anwendungsauswahl in einem elektronischen gerät
US8289688B2 (en) * 2008-04-01 2012-10-16 Litl, Llc Portable computer with multiple display configurations
EP2139211A1 (en) * 2008-06-27 2009-12-30 Axalto S.A. System and method of extending smart card capability via a coupling with a portable electronic device
US8527688B2 (en) * 2008-09-26 2013-09-03 Palm, Inc. Extending device functionality amongst inductively linked devices
US20100107097A1 (en) * 2008-10-16 2010-04-29 Andrew Rodney Ferlitsch Client device with extensible imaging device driver and method implementing same
US20100138914A1 (en) 2008-12-01 2010-06-03 Research In Motion Limited System and method of providing biometric quick launch
US20100161720A1 (en) * 2008-12-23 2010-06-24 Palm, Inc. System and method for providing content to a mobile device
US20100255908A1 (en) 2009-01-29 2010-10-07 Stephen Michael Grimes Multimedia-enabled physical trading card
US8452903B2 (en) 2009-03-16 2013-05-28 Apple Inc. Mobile computing device capabilities for accessories
US8402145B2 (en) 2009-03-16 2013-03-19 Apple Inc. Application communication with external accessories
US20120081207A1 (en) * 2010-09-30 2012-04-05 Apple Inc. Application launching in conjunction with an accessory
US8626932B2 (en) * 2009-09-01 2014-01-07 Apple Inc. Device-dependent selection between modes for asymmetric serial protocols
US7865629B1 (en) * 2009-11-24 2011-01-04 Microsoft Corporation Configurable connector for system-level communication
US8433828B2 (en) 2010-02-26 2013-04-30 Apple Inc. Accessory protocol for touch screen device accessibility

Also Published As

Publication number Publication date
US20100235425A1 (en) 2010-09-16
JP4842383B2 (ja) 2011-12-21
US20100235552A1 (en) 2010-09-16
GB2481349B (en) 2014-01-29
CN102428665B (zh) 2015-06-17
KR20110129473A (ko) 2011-12-01
DE112010001170B4 (de) 2019-02-28
WO2010107660A1 (en) 2010-09-23
US9069908B2 (en) 2015-06-30
JP2012075110A (ja) 2012-04-12
US20170318137A1 (en) 2017-11-02
EP2642402B1 (en) 2014-12-24
BRPI1009309A2 (pt) 2016-03-08
EP2230605A1 (en) 2010-09-22
US8341318B2 (en) 2012-12-25
EP2642402A3 (en) 2013-11-06
JP5599768B2 (ja) 2014-10-01
US20120023185A1 (en) 2012-01-26
EP2642402A2 (en) 2013-09-25
US20100235454A1 (en) 2010-09-16
US20100233961A1 (en) 2010-09-16
US9736281B2 (en) 2017-08-15
US8639733B2 (en) 2014-01-28
GB201117660D0 (en) 2011-11-23
US20120023199A1 (en) 2012-01-26
EP2230605B1 (en) 2021-12-01
US8775652B2 (en) 2014-07-08
JP2010233217A (ja) 2010-10-14
MX2011009737A (es) 2011-12-16
US20160036949A1 (en) 2016-02-04
CN105162955B (zh) 2018-07-31
HK1164584A1 (en) 2012-09-21
EP2428899A1 (en) 2012-03-14
KR101346541B1 (ko) 2013-12-31
GB2481349A (en) 2011-12-21
US8554924B2 (en) 2013-10-08
US8402128B2 (en) 2013-03-19
US20100235373A1 (en) 2010-09-16
US8402145B2 (en) 2013-03-19
EP2642401A2 (en) 2013-09-25
US20100235518A1 (en) 2010-09-16
CN102428665A (zh) 2012-04-25
AU2010226111B2 (en) 2013-01-24
EP2642401A3 (en) 2013-10-30
DE112010001170T5 (de) 2012-05-31
CN105162955A (zh) 2015-12-16
AU2010226111A1 (en) 2011-10-13
US8700789B2 (en) 2014-04-15

Similar Documents

Publication Publication Date Title
BRPI1009309B1 (pt) Metodo para comunicaqao entre um dispositivo acessorio e um aplicativo em execuqao em um dispositivo de computaqao movel, dispositivo acessorio e dispositivo de computaqao movel
US20170013066A1 (en) Application launching in conjunction with an accessory
KR101787185B1 (ko) 액세서리와 공조하는 애플리케이션 개시
AU2011101205B4 (en) Accessory and mobile computing device communication using an application communication protocol
AU2013205264B2 (en) Accessory and mobile computing device communication using an application communication protocol

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: H04J 3/16

Ipc: G06F 13/14 (2006.01), G06F 13/38 (2006.01), H04L 2

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 11/03/2010, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.