KR101346541B1 - 애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신 - Google Patents

애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신 Download PDF

Info

Publication number
KR101346541B1
KR101346541B1 KR1020117024283A KR20117024283A KR101346541B1 KR 101346541 B1 KR101346541 B1 KR 101346541B1 KR 1020117024283 A KR1020117024283 A KR 1020117024283A KR 20117024283 A KR20117024283 A KR 20117024283A KR 101346541 B1 KR101346541 B1 KR 101346541B1
Authority
KR
South Korea
Prior art keywords
accessory
application
mobile computing
computing device
protocol
Prior art date
Application number
KR1020117024283A
Other languages
English (en)
Other versions
KR20110129473A (ko
Inventor
폴 홀덴
로렌스 지. 볼톤
니틴 가나트라
미첼 아들러
에밀리 클락 슈버트
제시 리 도로구스커
시얌 에스. 토프라니
존 엠. 아나니
피터 티. 랑겐펠드
스콧 크루에거
Original Assignee
애플 인크.
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 애플 인크. filed Critical 애플 인크.
Publication of KR20110129473A publication Critical patent/KR20110129473A/ko
Application granted granted Critical
Publication of KR101346541B1 publication Critical patent/KR101346541B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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
    • 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

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

본 발명의 실시예들은 모바일 컴퓨팅 디바이스와 액세서리 사이의 통신을 위한 다양한 통신 기술들을 제공한다. 모바일 컴퓨팅 디바이스에 대해 일반적인(generic) 액세서리 프로토콜은 일부 통신을 위해 사용될 수 있다. 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션은 애플리케이션 통신 프로토콜을 사용하여 액세서리와 통신할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 액세서리 통신 프로토콜과 상이할 수 있다. 다른 실시예들에서, 애플리케이션 프로토콜은 오직 애플리케이션 및 액세서리에 의해서만 인지될 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜에 따르는 메시지들은 액세서리 통신 프로토콜에 따르는 메시지 내에 상기 메시지들을 패키지화함으로써 액세서리와 애플리케이션 사이에서 전달될 수 있다.

Description

애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신{ACCESSORY AND MOBILE COMPUTING DEVICE COMMUNICATION USING AN APPLICATION COMMUNICATION PROTOCOL}
본 발명은 일반적으로는 액세서리와 모바일 컴퓨팅 디바이스 사이의 통신에 관한 것이고, 구체적으로는 이러한 통신을 위한 액세서리 및/또는 애플리케이션 특정 프로토콜의 사용에 관한 것이다.
모바일 컴퓨팅 디바이스들이 유비쿼터스화되었다(ubiquitous). 여러 회사들이, 모바일 컴퓨팅 디바이스들, 예컨대, 몇몇을 언급하자면, iPhoneTM, iPod TouchTM, 다양한 BlackBerry? 디바이스들, 및 Google의 Android™ 플랫폼과 호환가능한 스마트폰들을 만들어왔다. 모바일 컴퓨팅 디바이스들은 종종 웹 브라우저, 워드 프로세서, 이메일 애플리케이션, 지도, 전화 서비스, 게임, 오디오 애플리케이션, 비디오 애플리케이션 등을 포함한다. 아울러, 액세서리들이 또한 모바일 컴퓨팅 디바이스와의 사용을 위해 만들어졌다. 이러한 액세서리들은 하나 이상의 커넥터들 및/또는 포트들을 사용하여 모바일 컴퓨팅 디바이스와 통신할 수 있다. 이러한 액세서리들은 모바일 컴퓨팅 디바이스의 피처들을 제어하기 위해 사용될 수 있거나, 또는 사용자들 및/또는 환경과 상호작용하기 위해 모바일 컴퓨팅 디바이스에 의해 사용될 수 있다.
다양한 실시예들에 따라, 액세서리는 액세서리 특정 통신 프로토콜 및/또는 애플리케이션 특정 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션과 통신할 수 있다. 예를 들어, 액세서리가 모바일 컴퓨팅 디바이스와 연결되는 경우, 액세서리는 모바일 컴퓨팅 디바이스에 의해 정의되는 액세서리 프로토콜을 사용하여 초기화, 식별 및/또는 인증 절차들을 수행할 수 있다. 액세서리는 또한 액세서리와 통신하기 위해 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션에 의해 사용될 수 있는 하나 이상의 애플리케이션 프로토콜을 표시하는 정보를 전달할 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜은 액세서리 프로토콜과 상이할 수 있는 반면, 다른 실시예들에서, 애플리케이션 프로토콜은 액세서리 프로토콜과 동일할 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜 패킷은 액세서리 프로토콜 패킷의 일부분들 내에 네스팅(nest)될 수 있다.
여기서 개시된 다양한 실시예들은 액세서리들과 애플리케이션들 사이에 통신 세션들을 생성하기 위한 방법들을 기술한다. 일부 실시예들은 애플리케이션 프로토콜을 사용하여 통신 세션을 오픈하기 위해 액세서리가 적절한 정보를 모바일 컴퓨팅 디바이스에 제공하는 방법을 기술한다. 다른 실시예들은 애플리케이션 프로토콜을 선택하고, 통신 스트림들을 오픈하고, 선호되는 애플리케이션을 다운로드하고, 액세서리와 통신하고, 액세서리 프로토콜 패킷 내에 애플리케이션 프로토콜 패킷들을 네스팅 하는 것 등을 수행하기 위한 모바일 컴퓨팅 디바이스에서의 다양한 방식들을 기술한다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션 매니저는 액세서리와 애플리케이션 사이의 통신을 유도(abstract)하기 위해 사용될 수 있다.
후속하는 상세한 설명은, 첨부 도면들과 함께, 여기서 개시되는 실시예들의 속성 및 장점의 보다 양호한 이해를 제공할 것이다.
도 1a는 본 발명의 일부 실시예들에 따라 액세서리 디바이스와 연결된 모바일 컴퓨팅 디바이스를 도시한다.
도 1b는 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스와 무선으로 연결되는 액세서리 디바이스를 도시한다.
도 2는 일 실시예에 따라 액세서리와 연결되는 모바일 컴퓨팅 디바이스의 블록도를 도시한다.
도 3은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스 내의 다양한 모듈들 및 프로세스들을 도시하는 블록도이다.
도 4는 본 발명의 일부 실시예들에 따라 애플리케이션 및 액세서리 사이의 통신을 추가적으로 예시하는 간략화된 도면이다.
도 5a-5c는 본 발명의 일부 실시예들에 따라 액세서리 통신 프로토콜 커맨드 내에 애플리케이션 프로토콜 메시지를 패키지화하는 예를 예시한다.
도 6은 본 발명의 일부 실시예들에 따라 도 4의 실시예의 액세서리 통신 프로토콜의 커맨드들에 대한 경로를 예시한다.
도 7은 본 발명의 일부 실시예들에 따라 액세서리 및 호환가능한 애플리케이션을 식별하기 위한 프로세스의 흐름도이다.
도 8은 본 발명의 일부 실시예들에 따라 호환가능한 애플리케이션들과 액세서리들을 연관시키는데 사용가능한 접속된 프로토콜 리스트 및 지원되는-프로토콜 테이블을 도시한다.
도 9는 본 발명의 일부 실시예들에 따라 액세서리에 대해 호환가능한 애플리케이션의 위치를 찾는 데에 사용가능한 질의를 형성(formulating)하기 위한 기술을 예시한다.
도 10은 본 발명의 일부 실시예들에 따라 액세서리와의 통신을 개시하기 위해 애플리케이션에 의해 실행될 수 있는 프로세스의 흐름도이다.
도 11은 본 발명의 일부 실시예들에 따라 2개의 상이한 액세서리들과 동시에 상호작용하는 모바일 컴퓨팅 디바이스 상의 애플리케이션을 예시한다.
도 12는 본 발명의 일부 실시예들에 따라 2개의 상이한 액세서리들과 동시에 상호작용하는 모바일 컴퓨팅 디바이스 상의 2개의 애플리케이션들을 예시한다.
도 13은 본 발명의 일부 실시예들에 따라 동일한 액세서리와 동시에 상호작용하는 모바일 컴퓨팅 디바이스 상의 2개의 애플리케이션들을 예시한다.
도 14는 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스의 애플리케이션, 애플리케이션 매니저 및 하드웨어 전송층 사이의 데이터의 흐름을 예시한다.
도 15는 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스에서 애플리케이션 매니저에 의해 실행될 수 있는 프로세스의 흐름도이다.
도 16은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스에서 애플리케이션 매니저에 의해 실행될 수 있는 프로세스의 또다른 흐름도이다.
도 17은 본 발명의 일부 실시예들에 따라 액세서리와의 통신을 오픈하기 위해 모바일 컴퓨팅 디바이스와 연결되는 액세서리에 의해 실행될 수 있는 프로세스의 흐름도이다.
도 18은 본 발명의 일부 실시예들에 따라 액세서리와의 통신을 오픈하기 위해 모바일 컴퓨팅 디바이스에서 애플리케이션에 의해 실행될 수 있는 프로세스의 흐름도이다.
여기서 개시되는 본 발명의 다양한 실시예들은 액세서리 디바이스들과 모바일 컴퓨팅 디바이스 사이의 통신의 다양한 양상들에 대한 것이다. 일부 실시예들에서, 액세서리는 액세서리 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스와 통신할 수 있다. 액세서리 통신 프로토콜은 통신 커맨드들, 전송 링크들, 인증 루틴들, 식별 프로세스들, 링고(lingo)들, 패킷 구조들, 데이터 타입들, 또는 액세서리 디바이스와 모바일 컴퓨팅 디바이스 사이에서 통신하기 위해 사용될 수 있는 임의의 다른 적절한 커맨드 또는 데이터를 특정할 수 있다.
모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션은 또한 애플리케이션 통신 프로토콜을 사용하여 액세서리와 통신할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 애플리케이션과 액세서리 사이의 통신을 위한 커맨드들, 패킷 구조들, 데이터 타입들, 링고들, 메시지 포맷들 등을 특정할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜에 의해 특정되는 통신 커맨드들, 패킷 구조들, 데이터 타입들, 링고들, 메시지 포맷들 중 적어도 일부는 액세서리 통신 프로토콜에 의해 특정되는 것들과는 상이할 수 있다. 다른 실시예들에서, 애플리케이션 통신 프로토콜에 의해 특정되는 통신 커맨드들, 패킷 구조들, 데이터 타입들, 링고들, 메시지 포맷들 중 적어도 일부는 액세서리 통신 프로토콜에 의해 특정되는 것들과 동일할 수 있다.
일부 실시예들에서, 애플리케이션 프로토콜은 액세서리 통신 프로토콜에 의해 특정되는 전송 링크를 사용할 수 있다. 애플리케이션 통신 프로토콜은, 예를 들어, 애플리케이션 및/또는 액세서리의 개발자에 의해 개발될 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 애플리케이션 및/또는 액세서리 특정 커맨드들, 데이터 구조들 등을 포함할 수 있다. 또한, 용어 "애플리케이션 통신 프로토콜" 및 "애플리케이션 프로토콜"은 상호교환가능하게 사용될 수 있다. 용어 "액세서리 통신 프로토콜", "액세서리 통신 프로토콜", "범용 통신 프로토콜", 및 "범용 프로토콜"은 또한 상호교환가능하게 사용될 수 있다.
도 1a는 액세서리 디바이스(113)와 연결되는 모바일 컴퓨팅 디바이스(102)를 도시한다. 케이블(111)은 액세서리 디바이스(113)와 모바일 컴퓨팅 디바이스(102)를 연결하기 위해 사용된다. 케이블(111)은 모바일 컴퓨팅 디바이스(102)와 접속하기 위한 커넥터(108) 및 액세서리 디바이스(113)와 접속하기 위한 커넥터(110)를 포함할 수 있다. 도 1b는 모바일 컴퓨팅 디바이스(102)와 무선으로 연결되는 액세서리 디바이스(113)를 도시한다.
도 1a 및 1b에 도시된 모바일 컴퓨팅 디바이스는 제한 없이 임의의 타입의 모바일 컴퓨팅 및/또는 통신 디바이스일 수 있다. 예를 들어, iPod Touch™, iPhone™, Android 호환가능한 디바이스 및/또는 Blackberry 디바이스가 사용될 수 있다. 또한, 모바일 컴퓨팅 디바이스(102)는 미디어 플레이어 성능, 네트워킹, 웹 브라우징, 이메일, 워드 프로세싱, 데이터 저장, 애플리케이션 실행, 및/또는 임의의 다른 컴퓨팅 또는 통신 기능들을 제공할 수 있다.
액세서리(113)는 예컨대, 외부 스피커 시스템; 외부 비디오 디바이스; 멀티미디어 디바이스; 가전 디바이스; 테스트 기기; 가전 제품(예를 들어, 냉장고 또는 식기세척기); 운동 장비; 보안 시스템; 홈 또는 오피스 자동화 시스템; 카메라; 사용자 입력 디바이스(예를 들어, 키보드, 마우스, 게임 제어기); 측정 디바이스; 의료 디바이스(예를 들어, 당 모니터 또는 인슐린 모니터); 매장 디바이스; 자동차; 자동차 액세서리(예를 들어, 카 스테레오 시스템 또는 카 네비게이션 시스템); 라디오(예를 들어, FM, AM 및/또는 위성); 비행기, 버스, 기차, 또는 다른 대중 교통 수단에서의 엔터테인먼트 콘솔 등과 같은 모바일 컴퓨팅 디바이스(102)와 통신할 수 있는 임의의 디바이스일 수 있다. 모바일 컴퓨팅 디바이스와 함께 사용될 수 있는 임의의 타입의 디바이스는 액세서리 디바이스로서 사용될 수 있다.
도 2는 일 실시예에 따라 (예를 들어, 도 1a 또는 1b의 액세서리(113)를 구현하는) 액세서리(202)와 연결되는 (예를 들어, 도 1a 또는 1b의 모바일 컴퓨팅 디바이스(102)를 구현하는) 모바일 컴퓨팅 디바이스(200)의 블록도를 도시한다. 모바일 컴퓨팅 디바이스(200)는 프로세서(230), 저장 디바이스(225), 사용자 인터페이스(UI)(235), 네트워크 인터페이스(236), 및 액세서리 입력/출력(I/O) 인터페이스(205)를 포함할 수 있다.
(예를 들어, 종래의 마이크로프로세서 또는 마이크로제어기를 포함하는) 하나 이상의 집적 회로들로서 구현될 수 있는 프로세서(230)는 모바일 컴퓨팅 디바이스(200)의 동작을 제어할 수 있다. 예를 들어, 사용자 인터페이스(235)에 의해 제공되는 사용자 입력 신호들에 응답하여, 프로세서(206)는 다양한 작업들, 예를 들어, 저장 디바이스(225)에 저장될 수 있는 미디어 에셋(asset)을 선택 및 재생하는 것; 네트워크 인터페이스(236)를 사용하여 데이터를 송신 및/또는 검색하기 위해 다양한 네트워크(예를 들어, 모바일 전화 네트워크, 인터넷, 로컬 영역 네트워크 등)에 액세스하는 것; 저장 디바이스(225)에 상주하는 다양한 애플리케이션 프로그램들(앱들)(226)을 실행하는 것 등을 수행할 수 있다. 프로세서(230)는 또한 액세서리 I/O 인터페이스(205)를 통해 액세서리들과의 통신을 관리할 수 있다.
사용자 인터페이스(235)는, 지원 전자 기기(예를 들어, 디지털-대-아날로그 또는 아날로그-대-디지털 컨버터들, 신호 프로세서들 등)와 함께, 터치 패드, 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 키패드, 마이크로폰 등과 같은 입력 제어들, 및 디스플레이 스크린, 표시등, 스피커, 헤드폰 잭 등과 같은 출력 디바이스들을 포함할 수 있다. 사용자는 모바일 컴퓨팅 디바이스(200)의 기능성을 인보크(invoke)하기 위해 사용자 인터페이스(235)의 다양한 입력 제어들을 동작시킬 수 있으며, 또한 사용자 인터페이스(235)를 통해 모바일 컴퓨팅 디바이스(200)로부터의 출력을 시청 및/또는 청취할 수 있다.
저장 디바이스(225)는, 예를 들어, 디스크, 플래시 메모리 또는 임의의 다른 비휘발성 저장 매체를 사용하여 구현될 수 있다. 저장 디바이스(225)는 프로세서(230)에 의해 실행가능한 애플리케이션 프로그램들(226), 시스템 프로그램들 및 다른 프로그램 코드(명시적으로 도시되지 않음), 및 하기에 기술되는 바와 같이 다양한 액세서리들과의 통신을 관리하는 데에 사용될 수 있는 프로토콜 테이블(227)과 같은 다양한 데이터를 저장할 수 있다. 일부 실시예들에서, 저장 디바이스(225)는 또한 미디어 에셋들(예를 들어, 에셋 명, 아티스트, 타이틀, 장르 등), 재생리스트들(순차적으로 또는 랜덤 순서로 재생될 수 있는 에셋들의 리스트들) 등을 설명하는 메타데이터와 함께, 모바일 통신 디바이스(200)에 의해 재생될 수 있는 오디오, 비디오, 스틸 이미지들 등과 같은 미디어 에셋들을 저장할 수 있다. 저장 디바이스(225)는 또한 사용자의 연락처에 관한 정보(이름, 주소, 전화 번호 등); 스케줄링된 약속들 및 이벤트들; 노트들 및/또는 다른 개인 정보와 같은 임의의 다른 타입의 정보를 저장할 수 있다.
애플리케이션 프로그램들(또한 여기서 "애플리케이션들" 또는 "앱들"이라고 지칭됨)(226)은 프로세서(230)에 의해 실행가능한 임의의 프로그램을 포함할 수 있다. 일부 실시예들에서, 특정 애플리케이션들은 그 제조자들에 의해 모바일 컴퓨팅 디바이스(200) 상에 설치될 수 있는 반면, 다른 애플리케이션들은 사용자에 의해 설치될 수 있다. 애플리케이션 프로그램들의 예들은 비디오 게임 프로그램들, 개인 정보 관리 프로그램들, 미디어 에셋들을 재생 및/또는 미디어 에셋 데이터베이스를 검색하기 위한 프로그램들, 통화를 발신(place) 및/또는 착신하기 위해 전화 인터페이스를 제어하기 위한 프로그램들 등을 포함할 수 있다. 특정 애플리케이션 프로그램들(226)은 액세서리(202)와의 통신을 제공하고 그리고/또는 액세서리(202)의 제어를 제공할 수 있고, 특정 애플리케이션 프로그램들(226)은 액세서리(202)로부터의 제어 신호들 또는 다른 입력에 응답할 수 있으며, 그 예들이 하기에 기술된다.
네트워크 인터페이스(236)는 하나 이상의 통신 네트워크들에 인터페이스를 제공할 수 있다. 예를 들어, 네트워크 인터페이스(236)는 모바일 전화 네트워크와 같은 모바일 통신 네트워크를 통해 통신하기 위해 무선-주파수(RF) 트랜시버 및 적절한 컴포넌트들을 포함할 수 있다. 추가적으로 또는 대신, 네트워크 인터페이스(236)는 인터넷(예를 들어, WiFi 트랜시버, 3G 트랜시버 등)에, 개인 영역 네트워크(예를 들어, 블루투스 네트워크)에, 또는 임의의 다른 네트워크에 대한 무선 접속을 포함할 수 있다. 다른 실시예들에서, 유선 네트워크 접속(예를 들어, 이더넷)이 제공될 수 있다. 일부 실시예들에서, 동일한 하드웨어가 다수의 네트워크들에 대한 접속을 지원하기 위해 사용될 수 있고, 따라서, 네트워크 인터페이스(236)는 아날로그-대-디지털 및/또는 디지털-대-아날로그 회로, 베이스밴드 프로세싱 컴포넌트들(예를 들어, 코덱들, 채널 추정기들 등), 변조기들, 복조기들, 오실레이터들, 증폭기들, 송신기들, 수신기들, 트랜시버들, 내장 및/또는 외장 안테나들 등을 포함할 수 있다. 일부 실시예들에서, 네트워크 접속성과 연관된 일부 동작들(예를 들어, 인코딩, 디코딩, 및/또는 디지털 도메인에서의 다른 프로세싱)이 프로세서(230)상에서 실행되는 프로그램들로서 부분적으로 또는 전체적으로 실행될 수 있거나, 또는 전용 디지털 신호 프로세서가 제공될 수 있다.
액세서리 I/O 인터페이스(205)는 모바일 컴퓨팅 디바이스(200)와 액세서리(202) 사이에서 다양한 신호들을 전달하도록 구성되는 다수의 신호 경로들을 포함할 수 있다. 일 실시예에서, 액세서리 I/O 인터페이스(205)는 Apple사에 의해 제조 및 판매되는 iPod? 및 iPhone™ 제품들 상에서 사용되는 커넥터에 대응하는 30핀 커넥터를 포함하며, 다른 커넥터들 역시 사용될 수 있다. 대안적으로 또는 추가적으로, 액세서리 I/O 인터페이스(205)는 무선 인터페이스(예를 들어, 블루투스 등)를 포함할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 또한 모바일 컴퓨팅 디바이스를 위한 미디어 및/또는 애플리케이션을 제공할 수 있는 에셋 관리 프로그램(예를 들어, iTunes? 또는 Microsoft의 애플리케이션 스토어)을 실행하는 호스트 컴퓨터(미도시)와 통신하기 위해 액세서리 I/O 인터페이스(205)를 사용할 수 있다. 에셋 관리 프로그램은 사용자로 하여금 모바일 컴퓨팅 디바이스에 미디어 에셋들 및/또는 애플리케이션들을 추가하게 하고 그리고/또는 모바일 컴퓨팅 디바이스(200)로부터 미디어 에셋들을 제거하게 할 수 있다. 사용자는 모바일 컴퓨팅 디바이스(200) 상의 미디어 에셋들과 연관된 메타데이터를 업데이트할 수 있다. 일부 실시예들에서, 사용자는 또한 재생리스트들 및/또는 애플리케이션들 뿐만 아니라 다른 문서들을 생성 및 업데이트하기 위해 에셋 관리 프로그램과 상호작용할 수 있다. 일 실시예에서, 호스트 컴퓨터는 미디어 에셋들 및/또는 애플리케이션들의 마스터 데이터베이스를 유지하고, 예를 들어, (연관된 메타데이터 및 재생리스트를 포함하는) 인터넷을 통해, 다른 데이터베이스에 액세스할 수 있으며, 에셋 관리 프로그램은, 모바일 컴퓨팅 디바이스(200)가 호스트 컴퓨터에 접속할 때마다 자동으로 모바일 컴퓨팅 디바이스(200)의 저장 디바이스(225) 상에 유지되는 데이터베이스와 상기 마스터 데이터베이스를 동기화시킨다. 다른 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 네트워크 인터페이스(236)를 사용하여 호스트 컴퓨터와 통신하고 그리고/또는 다양한 다른 서버들과 직접 통신하여, 애플리케이션들, 미디어 에셋들 및/또는 다른 데이터를 획득할 수 있다.
액세서리(202)는 제어기(260), 사용자 인터페이스(255), 모바일 컴퓨팅 디바이스 I/O 인터페이스(250), 메모리(265) 및 액세서리 특정 하드웨어(275)를 포함할 수 있다.
모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 액세서리(202)와 모바일 컴퓨팅 디바이스(200) 사이에서 다양한 신호들을 전달하도록 구성되는 다수의 신호 경로들을 포함할 수 있다. 일 실시예에서, 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 Apple사에 의해 제조 및 판매되는 iPod? 및 iPhone™ 제품들에서 사용되는 30-핀 커넥터와 맞도록 적응된 커넥터를 포함할 수 있다. 다른 커넥터들 역시 사용될 수 있는데, 예를 들어, 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 표준 USB 또는 Fire Wire 커넥터 등을 포함할 수 있다. 대안적으로 또는 추가적으로, 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 무선 인터페이스(예를 들어, 블루투스 등)를 포함할 수 있다.
제어기(260)는, 예를 들어, 디지털 오디오 디코딩, 아날로그 또는 디지털 오디오 및/또는 비디오 프로세싱, 사용자 입력의 프로세싱, 액세서리 기능성의 제어 등과 같은 다양한 기능들을 수행하기 위한 프로그램 코드를 실행하는 마이크로프로세서 또는 마이크로제어기를 포함할 수 있다. 제어기(260)는 또한 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)를 통해 모바일 컴퓨팅 디바이스와의 통신을 관리할 수 있다.
사용자 인터페이스(255)는 지원 전자 기기(예를 들어, 디지털-대-아날로그 또는 아날로그-대-디지털 컨버터들, 신호 프로세서들 등)와 함께, 터치 패드, 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 키패드, 마이크로폰, 프로브 등과 같은 입력 제어들, 및 비디오 스크린, 표시등, 스피커, 헤드폰 잭 등과 같은 출력 디바이스들을 포함할 수 있다. 사용자는 액세서리(202)의 기능성을 인보크하기 위해 사용자 인터페이스(255)의 다양한 입력 제어들을 동작시킬 수 있으며, 또한 사용자 인터페이스(255)를 통해 액세서리(202)로부터의 출력을 시청 및/또는 청취할 수 있다. 또한, 일부 실시예들에서, 사용자는 액세서리 사용자 인터페이스(255)를 통해 모바일 컴퓨팅 디바이스(200)(또는 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션들)를 동작시킬 수 있다.
메모리(265)는 임의의 타입의 메모리, 디스크, 또는 제어기(260)에 대한 프로그램 코드 및/또는 데이터를 저장할 수 있는 다른 저장 매체를 사용하여 구현될 수 있다. 예를 들어, 메모리(265)는 액세서리 특정 하드웨어(275) 및/또는 사용자 인터페이스(255)와 상호작용하기 위한 명령어들을 제어기(260)에 제공할 수 있는 액세서리 특정 소프트웨어(280)를 저장할 수 있다. 일부 실시예들에서, 액세서리(202)는 모바일 컴퓨팅 디바이스(200)로부터 정보(예를 들어, 사용자 입력, 메타데이터, 및/또는 애플리케이션 데이터)를 수신할 수 있고, 이러한 정보는 또한 메모리(265)에 저장될 수 있다.
액세서리 특정 하드웨어(275)는 액세서리(202)의 원하는 기능성을 인에이블시키기 위해 필요한 임의의 하드웨어를 나타낼 수 있다. 예를 들어, 액세서리 특정 하드웨어(275)는, 임의의 타입의 센서 또는 측정기(meter)와 같은 하나 이상의 데이터 수집 디바이스들을 포함할 수 있다. 일부 실시예에서, 액세서리 특정 하드웨어(275)는 전기적 특성들(저항, 전압 차 등)을 나타내는 데이터를 생성하는 전기 측정기; 광 및/또는 광의 패턴들을 검출하는 광 센서; 모션 센서; 온도 센서; 습도 센서; 압력 센서; 선택된 화학물질(예를 들어, 일산화탄소와 같은 잠재적인 유독 가스)의 존재에 응답하는 화학 센서 등을 포함할 수 있다. 액세서리 특정 하드웨어(275)는 또한, 당 측정기, 호흡 측정기, 심박수 및/또는 심장 기능 모니터, 혈압 모니터 등과 같은 하나 이상의 의료 디바이스들을 포함할 수 있다.
일부 실시예들에서, 데이터 수집 디바이스를 포함하는 액세서리 특정 하드웨어(275)는 물리적 데이터에 대응하거나 물리적 데이터를 나타내는 하나 이상의 전기 신호들(예를 들어, 전압, 저항 및/또는 전류)을 제공할 수 있다. 다양한 포맷들의 아날로그 및/또는 디지털 신호들이 사용될 수 있다. 액세서리 특정 하드웨어(275)는 또한 신호를 제어기(260)로 송신하기 전에 신호를 프로세싱하는 신호 프로세싱 컴포넌트들을 포함할 수 있는데, 일부 실시예들에서, 액세서리 특정 하드웨어(275)는 전기 신호를 직접 제어기(260)에 송신할 수 있으며, 상기 제어기(260)는 신호를 프로세싱할 수 있다. 예를 들어, 액세서리 특정 하드웨어(275)가 열전대(thermocouple)를 사용하여 구현되는 온도계를 포함하는 경우, 열전대로부터의 저항 데이터는 액세서리 특정 하드웨어(275)에 의해, 제어기(260)에 의해, 또는 이들 모두에 의해, 온도 데이터로 변환될 수 있다. 또한, 액세서리 특정 하드웨어(275)에 의해 수집되는 데이터를 나타내는 신호들은, 예를 들어, 하기에 기술되는 바와 같은 애플리케이션 프로토콜을 사용하여, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션에 (제어기(260)에 의해 프로세싱되어 또는 제어기(260)에 의한 프로세싱 없이) 송신될 수 있고, 따라서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 또한 액세서리 특정 하드웨어(275)를 사용하여 수집된 데이터를 프로세싱할 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 하나 이상의 컴퓨터-제어가능한 디바이스들을 포함할 수 있다. 컴퓨터-제어가능한 디바이스들의 예들은 모터, 액추에이터, 전구, 카메라, 밸브, 스피커, 디스플레이 스크린, 프린터, 및/또는 제어기(260)에 의해 제어가능한 임의의 다른 장비를 포함한다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 제어 신호들을 액세서리(202)에 송신할 수 있고, 제어기(260)는 제어 신호들에 응답하여 액세서리 특정 하드웨어(275)를 동작시킬 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 사용자 인터페이스(255)의 컴포넌트들을 포함할 수 있다. 따라서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 액세서리(202)로부터 사용자 입력을 수신하고, 액세서리(202)를 통해 사용자에게 출력을 제공할 수 있고, 그리고/또는 수행될 수 있는 액세서리(202)의 임의의 동작을 제어하고, 이와 상호작용하거나 또는 이에 응답할 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 네트워크 및/또는 통신 인터페이스들을 포함할 수 있다. 예를 들어, 액세서리 특정 하드웨어(275)는 (예를 들어, FM, AM, 위성 라디오, 및/또는 다른 대역들에 대한) RF 수신기 및/또는 RF 송신기(예를 들어, 개인적인 사용을 위한 단거리 송신기)를 포함할 수 있다. 다른 실시예들에서, 액세서리 특정 하드웨어(275)는 개인 영역 네트워크에 대한 통신 인터페이스, 예를 들어, 블루투스 트랜시버 또는 다른 단거리 무선 통신 인터페이스를 포함할 수 있다. 다른 실시예들에서, 액세서리 특정 하드웨어(275)는 전화 인터페이스, GSM, CDMA, 및/또는 다른 음성 및/또는 데이터 네트워크 인터페이스들을 포함할 수 있다.
따라서, 액세서리 특정 하드웨어(275)는 모바일 컴퓨팅 및/또는 통신 디바이스와의 상호운용성이 바람직할 수 있는 임의의 하드웨어 컴포넌트를 포함할 수 있다.
여기서 기술되는 시스템 구성들 및 컴포넌트들이 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 모바일 컴퓨팅 디바이스 및/또는 액세서리는 여기서 구체적으로 기술되지 않은 다른 성능들을 가질 수 있다. 액세서리(202) 및 모바일 컴퓨팅 디바이스(200)가 특정 블록들을 참조하여 여기서 기술되지만, 상기 블록들은 설명의 편의를 위해 정의되며, 컴포넌트 부분들의 특정한 물리적 배열을 내포하도록 의도되지는 않는다는 점이 이해되어야 한다. 또한, 블록들이 물리적으로 상이한(distinct) 컴포넌트들에 대응할 필요는 없다.
모바일 컴퓨팅 디바이스(200)의 액세서리 I/O 인터페이스(205) 및 액세서리(202)의 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 모바일 컴퓨팅 디바이스들(200)로 하여금 액세서리(202)에 접속되게 하고 후속적으로 액세서리(202)로부터 접속해제되게 한다. 여기서 사용되는 바와 같이, 모바일 컴퓨팅 디바이스(200) 및 액세서리(202)는 액세서리 I/O 인터페이스(205)와 모바일 컴퓨팅 디바이스 I/O 인터페이스(250) 사이에 통신 채널이 오픈될 때마다 "접속"되고, 통신 채널이 폐쇄될 때마다 "접속해제"된다. 접속은 (예를 들어, 모바일 디바이스(200)와 액세서리(202)의 각각의 맞는 커넥터들 사이의) 물리적 부착(attachment)에 의해, 케이블과 같은 간접적 부착에 의해, 또는 무선 통신 채널의 설정에 의해 달성될 수 있다. 유사하게, 접속해제는 물리적 부착해제(detachment), 케이블의 접속해제, 액세서리(202) 또는 모바일 컴퓨팅 디바이스(200)의 파워 다운, 또는 무선 통신 채널의 폐쇄에 의해 달성될 수 있다. 따라서, 유니버설 직렬 버스("USB"), Fire Wire (IEEE 1394 표준) 또는 유니버설 비동기 수신기/송신기("UART")와 같은 유선 채널들, 또는 블루투스(블루투스 SIG에 의해 개발되고 상표 블루투스? 하에서 라이센싱되는 단거리 무선 통신 표준), WiFi(IEEE 802.11 계열 표준 중 임의의 것에 따름), 무선 개인 영역 네트워크, 적외선 등과 같은 무선 채널들을 포함하는, 다양한 통신 채널들이 사용될 수 있다. 일부 실시예들에서, 유선 및 무선 채널 모두를 사용하여 통신이 발생할 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스와 액세서리 사이에 다수의 통신 채널들이 동시에 오픈될 수 있거나, 모바일 컴퓨팅 디바이스는, 각각의 액세서리가 상이한 통신 채널을 사용하는, 다수의 액세서리들에 동시에 접속될 수 있다.
특정 통신 채널과는 무관하게, 모바일 컴퓨팅 디바이스(200) 및 액세서리(202)가 서로 접속되는 한, 디바이스들은 액세서리 통신 프로토콜에 의해 특정되는 바와 같이 커맨드들 및 데이터를 교환함으로써 통신할 수 있다. 액세서리 통신 프로토콜은 모바일 컴퓨팅 디바이스(200)와 액세서리(202) 사이에서 메시지들을 송신하기 위한 포맷을 정의할 수 있다. 예를 들어, 액세서리 통신 프로토콜은 각각의 메시지가 헤더, 페이로드 및/또는 테일을 가지는 패킷으로 전송되는 것을 특정할 수 있다. 헤더는 시작 표시자, 패킷의 길이, 및 수신자에 의해 프로세싱될 커맨드와 같은 기본 정보를 제공할 수 있는 반면, 페이로드는 커맨드와 연관된 임의의 데이터를 제공하는데, 연관된 데이터의 양은 상이한 커맨드들에 대해 상이할 수 있으며, 일부 커맨드들은 가변 길이 페이로드들을 제공할 수 있는 테일을 포함할 수 있다. 또한, 패킷은 예를 들어, 당해 기술분야에 공지된 바와 같은 에러-검출 또는 에러-정정 코드들 및/또는 필요한 경우 다른 정보를 제공할 수 있다. 다양한 실시예들에서, 액세서리 통신 프로토콜은 수신자에 의해 취해질 동작을 표시하고, 작업의 완료, 상태의 변경, 또는 에러의 발생을 시그널링하고, 그리고/또는 연관된 데이터의 속성을 식별하기 위해 특정 커맨드들을 정의할 수 있다. 일부 실시예들에서, 커맨드들은 임의의 특정 커맨드가 오직 한 방향으로만 유효하도록 정의될 수 있다.
액세서리 통신 프로토콜은 또한 디바이스들 사이에서 신호들을 전송하기 위해 사용가능한 하나 이상의 물리적 전송 링크들을 특정할 수 있다. 예를 들어, 전송 링크는 USB 링크, UART 링크, Fire Wire 링크, 블루투스 링크, WiFi 링크, 병렬 링크, 직렬 링크 등일 수 있다. 이 레벨에서, 액세서리 통신 프로토콜은, 예를 들어, 시작 바이트, 싱크 바이트, 중지 바이트 및/또는 다른 보조 신호들을 특정할 수 있다. 일부 실시예들에서, 액세서리 통신 프로토콜은 다수의 대안적인 전송 링크들을 제공할 수 있고, 따라서, 단일의 모바일 컴퓨팅 디바이스가 유선 및/또는 무선 링크들을 포함하는 다양한 물리적 링크들을 통한 통신을 지원할 수 있다.
액세서리 통신 프로토콜은 다수의 "링고들"을 정의할 수 있으며, 여기서 "링고"는 일반적으로 다양한 클래스들의 액세서리들에 의해 지원될 수 있는(또는 지원될 수 없는) 관련 커맨드들의 그룹을 지칭한다. 일 실시예에서, 커맨드는 커맨드가 속하는 링고를 식별하는 제1 바이트 및 링고 내의 특정 커맨드를 식별하는 제2 바이트에 의해 고유하게 식별될 수 있다. 다른 커맨드 구조들 역시 사용될 수 있다. 모든 액세서리들, 또는 액세서리가 접속될 수 있는 모든 모바일 컴퓨팅 디바이스들이 액세서리 통신 프로토콜 내에 정의되는 모든 링고 또는 특정 링고 내의 모든 커맨드를 지원하는 것이 요구되지는 않는다(예를 들어, 상이한 디바이스들은 주어진 링고의 상이한 버전들을 사용할 수 있다).
일부 실시예들에서, 서로 상호 동작하도록 설계되는 모든 액세서리(202) 및 모든 모바일 컴퓨팅 디바이스(200)는 모든 이러한 디바이스들에 대해 공통인 커맨드들을 포함하는 적어도 "일반적인" 링고를 지원한다. 일반적인 링고는, (존재하는 경우) 어떤 다른 링고들이 각각 지원하는지 그리고 다른 디바이스의 어느 성능들이 각각 접속되는 동안 사용되도록 의도하는지를 포함하여, 모바일 컴퓨팅 디바이스 및 액세서리로 하여금 서로 자신들을 식별하고, 자신의 개별 성능들에 관한 적어도 일부 정보를 제공하게 할 수 있는, 커맨드들을 포함할 수 있다.
일반적인 링고는 또한 모바일 컴퓨팅 디바이스가 액세서리의 알려진 신원 및 성능들을 검증하기 위해 사용할 수 있는(또는 그 역도 성립) 인증 커맨드들을 포함할 수 있고, 인증이 성공적이지 않은 경우 액세서리(또는 모바일 컴퓨팅 디바이스)가 특정 커맨드들 또는 링고들의 인보킹으로부터 블로킹될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(200) 내의 인증 매니저(미도시)는 예를 들어, 공용 키 암호화에 기초하여 인증 절차를 수행하기 위해 액세서리(202) 내의 인증 제어기(또한 미도시)와 통신하고, 모바일 컴퓨팅 디바이스(200)의 인증 매니저 내에 유지되는 디지털 인증서들의 스토어와 통신할 수 있다.
일반적인 링고 또는 액세서리 통신 프로토콜의 또다른 링고는 또한 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226)과 액세서리(202) 사이의 임의의 정보의 교환을 허용하는 "터널" 커맨드들을 포함할 수 있다. 예를 들어, TunnelToAcc 커맨드는 모바일 컴퓨팅 디바이스(200)에 의해 액세서리(202)로 송신가능한 것으로서 정의될 수 있다. 이 커맨드의 페이로드는 임의의 데이터, 제어 신호들, 또는 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226)이 생성하여 액세서리(202)에 송신할 수 있는 다른 정보일 수 있다. 유사하게, TunnelToHost 커맨드는 액세서리(202)에 의해 모바일 컴퓨팅 디바이스(200)로 송신가능한 것으로서 정의될 수 있다. 이 커맨드의 페이로드는 임의의 데이터, 제어 신호들, 또는 액세서리(202)가 생성하여 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226)에 송신할 수 있는 다른 정보일 수 있다. 이들 터널 커맨드들은 액세서리 통신 프로토콜이 페이로드 컨텐츠에 대해 불가지론적(agnostic)이 되도록 정의될 수 있다. 특정 애플리케이션이 데이터, 제어 신호들 또는 다른 정보를, 이를 프로세싱할 수 있는 액세서리들에만 송신하도록 통신을 관리하기 위한 기술들의 예들이 아래에 기술된다.
일부 실시예들에서, 액세서리는 애플리케이션 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 하나 이상의 애플리케이션들과 연관된 API와 통신할 수 있다. 예를 들어, 이러한 통신은 전술된 바와 같이 "터널" 커맨드를 사용할 수 있다. 일부 실시예들에서, 액세서리는 액세서리 통신 프로토콜을 사용하여 하나 이상의 애플리케이션과 연관된 API와 통신할 수 있다. 다른 실시예들에서, 액세서리는 또한 액세서리 통신 프로토콜 및/또는 애플리케이션 통신 프로토콜 중 어느 하나 또는 이들 모두를 사용하여 모바일 컴퓨팅 디바이스 운영 체제와 통신할 수 있다. 따라서, 여기서 개시된 실시예들은 액세서리 통신 프로토콜 및/또는 애플리케이션 통신 프로토콜 중 어느 하나 또는 이들 모두를 사용하여 액세서리로부터 애플리케이션, API, 및/또는 모바일 컴퓨팅 디바이스에서의 운영 체제로의 통신을 용이하게 하기 위해 사용될 수 있다.
모바일 통신 디바이스 및 액세서리에 의해 지원되는 액세서리 통신 프로토콜은 다양한 다른 링고들, 예를 들어, 액세서리로 하여금 인보크될 모바일 컴퓨팅 디바이스의 기능을 표시하는 커맨드를 송신하게 하는 단순 원격 링고, 액세서리 상에서 모바일 컴퓨팅 디바이스의 사용자 인터페이스의 일부 또는 모두의 복제와 관련된 커맨드들 및 데이터를 전달하기 위해 사용될 수 있는 원격 사용자 인터페이스 링고(이에 의해 보다 더 개선된 원격 제어를 지원함), 사용자로 하여금 모바일 컴퓨팅 디바이스를 동작시킴으로써 튜너 액세서리를 제어하게 하는 튜너 링고, 액세서리가 모바일 컴퓨팅 디바이스 상에 데이터를 저장하게 하는 스토리지 링고 등을 포함할 수 있다. 임의의 링고 또는 링고들의 조합 또는 다른 커맨드들 또는 커맨드들의 그룹들이 여기서 기술되는 실시예들과 관련하여 사용될 수 있다.
여기서 기술되는 액세서리 통신 프로토콜이 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 여기서 기술되는 특정 커맨드들은 다른 커맨드들 또는 커맨드들의 조합 또는 다른 타입들의 메시지들 및 포맷으로 교체될 수 있다. 또한, 여기서 기술되는 커맨드들 및 동작들 모두가 임의의 특정 모바일 통신 디바이스 또는 액세서리에 의해 지원되는 것이 요구되지 않는다.
여기서 주지된 바와 같이, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226) 및 액세서리(202)는 임의의 데이터, 제어 신호들, 및/또는 다른 정보(또한 여기서 "메시지들"로 지칭됨)를 교환할 수 있다. 이들 메시지들은 매우 다양한 환경들과 관련할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(200)에서 발생할 수 있는 사용자 입력 이벤트들, 검출된 외부 조건들, 수신된 데이터 또는 임의의 다른 이벤트들 또는 조건들과 관련된 메시지들이 액세서리(202)에 전달될 수 있다. 반대로, 액세서리(202)에서 발생할 수 있는 사용자 입력 이벤트들, 검출된 외부 조건들, 수신된 데이터 또는 다른 이벤트들 또는 조건들과 관련된 메시지들이 모바일 컴퓨팅 디바이스(200)에 전달될 수 있다.
예를 들어, 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는, 예를 들어, 사용자 인터페이스(255)를 통한 사용자로부터의 입력 이벤트들, 예를 들어, 터치 스크린 이벤트들, 버튼 누름, 스크롤 휠 이벤트들 등을 프로세싱할 수 있다. 모바일 컴퓨팅 디바이스(200)는 입력 이벤트들을 나타내는 데이터를 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션에, 액세서리(202)에, 또는 둘 모두에 제공할 수 있다. 액세서리(202)는 이러한 데이터를, 예를 들어, 액세서리 특정 하드웨어(275)를 제어하기 위한 그리고/또는 제어기(260)에서 프로세싱하기 위한 입력으로서 분석할 수 있다. 예를 들어, 터치 스크린 데이터는 애플리케이션, 액세서리(202) 또는 둘 다에 의한 사용을 위해 모바일 컴퓨팅 디바이스(200)에 의해 선택될 수 있으며, 일부 실시예들에서, 터치 스크린 데이터는 갖다대기(swipe), 찍기(pinch), 드래그들, 또는 다른 제스처와 같은 움직임들 및/또는 탭들을 나타내는 데이터를 포함할 수 있다. 일부 실시예들에서, 터치 스크린 데이터는 미가공(raw) 데이터 포맷(예를 들어, 손가락 움직임에 대응하는 압력이 검출된 곳을 나타내는 좌표들의 시퀀스)으로 송신될 수 있다. 다른 실시예들에서, 터치 스크린 데이터는 액세서리로 송신되기 전에, 제스처 이벤트들(예를 들어, 탭, 한 포인트에서 다른 포인트로 갖다 대기 또는 드래그, 찍기 등)과 같은 프로세싱된 데이터로 변환될 수 있다. 일부 실시예들에서, 미가공 키보드 데이터가 액세서리에 송신될 수 있고 그리고/또는 프로세싱된 키보드 데이터가 액세서리에 송신될 수 있다. 일부 실시예들에서, 일부 또는 모든 타입들의 사용자 입력 데이터는 예를 들어, 하기에 기술되는 바와 같이, 애플리케이션 및 애플리케이션 프로토콜을 사용하여 액세서리(202)에 전달될 수 있고, 다른 실시예들에서, 일부 또는 모든 타입들의 사용자 입력 데이터는 액세서리 통신 프로토콜을 사용하여 액세서리 통신 프로토콜이 특정 타입의 사용자 입력 데이터의 송신을 지원하는 범위로 전달될 수 있다.
또한, 모바일 컴퓨팅 디바이스(200)는 액세서리(202)에 사용자 입력이 아닌 정보를 송신할 수 있다. 예를 들어, 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 사용자 입력 디바이스들 뿐만 아니라 다양한 센서들 및/또는 데이터 수집 디바이스들을 포함할 수 있으며, 그 예들은 가속도 측정기, 자이로스코프, 컴퍼스, 위치 결정 디바이스(예를 들어, GPS(Global Positioning System) 수신기 또는 전화 삼각측량 시스템), 광센서, 적외선 센서, 카메라, 네트워크 인터페이스(예를 들어, 전화, WiFi, 블루투스) 등을 포함할 수 있다. 모바일 컴퓨팅 디바이스(200)는 예를 들어, 액세서리(202)로부터의 특정 요청에 응답하여, 액세서리(202)에 임의의 또는 모든 이러한 데이터를 제공할 수 있다. 일부 실시예들에서, 일부 또는 모든 이러한 데이터는, 예를 들어, 하기에 기술되는 바와 같이, 애플리케이션 및 애플리케이션 프로토콜을 사용하여 액세서리(202)에 전달될 수 있으며, 다른 실시예들에서, 일부 또는 모든 이러한 데이터는 액세서리 통신 프로토콜을 사용하여 액세서리 통신 프로토콜이 특정 타입의 정보의 송신을 지원하는 범위로 전달될 수 있다.
또다른 예에서, 액세서리(202)는 모바일 컴퓨팅 디바이스(200)로부터 입력 이벤트들을 수신할 수 있다. 이러한 이벤트들은, 전술된 데이터 타입들 중 임의의 타입을 포함하지만 이에 제한되지 않는, 사용자 입력 및/또는 모바일 컴퓨팅 디바이스(200)에서 검출되는 다른 데이터에 대응할 수 있다. 일부 실시예들에서, 이러한 입력 이벤트들은 액세서리 특정 하드웨어(275)를 제어하기 위해 액세서리(202)에서 제어기(260)에 의해 프로세싱될 수 있다. 예를 들어, 터치 스크린 또는 모바일 컴퓨팅 디바이스(200)에서의 다른 사용자 입력 이벤트들이 액세서리(202)로 송신되어 액세서리 특정 하드웨어(275)를 턴온하고, 액세서리 특정 하드웨어(275)의 상태를 변경시키고, 액세서리 특정 하드웨어(275)로부터 데이터를 수신하고, 액세서리 특정 하드웨어(275)에 데이터를 제공하고, 액세서리 특정 하드웨어(275)를 턴오프하고 그리고/또는 액세서리 특정 하드웨어(275)에 대한 세팅들을 설정할 수 있다. 터치 스크린 데이터는, 예를 들어, 미가공 데이터 포맷으로 또는 분석된 이벤트들(예를 들어, 누르기, 갖다 대기, 찍기)로서 송신될 수 있다. 일부 실시예들에서, 액세서리 특정 소프트웨어(280)는 미가공 터치 스크린 데이터를 수신 및/또는 분석하기 위한 명령어들을 포함할 수 있다. 일부 실시예들에서, 액세서리 특정 소프트웨어(280)는 미가공 터치 스크린 데이터를 커맨드들로 번역(translate)하기 위한 명령어들 및/또는 액세서리 특정 하드웨어(275)에 대한 제어들을 포함할 수 있다. 또다른 실시예에서, 터치 스크린 데이터는, 데이터를 분석하고 대응하는 커맨드들 및/또는 정보를 액세서리(202)로 송신할 수 있는, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션에 미가공 포맷으로 제공될 수 있다.
또한, 모바일 컴퓨팅 디바이스(200)로부터 액세서리(202)에서 수신되는 입력 이벤트들은 액세서리 특정 소프트웨어(280)를 실행하는 제어기(260)에 의해 프로세싱될 수 있다. 일부 실시예들에서, 액세서리 특정 소프트웨어(280)는 모바일 컴퓨팅 디바이스(200)로부터 수신되는 입력 이벤트들에 응답하여 액세서리 특정 하드웨어(275)와 상호작용할 수 있다.
또한, 일부 실시예들에서, 액세서리 특정 하드웨어(275)는 또한 액세서리(202)와의 접속을 통해 모바일 컴퓨팅 디바이스(200)에 의해 제어될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은, 프로세서(230)에 의해 실행되는 경우, 액세서리(202)에서 액세서리 특정 하드웨어(275)를 제어하고, 액세서리 특정 하드웨어(275)와 인터페이스하고, 액세서리 특정 하드웨어(275)와 상호동작하고, 그리고/또는 액세서리 특정 하드웨어(275)로부터 신호들을 수신할 수 있는 프로그램 코드를 포함할 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 액세서리(202)의 제어기(260) 상에서 실행하고, 이에 의해 제어기(260)에 액세서리 특정 하드웨어(275)와 통신하고 그리고/또는 액세서리 특정 하드웨어(275)의 동작을 제어하도록 명령하는 제어 프로그램과 메시지들을 교환할 수 있다. 이러한 메시지들은, 예를 들어, 하기에 기술되는 바와 같이, 애플리케이션 프로토콜을 사용하여 교환될 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 제어기(260)에 입력 데이터를 제공할 수 있다. 예를 들어, 액세서리 특정 하드웨어(275)는 물리적 특성들을 제어기(260)에 송신되고 그리고/또는 메모리(265)에 저장될 수 있는 데이터(또는 데이터를 나타내는 전자 신호들; 상기 용어들은 상호교환가능하게 사용됨)로 변환할 수 있는 측정 센서를 포함할 수 있다. 제어기(260)는 상기 데이터를 프로세싱(예를 들어, 캘리브레이션 정정의 적용, 잡음 감소, 및/또는 다른 데이터-프로세싱 동작들)할 수 있다. 프로세싱된 데이터는 액세서리(202)로부터 모바일 컴퓨팅 디바이스(200)로 송신될 수 있다. 모바일 컴퓨팅 디바이스(200)에서, 애플리케이션은 데이터를 추가적으로 프로세싱하고 그리고/또는 사용자 인터페이스를 통해 사용자에게 데이터를 제공할 수 있다. 또한, 애플리케이션은 데이터에 응답하여 임의의 수의 기능들을 수행할 수 있다.
일부 실시예들에서, 액세서리 및 애플리케이션은 원하는 임의의 메시지들을 교환할 수 있으며, 여기서 용어 "메시지"는 일반적으로, 임의의 타입의 제어 신호, 이벤트, 데이터, 상태 또는 구성 정보, 또는 송신자에게 이용가능한 임의의 다른 타입의 정보를 지칭한다. 메시지들의 교환을 용이하게 하기 위해, 액세서리 및 애플리케이션은 상호 동의된 애플리케이션 프로토콜을 사용할 수 있다. 애플리케이션 프로토콜은 교환될 수 있는 메시지들에 대해 수용되는 포맷들의 범위(universe)를 특정할 수 있다. 특정 애플리케이션 프로토콜에 따르는 디바이스들 또는 프로그램들은 이들이 수용되는 포맷들의 애플리케이션 프로토콜의 범위에 따라 송신하는 메시지들을 구성할 수 있으며, 이들이 수용되는 포맷들의 애플리케이션 프로토콜의 범위에 따라 수신하는 메시지들을 분석할 수 있다. 예를 들어, 바이너리 디지털 통신의 경우, 애플리케이션 프로토콜은 메시지를 포함하는 비트들이 수신자에 의해 어떻게 분석되어야 하는지를 특정할 수 있다. 따라서, 액세서리 통신 프로토콜처럼, 애플리케이션 프로토콜은 패킷 구조들, 커맨드들, 링고들, 페이로드 포맷들 및/또는 다른 포맷들, 데이터 구조들, 하나의 참여자에 의해 송신된 특정 메시지가 수신자에 의해 정확하게 분석되도록 하는 분석의 시맨틱(semantics) 및 규칙들을 특정할 수 있다. 실제로, 일부 실시예들에서, 액세서리 통신 프로토콜의 일부분들은 특정 액세서리 및/또는 애플리케이션에 대한 애플리케이션 프로토콜의 일부 또는 전부로서 직접 채택될 수 있다.
여기서 기술되는 특정 실시예들에서, 액세서리 프로토콜 메시지들은 예를 들어, 전술된 바와 같은 터널링 커맨드들을 사용하여, 액세서리 통신 프로토콜에 따르는 패킷들 내에 메시지들을 캡슐화, 랩핑, 또는 패키지화함으로써 디바이스들 사이에서 송신될 수 있다. 따라서, 액세서리 통신 프로토콜에 의해 특정되는 전송 링크가 사용될 수 있으며, 애플리케이션 프로토콜이 물리적 전송 링크를 특정할 필요가 없다.
다양한 상이한 애플리케이션 프로토콜들을 사용하는 제한되지 않은 범위의 액세서리들 및 애플리케이션들이 특정 모바일 컴퓨팅 디바이스(또는 모바일 컴퓨팅 디바이스들의 라인)와 함께 사용하기 위해 생성될 수 있다는 점이 참작된다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 각각의 실행중인 그리고/또는 설치된 애플리케이션에 의해 사용되는 애플리케이션 프로토콜(들) 및 각각의 접속된 액세서리에 의해 사용되는 애플리케이션 프로토콜(들)의 추적을 포함하는 애플리케이션 프로토콜 관리 성능을 가지고 (예를 들어, 애플리케이션 매니저를 사용하여) 구성될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(200)는 특정 액세서리와 함께 사용될 적절한 애플리케이션의 식별 및/또는 적절한 액세서리가 특정 애플리케이션에 대해 사용가능한지의 여부의 식별을 용이하게 하기 위해 시스템 서비스를 제공할 수 있다. 이들 서비스들은 모바일 컴퓨팅 디바이스(200)의 시스템 서비스들을 요구하지 않고 제공되어 임의의 애플리케이션 프로토콜에 따라 구현 또는 통신할 수 있다.
도 3은 본 발명의 실시예에 따른 모바일 컴퓨팅 디바이스(200) 내의 다양한 모듈들 및 프로세스들을 도시하는 블록도이다. 도시된 다양한 모듈들은 도 2의 프로세서(230) 상에서 실행하는 프로그램들, 모바일 컴퓨팅 디바이스(200) 내의 다른 프로세서들 상에서 실행하는 프로그램들, 애플리케이션-특정 집적 회로, 또는 다른 구현들에 대응할 수 있다. 일부 실시예들에서, 단일 칩 내의 다수의 프로세서 칩들 또는 다수의 프로세서 코어들은 여기서 기술되는 다양한 모듈들 및 프로세스들을 구현하기 위해 사용될 수 있다. 프로세서들의 일부 또는 전부는 소프트웨어 및/또는 펌웨어 프로그램들을 실행하는 프로그램가능한 범용 프로세서들일 수 있고, 다른 프로세서들은 디지털 신호 프로세서들, 내장 기능을 가지는 상태 머신, 또는 이들의 임의의 조합일 수 있다.
포트들(305-307)은 각각 액세서리들(300-302)에 대한 통신 채널들을 제공한다. 포트들(305-307) 각각은 특정 통신 채널을 지원하는 물리적 및/또는 논리적 포트일 수 있다. 예를 들어, 포트(305)는 USB 또는 UART와 같은 유선 채널과 연관된 물리적 포트일 수 있고, 적절한 제어 소프트웨어와 함께 하드웨어 엘리먼트들(예를 들어, USB-호환가능한 드라이버 회로들 및/또는 핀들)을 포함할 수 있다. 포트(306)는 블루투스와 같은 무선 채널과 연관된 논리적 포트(예를 들어, 가상 직렬 포트)일 수 있다. 일부 실시예들에서, 각각의 포트(305-307)는 해당 포트와 연관된 특정 물리적 전송 또는 채널에 적용된 것과 같은 액세서리 통신 프로토콜에 따르는 메시지들을 송신 및 수신할 수 있다. 3개의 포트들이 도시되지만, 모바일 컴퓨팅 디바이스가 임의의 개수의 물리적 및/또는 논리적 포트들을 임의의 조합으로 지원하도록 설계될 수 있다는 점이 이해된다. 또한, 하기에 기술되는 바와 같이, 단일 액세서리는 일부 실시예들에서 다수의 포트들에 접속할 수 있다.
예를 들어, 프로세서(230)에 의해 실행되는 펌웨어 또는 소프트웨어 모듈일 수 있는 프로토콜 매니저(310)는 포트들(305-307)로부터 모바일 컴퓨팅 디바이스-프로토콜 메시지들(또한 커맨드들로서 지칭됨)을 수신하고, 메시지들을 분석하는 프로세스를 시작할 수 있다. 일부 실시예들에서, 프로토콜 매니저(310) 또는 프로토콜 매니저(310)와 연관된 연관 프로토콜 데몬(미도시)이 또한 포트들(305-307)을 생성 또는 정의할 수 있고 이들을 적절한 통신 하드웨어, 예를 들어, 커넥터 핀들과 드라이버 회로들, 무선 트랜시버들 등에 접속시킬 수 있다. 일 실시예에서, 프로토콜 매니저(310)(또는 그 연관된 프로토콜 데몬)는 다양한 포트들 상에서 수신된 인바운드 모바일 컴퓨팅 디바이스-프로토콜 메시지들을 추출하여 지원층(315) 또는 모바일 컴퓨팅 디바이스(200) 내의 다른 컴포넌트들에 상기 추출된 메시지들을 전달할 수 있다. 따라서, 도 3의 프로세스 스택의 상위 레벨들은 특정 전송 링크와는 독립적일 수 있다.
또다른 실시예에서, 프로토콜 매니저(310)는 지원층(315)으로부터 접속된 액세서리(예를 들어, 액세서리들(300-302) 중 임의의 액세서리)에 대해 의도된 아웃바운드 정보(예를 들어, 메시지를 생성했던 애플리케이션(404)에 의해 애플리케이션 프로토콜에 따라 구성되었던 메시지)를 수신하고, 아웃바운드 메시지를 모바일 컴퓨팅 디바이스-프로토콜 패킷으로 패키지화하고, 원하는 액세서리에 접속된 포트들(305-307) 중 하나에 상기 패킷을 전달할 수 있다.
일부 실시예들에서, 프로토콜 매니저(310)(또는 연관된 프로토콜 데몬)는 또한 포트들의 오픈 및 폐쇄를 지원 및/또는 제어할 수 있다. 예를 들어, 가상 포트의 경우, 프로토콜 매니저(310)는 시작시 가상 포트들의 세트를 생성하고, 접속들이 요청 및/또는 종료됨에 따라 포트들을 오픈 및/또는 폐쇄할 수 있다.
프로토콜 매니저(310)는 특정 애플리케이션 프로토콜들을 특정 포트들과 연관시키는 동적 포트 맵(325)을 유지할 수 있다. 예를 들어, 액세서리, 예컨대, 액세서리(300)가 특정 포트, 예컨대 포트(305) 상에서 모바일 컴퓨팅 디바이스(200)에 대한 접속을 설정하는 경우, 액세서리(300)는, 예를 들어, 포트(305)를 통해 프로토콜 명칭 스트링을 제공함으로써, 프로토콜 매니저(310)에 대해 자신이 지원하는 애플리케이션 프로토콜(들)(예를 들어, 액세서리(300)의 경우, AP3)을 식별할 수 있다. 프로토콜 매니저(310)는 포트맵(325)에서 애플리케이션 프로토콜 명칭과 포트 사이의 연관을 저장할 수 있다. 액세서리가 후속적으로 접속해제되는 경우, 연관은 포트 맵(325)으로부터 제거될 수 있다. 따라서, 포트 맵(325)은 애플리케이션들에 의한 사용을 위해 현재 사용가능한 애플리케이션 프로토콜들의 리스트를 제공할 수 있다. 하기에 기술되는 바와 같이, 이러한 리스트는 액세서리들과 애플리케이션들 사이의 통신을 라우팅하는 것, 및 호환가능한 액세서리들이 접속될 때 호환가능한 애플리케이션들을 통지하는 것을 용이하게 한다.
소프트웨어 지원층(315)은 프로토콜 매니저(310)(및 선택적으로 다른 저-레벨 디바이스 기능들)와 모바일 컴퓨팅 디바이스(200) 상에서 실행될 수 있는 애플리케이션들(320-322) 사이의 중재자(intermediary)로서 동작할 수 있다. 예를 들어, 소프트웨어 지원층(315)은 애플리케이션 프로그램 인터페이스(API)를 제공할 수 있으며, 상기 API를 통해 애플리케이션들이 디바이스 기능성을 인보크할 수 있다. 소프트웨어 지원층(315)은 애플리케이션들(320-322)에 추가(extra) 레벨의 디바이스 독립성을 제공할 수 있지만, 당업자는 도 3에 도시된 모든 층들이 요구되는 것은 아니라는 점을 이해할 것이다. 예를 들어, 일부 실시예들에서, 프로토콜 매니저(310)는 애플리케이션들(320-322)과 직접 통신할 수 있다.
도시된 일부 실시예에서, 지원층(315)은 액세서리 정보 룩업 테이블(330)을 제공할 수 있다. 일 실시예에서, 액세서리 정보 테이블(330)은 각각의 접속된 액세서리에 관한 정보, 예를 들어, 액세서리 타입, 액세서리 식별자, 및/또는 액세서리에 의해 지원되는 하나 이상의 애플리케이션 프로토콜들의 명칭(들)을 포함할 수 있다. 액세서리 정보 테이블(330)은 액세서리들이 접속 및 접속해제됨에 따라 프로토콜 매니저(310)에 의해 제공되는 정보에 응답하여 채워지고(populate) 업데이트될 수 있다.
애플리케이션들(320-322)은 동시에 또는 순차적으로 애플리케이션들을 실행할 수 있으며, 예를 들어, 프로세서(230)에 의해 실행가능한 프로그램 코드로서 구현될 수 있다. 다양한 애플리케이션들(320-322)이 모바일 컴퓨팅 디바이스(200) 및/또는 접속된 액세서리들(300-302)과의 다양한 형태들의 사용자 상호작용을 제공할 수 있다. 예를 들어, 애플리케이션은 사용자 인터페이스를 접속된 측정 프로브 액세서리에 제공할 수 있다. 사용자 입력에 응답하여, 애플리케이션은 측정 데이터의 기록을 시작하고 측정 데이터의 기록을 중지하도록 측정 프로브에 명령할 수 있다. 또한, 애플리케이션은 측정 데이터를 사용자에게 제시할 수 있다. 애플리케이션은 데이터를 다양한 형태들로 변환할 수 있고 그리고/또는 추가적인 사용자 상호작용들, 예를 들어, 시간에 대한 측정치들의 기록들의 시청, 데이터에 대한 분석 동작의 수행(예를 들어, 평균화, 경향 분석, 그래픽 분석 등) 등을 제공할 수 있다.
실행 중인 애플리케이션(예를 들어, 애플리케이션들(320-322) 중 임의의 애플리케이션)은 호환가능한 액세서리(즉, 애플리케이션에 의해 사용되는 애플리케이션 프로토콜을 지원하는 액세서리)가 접속되는지의 여부를 결정하기 위해 임의의 시간에서 액세서리 정보 테이블(330)에 질의할 수 있다. 호환가능한 액세서리가 접속되는 경우, 애플리케이션은 애플리케이션 프로토콜을 사용하여 액세서리와 통신할 수 있다. 예를 들어, 하기에 기술되는 바와 같이, 애플리케이션은 액세서리와의 통신 세션을 개시할 수 있다.
여기서 기술되는 모듈들이 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 모바일 컴퓨팅 디바이스(200)는 임의의 타입의 애플리케이션을 지원할 수 있으며, 애플리케이션들은 사용자의 제어 또는 또다른 프로세스 하에서 개시 또는 종료될 수 있다. 지원층(315) 및 프로토콜 매니저(304)와 같은 특정 모듈들은 소프트웨어 및/또는 펌웨어에서 구현되고, 디바이스 파워-업 시에 자동으로 시작되고 파워 다운 또는 다양한 이상 조건들이 검출되는 경우에만 종료하도록 구성될 수 있으며, 애플리케이션들(320-322)은 사용자 입력 또는 다른 입력에 응답하여 시작 및 종료할 수 있다. 일부 실시예들에서, 애플리케이션은, 예를 들어, 하기에 기술되는 바와 같이, 대응하는 액세서리가 접속되는 경우 자동으로 개시될 수 있다. 다양한 모듈들 또는 프로세스들은 사용하지 않을 때 리소스 소모를 최소화하기 위해 비활성 상태로 될 수 있다. 또한, 여기서 도시되는 층들 및 모듈들 모두가 요구되지는 않는데, 예를 들어, 일부 실시예들에서, 애플리케이션들은 프로토콜 매니저와 직접 통신하여 지원층(315)을 바이패싱할 수 있다. 다른 실시예들에서, 도 3에서 분리된 것으로서 도시된 모듈들 또는 층들이 결합될 수 있거나, 추가적인 모듈들 또는 층들, 예를 들어, 모바일 컴퓨팅 디바이스(200)의 다양한 시스템 서비스들(예를 들어, 오디오 및/또는 비디오 재생, 네트워크 접속 등)과 연관된 프로토콜 데몬 및/또는 모듈들이 제공될 수 있다.
또한, 액세서리가 모듈들, 층들, 및 도 3에 도시된 것들과 유사한 다른 컴포넌트들, 또는 이들의 임의의 변경 또는 수정을 구현할 수 있다는 점이 이해되어야 한다. 액세서리가 액세서리 통신 프로토콜에 따라 모바일 컴퓨팅 디바이스와 정보를 교환할 수 있는 한, 내부 구현은 필요한 경우 달라질 수 있다.
도 3에 도시된 바와 같이, 일부 실시예들에서의 모바일 컴퓨팅 디바이스(200)는 애플리케이션들(320-322)의 다중 동시 실행 및/또는 다수의 액세서리들(305-307)에 대한 동시 접속들을 유지할 수 있다. 애플리케이션들 및/또는 액세서리들은 상이한(그리고 잠재적으로 호환불가능한) 애플리케이션 프로토콜들을 지원할 수 있으며, 각각의 애플리케이션 프로토콜에는 모든 다른 애플리케이션 프로토콜들과 구별하기 위한 명칭(예를 들어, 고유 스트링)이 할당될 수 있다. 예를 들어, 도 3의 실시예에서, 애플리케이션(320) 및 액세서리(301)는 애플리케이션 프로토콜 AP1를 지원하며, 애플리케이션(321) 및 액세서리(302)는 애플리케이션 프로토콜 AP2를 지원하며, 애플리케이션(322) 및 액세서리(300)는 애플리케이션 프로토콜 AP3을 지원한다.
제3 당사자가 애플리케이션들 및/또는 액세서리들을 독립적으로 개발할 수 있을 것이라는 점이 참작된다. 2개의 액세서리들(또는 애플리케이션들)이 동일한 액세서리 프로토콜 명칭을 실제로 호환가능하지 않은 애플리케이션 프로토콜들과 연관시킨다면, 이는, 예를 들어, 두 액세서리들 모두가 동일한 모바일 컴퓨팅 디바이스를 동시에 접속하려고 시도하는 경우, 명칭 충돌을 생성할 수 있다. 이러한 충돌들을 회피하기 위해, 애플리케이션 프로토콜 명칭들에 대해 중앙집중화된(centralize) 명칭 공간 관리를 제공하는 것이 바람직하다. 일부 실시예들에서, 중앙 명칭 공간 매니저(예를 들어, 모바일 컴퓨팅 디바이스의 제조자)는 그 개발자들로부터의 요청시 애플리케이션 프로토콜들에 명칭들을 할당할 수 있다. 또다른 실시예에서, 중앙 명칭 공간 매니저는, 만약 그에 따르는 경우, 명칭 충돌을 방지해야 하는 명명 규약을 단순히 정의할 수 있으며, 액세서리들 및/또는 애플리케이션들의 개발자들은 상기 규약에 따름으로써 충돌들을 회피할 수 있다.
일 실시예에서, 역 도메인 명칭 규약은 애플리케이션 프로토콜 명칭 공간을 관리하기 위해 채택된다. 종래의 도메인 명칭은, 왼쪽에서 오른쪽으로, 하위 레벨의 도메인들에서 상위 레벨의 도메인들로 제공한다. 예를 들어, 도메인 명칭 "help.example.com"에서, 용어 "com"은 최상위 레벨 도메인이고, 용어 "example"은 하위 레벨 도메인이고, 용어 "help"는 최하위 레벨 도메인이다. 또다른 예로서, 도메인 명칭 "mac.apple.com"은 왼쪽에서 오른쪽으로, 최하위 레벨 도메인 "mac", 중간 도메인 "apple", 및 최상위 레벨 도메인 "com"을 특정한다. 반면, 역 도메인 명칭들은 "com.apple.mac"을 제공할 것이다.
역 도메인 명칭 규약은 특정 회사에 의해 사용되는 애플리케이션 프로토콜들을 특정하기 위해 사용될 수 있다. 즉, 역 도메인 명칭 "com.company1. accessory1"은 "accessory1" 프로토콜이 회사(또는 다른 개발자) "company 1"와 연관됨을 특정한다. 따라서, 일반적으로, 회사는 역 도메인 명칭 규약을 사용하여 프로토콜을 구현할 수 있으며, 여기서, 역 도메인 명칭의 제1 부분은 회사("com.company1")를 참조하고, 회사(또는 다른 개발자)의 인터넷 도메인 명칭과 연관된다. 역 도메인 명칭의 제2 부분("accessory1")은 특정 프로토콜을 특정한다. 액세서리들 및/또는 애플리케이션들의 상이한 개발자들이 상이한 인터넷 도메인 명칭들과 연관되는 한, 역 도메인 명칭 규약은 개발자들로 하여금 인터넷 도메인 명칭의 역에 기반하여 자신들의 프로토콜들을 명명함으로써 애플리케이션들 및/또는 프로토콜들 및/또는 액세서리들을 다른 것들과 구별하게 한다. 이러한 규약은 개발자들로 하여금 다른 개발자들의 명명 규약들에 대한 고려 없이 자신들의 프로토콜들을 독립적으로 명명하게 한다. 또한, 동일한 명칭들을 사용하는 2명의 개발자들 간의 충돌이 존재하는 경우, 누가 대응하는 인터넷 도메인 명칭을 가지는지에 대한 간단한 체크로 어느 개발자가 특정 역 도메인 명칭에 대한 권한을 가지는지 결정되어야 한다.
일부 실시예들에서, 역 도메인 명칭들은 디바이스들의 클래스 내의 모든 디바이스들에 특정적인 글로벌 식별자를 포함하도록 부가(append)될 수 있다. 예를 들어, 모든 직렬 통과(serial pass through) 타입 디바이스들은 역 도메인 명칭에 부가된 식별자를 포함할 수 있다. 예를 들어, 이러한 역 도메인 명칭은 다음 포맷 "com.company1.accessory1.serialpass" 또는 "serialpass.com.company 1.accessory1"을 가질 수 있다. 이러한 규약을 가지고, 상이한 회사들이 직렬 통과 디바이스들을 생산할 수 있지만, 모바일 컴퓨팅 디바이스는 제조자 차이점에도 불구하고 이러한 디바이스들을 인지할 수 있다. 이러한 역 도메인 명칭 규약은 애플리케이션 프로토콜들이 어떻게 식별될 수 있는지에 대한 단 하나의 예일 뿐이다. 다른 타입의 규약이 사용될 수 있다.
따라서, 액세서리가 모바일 컴퓨팅 디바이스와 접속되는 경우, 액세서리는 역 도메인 명칭 규약을 사용하여 각각의 지원되는 프로토콜에 할당되었던 명칭을 공급함으로써 자신의 지원되는 애플리케이션 프로토콜들의 리스트를 모바일 컴퓨팅 디바이스에 제공할 수 있다. 액세서리는 단일의 애플리케이션 프로토콜 또는 다수의 애플리케이션 프로토콜들을 지원할 수 있다. 수신된 정보에 기초하여, 도 3의 모바일 컴퓨팅 디바이스(200)는 포트 맵(325), 액세서리 정보 테이블(330) 및/또는 다른 룩업 테이블들을, 액세서리 타입, 액세서리 식별자, 애플리케이션 프로토콜 명칭 및/또는 통신 포트 식별자와 같은 정보로 채울 수 있다. 하기에 기술되는 바와 같이, 애플리케이션들(320-322)은 호환가능한 액세서리들이 사용가능한지의 여부를 결정하기 위해 이들 룩업 테이블들을 사용할 수 있고, 지원층(315) 및/또는 프로토콜 매니저(310)는 애플리케이션 프로토콜들 중 어느 것도 이해해야 할 필요 없이 룩업 테이블들을 사용하여 통신들을 라우팅할 수 있다.
예를 들어, 모바일 컴퓨팅 디바이스(200)는 온도계와 무선으로 접속될 수 있으며, 또한 케이블을 사용하여 카메라와 접속될 수 있다(예를 들어, 도 3에서, 액세서리(302)는 온도계 및 포트 Z 무선 포트일 수 있는 반면, 액세서리(300)는 카메라 및 포트 X 유선 포트일 수 있다). 접속시, 온도계는 역 도메인 명칭 "com.temprus.thermometer1"을 송신함으로써 자신의 지원되는 애플리케이션 프로토콜을 식별할 수 있다. 이러한 역 도메인 명칭은 액세서리 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에 송신될 수 있다. 모바일 컴퓨팅 디바이스에서, 이러한 역 도메인 명칭은 룩업 테이블(예를 들어, 포트 맵(325) 및/또는 액세서리 정보 테이블(330))에 애플리케이션 프로토콜 명칭으로서 저장될 수 있는데, 일부 실시예들에서, 역 도메인 명칭은 온도계 및/또는 온도계가 액세스 될 수 있는 무선 포트에 대한 액세서리 식별자와 함께 저장될 수 있다. 유사하게, 접속시, 카메라는 후속하는 역 도메인 명칭 "com.camerasrus.camera1"을 송신함으로써 자신의 지원되는 애플리케이션 프로토콜을 식별하고, 다시 액세서리 통신 프로토콜을 사용할 수 있다. 이러한 역 도메인 명칭은 또한, 예를 들어, 카메라가 액세스될 수 있는 포트 및/또는 카메라에 대한 액세서리 식별자와 함께, 룩업 테이블(예를 들어, 포트 맵(325) 및/또는 액세서리 정보 테이블(330))에 저장될 수 있다.
모바일 컴퓨팅 디바이스(200)는 애플리케이션 프로토콜 "com.temprus.thermometer1"을 사용하여 온도계와 통신하는 온도 애플리케이션(예를 들어, 애플리케이션(321))을 실행하여 온도 판독을 수행할 수 있다. 실행 동안, 온도 애플리케이션은 룩업 테이블에 액세스하여, 예를 들어, 프로토콜 명칭 "com.temprus.thermometer1"을 검색함으로써 호환가능한 애플리케이션 프로토콜이 존재하는지의 여부를 알 수 있다. 온도 애플리케이션이 "com.temprus.thermometer1"을 발견하는 경우, 애플리케이션은 매치를 가지게 되며, com.temprus.thermometer1 애플리케이션 프로토콜을 사용하여 온도계와의 통신을 시작할 수 있다. 통신은, 예를 들어, 액세서리 통신 프로토콜의 터널링 커맨드들을 사용함으로써, 연관 포트를 통해 라우팅된다. 애플리케이션 프로토콜은 액세서리 통신 프로토콜에 특정된 것과는 상이할 수 있는 커맨드, 패킷 정보, 데이터 등을 특정할 수 있다. 또한, 애플리케이션 및/또는 액세서리를 제공하는 회사(예를 들어, TempRUs 사)는 애플리케이션들과 액세서리들 사이의 통신을 위해 임의의 통신 프로토콜을 구현할 수 있다.
도 4는 본 발명의 일부 실시예들에 따라 애플리케이션과 액세서리 사이의 통신을 추가적으로 예시하는 간략화된 도면이다. 모바일 컴퓨팅 디바이스(400)는, 모바일 컴퓨팅 디바이스(400) 상에서 실행하는 애플리케이션(404)으로 하여금 애플리케이션 프로토콜을 사용하여 액세서리(402)와 통신하게 하는 액세서리(402)에 접속될 수 있다.
도 4에 도시된 실시예에서, 애플리케이션(404)은, 액세서리(402)가 호환가능한 액세서리이며 지원층(408)에 대한 적절한 함수 호출들을 인보킹함으로써 세션(406)을 생성했다고 이미 결정하였다. 세션(406)은 예를 들어, 지원층(408)에 대한 API 호출을 사용하여 애플리케이션(404)에 의해 생성되는 소프트웨어 객체일 수 있다. 세션(406)은 그것을 생성한 애플리케이션(404), 및 세션을 생성할 경우 애플리케이션(404)에 의해 특정되는 특정 액세서리 및/또는 애플리케이션 프로토콜과 연관될 수 있다. 세션(406)은 특히, 자신의 컨텐츠가 각각 애플리케이션(404)으로부터 수신되고 애플리케이션(404)으로 전달되는 입력 스트림 및 출력 스트림을 제공할 수 있다(세션의 생성은 하기에 기술된다).
애플리케이션 프로토콜을 사용하여 액세서리(402)에 메시지(예를 들어, 제어 신호들 및/또는 다른 정보)를 전달하기 위해, 애플리케이션(404)은 메시지를 생성하고 이를 데이터로서 세션(406)의 출력 스트림에 기록한다. 이러한 실시예에서, 애플리케이션(404)은 단독으로 애플리케이션 프로토콜에 따라 메시지를 포맷하는 역할을 하며, 모바일 컴퓨팅 디바이스(400) 상의 다른 중재 프로세스들은 출력 스트림에 기록된 데이터를 변경시키지 않는다.
세션(406)은 출력 스트림 내의 데이터의 존재를 검출하고 대응하는 송신(SND) 명령을 프로토콜 매니저(410)에게 송신한다. SND 명령은 액세서리, 세션(406)과 연관된 액세서리 프로토콜 식별자들, 및 출력 스트림으로부터의 데이터를 나타내는 "번들"을 제공한다. 일부 실시예들에서, 번들은 메시지 데이터 모두에 대응할 수 있지만, 메시지의 길이 및 액세서리 통신 프로토콜에 의해 패킷 길이에 부과될 수 있는 제약에 따라, 번들은 또한 메시지 데이터의 일부분에만 대응할 수도 있다. 반대로, 일부 실시예들에서, 단일 번들이 다수의 애플리케이션 프로토콜 메시지들을 포함할 수 있다.
프로토콜 매니저(410)는 번들의 전송을 위한 포트를 선택하기 위해 포트 맵(412)과 함께 세션(406)에 의해 제공되는 액세서리 프로토콜 식별자들 및 액세서리를 사용할 수 있다. 프로토콜 매니저(410)는 또한 액세서리 통신 프로토콜의 커맨드, 예를 들어, 전술된 바와 같은 TunnelToAcc 커맨드 내에 번들을 패키지화할 수 있다. 액세서리 통신 프로토콜 커맨드는 전송을 위해 포트(414)로 송신된다(도 4에는 오직 하나의 포트만이 도시되지만, 모바일 컴퓨팅 디바이스(400)가 다수의 포트들을 가질 수 있다는 점이 이해된다).
도 5a-5c는 본 발명의 일부 실시예들에 따라 액세서리 통신 프로토콜 커맨드 내에 애플리케이션 프로토콜 메시지를 패키지화(또는 랩핑)하는 예를 예시한다. 도 5a는 액세서리 프로토콜 패킷(500)의 예를 도시한다. 도시된 바와 같이, 패킷(500)은 헤더(502) 및 페이로드(504)를 포함한다. 액세서리 통신 프로토콜은, 예를 들어, 헤더의 사이즈, 및 헤더(502) 내에 어떤 정보가 제공될 수 있는지를 지시(dictate)할 수 있다. 일부 실시예들에서, 헤더(502)는 페이로드에 무엇이 포함되는지 그리고/또는 페이로드 내의 데이터를 이용하여 무엇이 수행될 것인지를 표시할 수 있는 커맨드 또는 바이트 코드를 포함할 수 있다. 예를 들어, 도시된 실시예에서, 헤더(502)는 TunnelToAcc 커맨드에 대한 커맨드 코드를 포함한다. 헤더(502)는 또한 다른 정보, 예를 들어, 페이로드(504)의 사이즈를 특정하는 정보를 포함할 수 있다. 일부 실시예들에서, 선택적인 테일(506)은 패킷(500)의 종단에 포함될 수 있고, 테일은 에러들을 검출 또는 정정하기 위해 사용가능한 정보(예를 들어, 체크섬) 및/또는 필요한 경우 다른 정보를 포함할 수 있다. 당업자는 다양한 패킷 타입들이 액세서리 통신 프로토콜에 사용될 수 있다는 점을 인지할 것이다.
도 5b는 애플리케이션 프로토콜 패킷(510)의 예를 도시한다. 이 예에서, 애플리케이션 프로토콜 패킷(510)은 헤더(512)(애플리케이션 헤더), 페이로드(514)(애플리케이션 페이로드), 및 테일(516)을 포함한다. 다양한 다른 패킷 타입들, 스타일들, 구성들, 페이로드들, 정보 영역들 등이 애플리케이션 프로토콜 패킷에 사용될 수 있다. 실제로, 애플리케이션들 및/또는 액세서리들은 제한 없이 애플리케이션 개발자들에 의해 설계, 개발 및/또는 생성되는 바와 같은, 임의의 타입, 사이즈, 구성 등의 애플리케이션 프로토콜 패킷을 사용할 수 있으며, 일부 실시예들에서, 일부 또는 모든 애플리케이션 프로토콜 패킷들이 액세서리 통신 프로토콜 패킷들 상에서 모델링될 수 있다(또는 심지어 액세서리 통신 프로토콜 패킷들로부터의 컨텐츠에 의해 구별불가능할 수 있다). 일부 실시예들에서, 애플리케이션 프로토콜 패킷은 헤더를 포함할 수도 있고 포함하지 않을 수도 있다. 일부 실시예들에서, 애플리케이션 프로토콜 패킷은 테일을 포함할 수도 있고 포함하지 않을 수도 있다. 일부 실시예들에서, 애플리케이션 프로토콜 패킷은 고정 또는 가변 사이즈들을 가지는 페이로드(514)를 포함할 수 있다. 일부 실시예들에서, 커맨드들, 데이터, 및/또는 다른 메시지 엘리먼트들이 페이로드 및/또는 헤더 내에 제공될 수 있다. 커맨드들 및/또는 데이터 및/또는 다른 메시지 엘리먼트들의 특정 특성들은 애플리케이션 프로토콜에 의해 특정될 수 있다. 또한, 애플리케이션 프로토콜들은 메시지들에 대해 패킷 구조를 사용하도록 전혀 요구받지 않는데, 액세서리 프로토콜 메시지들은 수신자에 의해 정확하게 분석될 수 있는 임의의 포맷 및/또는 구조를 가질 수 있다.
도 5c는 액세서리 프로토콜 패킷(520)의 페이로드(504) 내에 패키지화된(또는 랩핑된) 애플리케이션 프로토콜 패킷(510)의 예를 도시한다. 도시된 바와 같이, 패킷(520)은 애플리케이션 프로토콜 패킷(510)에 의해 후속되는 액세서리 프로토콜 패킷 헤더(502)를 포함할 수 있다. 일부 실시예들에서, 헤더(502)는 페이로드가 애플리케이션 프로토콜 패킷임을 표시하는 커맨드 또는 바이트 코드를 포함할 수 있다. 이 예에서, 애플리케이션 프로토콜 패킷은 애플리케이션 프로토콜 패킷 헤더(512), 애플리케이션 프로토콜 패킷 페이로드(514), 및 애플리케이션 프로토콜 패킷 테일(516)을 포함한다. 애플리케이션 프로토콜 패킷(510)은 액세서리 프로토콜 패킷(520)의 페이로드(504)를 완전히 채울 수 있거나 완전히 채우지 않을 수도 있다. 보다 일반적으로, TunnelToAcc 커맨드에 대한 액세서리 프로토콜 패킷은 액세서리에 전달하도록 의도되는 임의의 데이터 번들을 포함할 수 있으며, 단일 액세서리 프로토콜 패킷의 전달에 제한되지 않는다.
다시 도 4를 참조하면, 액세서리(402)는 예를 들어, 포트(422)에서, 액세서리 프로토콜 TunnelToAcc 커맨드 패킷을 수신한다. 포트(422)는 TunnelToAcc 커맨드 패킷을 프로토콜 분석기(424)에 라우팅할 수 있는데, 이는 예를 들어, 제어기 또는 액세서리(402)의 다른 프로세서상에서 실행하는 소프트웨어 프로세스일 수 있다. 프로토콜 분석기(424)는 TunnelToAcc 커맨드를 판독하고, 여기에 포함된 번들을 추출하고, 번들을 제어기 또는 액세서리(402)의 다른 프로세서상에서 실행하는 다른 프로세스(426)에 포워딩할 수 있다. 프로세스(426)는 애플리케이션 프로토콜에 따르는 수신된 정보를 프로세싱할 수 있는 임의의 프로세스를 포함할 수 있다. 예를 들어, 프로세스(426)는 수신된 정보로부터 명령들을 추출하고, 액세서리-특정 하드웨어(예를 들어, 도 2의 액세서리 특정 하드웨어(275))에 대한 대응하는 제어 신호들을 생성하는 프로세스를 포함할 수 있다.
또한, 액세서리(402)로부터 모바일 컴퓨팅 디바이스(400)로의 통신이 지원된다. 예를 들어, 프로세스(426)는 애플리케이션 프로토콜에서 메시지에 대응하는 데이터 번들을 생성하고, 번들을 프로토콜 분석기(424)에 제공하여 모바일 컴퓨팅 디바이스(400)에 송신되게 할 수 있다. 프로토콜 분석기(424)는 (도 5a-5c에 도시된 예와 유사하게) 액세서리 통신 프로토콜의 TunnelToHost 커맨드 내에 번들을 패키지화하고, 모바일 컴퓨팅 디바이스(400)로의 전송을 위해 포트(422)로 커맨드를 송신할 수 있다.
모바일 컴퓨팅 디바이스(400)에서, 포트(414)는 TunnelToHost 커맨드 패킷을 수신하여 이를 프로토콜 매니저(410)에 포워딩한다. 프로토콜 매니저(410)는 TunnelToHost 커맨드를 인지하고, 이에 응답하여 번들을 추출하고, 이를, 번들과 연관된 액세서리 및 애플리케이션 프로토콜의 식별과 함께, 지원층(408)으로 포워딩한다. 일부 실시예들에서, 프로토콜 매니저(410)는 어느 포트가 TunnelToHost 커맨드를 전달하였는지에 기초하여 이들 식별자들을 결정할 수 있고, 따라서, TunnelToHost 커맨드는 액세서리 또는 애플리케이션 프로토콜의 식별을 제공할 필요가 없다.
지원층(408)은 액세서리 및 액세서리 프로토콜 식별자들을 사용하여 세션(406)의 입력 스트림에 대한 번들을 전달(direct)한다. 애플리케이션(404)은 이후 세션(406)의 입력 스트림으로부터 인입 데이터를 판독하고, 애플리케이션 프로토콜에 따라 데이터를 분석하고, 그에 따라 응답할 수 있다.
따라서, 예를 들어, 애플리케이션(404)은 온도계 애플리케이션일 수 있고, 액세서리(402)는 온도계를 포함할 수 있다. 애플리케이션(404)은 적절한 애플리케이션 프로토콜(예를 들어, "com.temprus.thermometer1"이라고 명명된 프로토콜)을 사용하여 액세서리(402)로부터 온도 측정을 요청할 수 있다. 애플리케이션 프로토콜은, 예를 들어, 액세서리로부터 온도 데이터를 요청하기 위해 애플리케이션에 의해 송신되는 Get_Temp 커맨드를 특정할 수 있다. 애플리케이션(404)은, 예를 들어, Get_Temp 커맨드 및 커맨드와 연관된 임의의 선호도들 또는 변수들(예를 들어, 온도 데이터를 화씨로 리턴시킬지 또는 섭씨로 리턴시킬지의 여부)을 포함하는 애플리케이션 프로토콜 패킷을 생성할 수 있다. 애플리케이션(404)은 애플리케이션 프로토콜에 의해 정의되는 바와 같이 적절한 헤더 및/또는 테일을 가지는 패킷을 생성할 수 있다. 이후, 애플리케이션(404)은 이 패킷을 애플리케이션 프로토콜 메시지로서 세션(406)의 출력 스트림에 전달(pass)할 수 있다. 세션(406)은 애플리케이션 프로토콜이 "com.temprus.thermometer1"임을 특정하는 액세서리 프로토콜-터널링 커맨드를 송신하도록 프로토콜 매니저(410)에게 지시할 수 있다. 프로토콜 매니저(410)는 액세서리 통신 프로토콜의 TunnelToAcc 커맨드 패킷 내에 Get_Temp 커맨드를 패키지화할 수 있고, 또한 애플리케이션 프로토콜 명칭을 검색(look up) 하여 이 애플리케이션 프로토콜이 포트(414)와 연관됨을 결정할 수 있다. 프로토콜 매니저(410)는 이후 TunnelToAcc 커맨드 패킷을 액세서리(402)로의 전달을 위해 포트(414)로 라우팅할 수 있다.
액세서리(402)는 포트(422)에서 TunnelToAcc 커맨드를 수신할 수 있다. 프로토콜 분석기(424)는 Get_Temp 커맨드 패킷을 추출하여 이를 프로세스(426)에 전달할 수 있으며, 이 예에서 프로세스(426)는 온도 센서를 제어하고, 이로부터 데이터를 수신하는 프로세스일 수 있다. 따라서, 프로세스(426)는 애플리케이션(404)으로 리턴될 온도 데이터를 획득할 수 있다. 데이터를 송신하기 위해, 프로세스(426)는, 예를 들어, 애플리케이션 프로토콜에 따르는 Send_Temp 커맨드 패킷을 생성할 수 있다. 이 패킷은 (예를 들어, Get_Temp 커맨드에 특정된 온도 스케일을 사용하여) 요청된 온도 데이터를 포함할 수 있다. 프로세스(426)는 모바일 컴퓨팅 디바이스(400)로 송신되어야 한다는 표시에 의해, Send_Temp 커맨드 패킷을 번들로서 프로토콜 분석기(424)에 제공할 수 있다. 프로토콜 분석기(424)는 액세서리 통신 프로토콜의 TunnelToHost 커맨드 내에 Send_Temp 커맨드 패킷을 패키지화할 수 있고, 포트(422)는 모바일 컴퓨팅 디바이스(400)의 포트(414)에 TunnelToHost 커맨드를 전달할 수 있다. 포트(414)는, 포트 맵(412)으로부터 결정된 바와 같이, 번들이 "com.temprus.thermometer1" 프로토콜과 연관된다는 정보와 함께, 번들(이 경우, Send_Temp 커맨드 패킷)을 추출하여 이를 지원층(408)에 제공할 수 있는 프로토콜 매니저(410)에 인입 TunnelToHost 커맨드를 전달할 수 있다. 이후, 지원층(408)은 세션(406), 특히, 세션(406)의 입력 스트림에 번들을 전달(direct)할 수 있다. 애플리케이션(404)은 입력 스트림으로부터 번들을 판독하고, 이를 애플리케이션 프로토콜에 따르는 Send_Temp 커맨드 패킷으로서 인지하고, 온도 데이터를 추출할 수 있다.
일부 실시예들에서, 액세서리는 액세서리 통신 프로토콜의 애플리케이션 프로토콜 및 커맨드들 모두를 사용하여 액세서리와 통신할 수 있다. 도 6은 도 4의 실시예의 액세서리 통신 프로토콜의 커맨드들에 대한 경로를 예시한다. 세션(406)을 통한 애플리케이션 프로토콜 메시지들의 송신 뿐만 아니라, 애플리케이션(404)은, 포트(414)를 통해 액세서리(402)로 액세서리 프로토콜 커맨드(여기서 "모바일 컴퓨팅 deviceProtCmdOut"라고 표현됨)를 송신하도록 프로토콜 매니저(410)에게 명령할 수 있는 적절한 API 호출들을 지원층(406)에 대해 수행함으로써 액세서리-프로토콜 커맨드들을 인보크할 수 있다. 유사하게, 액세서리(402)로부터 수신되는 액세서리-프로토콜 커맨드(여기서, "모바일 컴퓨팅 deviceProtCmdIn"라고 표현됨)가 프로토콜 매니저(410)에 의해 수신 및 프로세싱될 수 있고, 프로토콜 매니저는 지원층(406)에 커맨드를 전달할 수 있다. 지원층(406)은, 그 다음에, 애플리케이션(404)에 대해 적절히 동작할 수 있다.
일부 실시예들에서, 애플리케이션 프로토콜은 액세서리 통신 프로토콜에 의해 특정되는 링고들 및/또는 커맨드들을 포함할 수 있다. 예를 들어, 액세서리 통신 프로토콜은, 사용자로 하여금 모바일 컴퓨팅 디바이스를 통해 무선 주파수 튜너 액세서리를 제어하게 하는, 튜너 링고, RFTuner를 정의할 수 있다. 예를 들어, RFTuner 링고는 수신기를 턴온 및 턴오프하고, 스테이션을 변경시키는 것 등을 위한 커맨드들을 포함할 수 있다. 일부 실시예들에서, 라디오 튜너 애플리케이션은 모바일 컴퓨팅 디바이스에서 실행할 수 있고, 모바일 컴퓨팅 디바이스에서 실행하는 라디오 튜너 애플리케이션 및 라디오 튜너 액세서리는, 라디오 튜너 액세서리로 하여금 라디오 튜너 애플리케이션과 통신하게 하는 라디오 튜너 애플리케이션 프로토콜을 지원할 수 있다. RFTuner 링고의 일부 또는 모든 커맨드들은 라디오 튜너 애플리케이션 프로토콜과 함께 사용될 수 있으며, 라디오 튜너 애플리케이션 프로토콜은 또한 다른 커맨드들(예를 들어, 사용자가 선호하는 스테이션들의 프리셋 리스트를 제어하기 위한 커맨드들)을 포함할 수 있다. 따라서, 라디오 튜너 애플리케이션은 라디오 튜너 애플리케이션 프로토콜의 일부분으로서 RFTuner 링고를 사용하여, 예컨대, 스테이션을 변경하기 위해 라디오 튜너 액세서리와 통신할 수 있으며, 또한 다른 동작들을 위한 라디오 튜너 애플리케이션 프로토콜의 다른 커맨드들을 사용할 수 있다. 모바일 컴퓨팅 디바이스는 또한 액세서리 통신 프로토콜의 일부분으로서 RFTuner 링고를 사용하여 애플리케이션과 독립적인 라디오 튜너 액세서리와 통신할 수 있다. 따라서, 라디오 튜너 액세서리는 2개의 프로토콜들 중 어느 것 내에서도 단일 링고를 사용하여 모바일 컴퓨팅 디바이스에 커맨드들 및/또는 메시지들을 송신할 수 있다.
또다른 예로서, RFTuner 링고는 라디오 튜너 액세서리를 주파수에 튜닝하기 위해 모바일 컴퓨팅 디바이스로부터 커맨드에 포함된 주파수에 송신되는 RFSetFreq 커맨드를 포함할 수 있다. 라디오 튜너 애플리케이션은 애플리케이션 프로토콜에 의해 정의된 바와 같은 적절한 헤더 및/또는 테일을 가지는 패킷을 생성하고, 패킷 페이로드 내에 RFSetFreq 커맨드 및 요구되는 주파수를 포함시킬 수 있다. 이후, 패킷은 액세서리 통신 프로토콜의 커맨드, 예를 들어, 전술된 바와 같은 TunnelToAcc 커맨드에 의해 패킷을 액세서리 프로토콜 패킷으로 번들화할 수 있는 프로토콜 매니저에게 송신될 수 있다. 이후 액세서리 프로토콜 패킷은 액세서리에 송신될 수 있다. 또다른 예에서, RFSetFreq 커맨드는 라디오 튜너 액세서리 없이 그리고 터널링되지 않고 사용될 수 있다. 모바일 컴퓨팅 디바이스는 RFSetFreq 커맨드 및 연관된 주파수를 사용하는 액세서리 통신 프로토콜을 사용하여 패킷을 독립형 패킷으로서 액세서리에 송신할 수 있다.
또다른 예에서, 액세서리는 애플리케이션 프로토콜 및/또는 액세서리 통신 프로토콜 중 어느 하나를 사용하여 모바일 컴퓨팅 디바이스와 통신하기 위해 RFTuner 링고를 사용할 수 있다. 예를 들어, 액세서리는, 모바일 컴퓨팅 디바이스에서의 특정 애플리케이션과 통신하는 경우, TunnelToHost 커맨드를 사용하여 RFTuner 커맨드들을 모바일 컴퓨팅 디바이스로 터널링할 수 있다. 또다른 예로서, 액세서리는 모바일 컴퓨팅 디바이스로 터널링하지 않고 RFTuner 커맨드들을 송신할 수 있다.
또다른 실시예에서, 스피커 도크와 같은 액세서리는 모바일 컴퓨팅 디바이스 상에서의 미디어 재생의 원격 제어를 제공할 수 있다. 원격 제어 기능들은 액세서리 통신 프로토콜의 커맨드들을 사용하여 실행될 수 있는데, 예를 들어, 액세서리 통신 프로토콜은 액세서리가 사용자에 의해 인보크된 특정 기능(예를 들어, 재생, 일시정지, 다음 트랙, 이전 트랙 등)을 식별하기 위해 송신할 수 있는 ButtonStatus 커맨드를 포함할 수 있다. 모바일 컴퓨팅 디바이스는 ButtonStatus 커맨드를 프로세싱하고 그에 따라 응답할 수 있는 저장된 미디어에 대한 재생 엔진을 가질 수 있다. 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션은, 예를 들어, 인터넷 데이터 스트림으로부터 다른 미디어 소스들의 재생을 제공할 수 있다. 사용자가 저장된 미디어의 재생을 제어하는 것과 동일한 방식으로 액세서리를 동작시킴으로써, 사용자가 스트리밍 컨텐츠의 재생을 원격으로 제어할 수 있는 것이 바람직할 것이다. 따라서, "스트리밍 제어" 애플리케이션 프로토콜은 스트리밍된 컨텐츠의 재생을 제어하기 위한 커맨드들 또는 다른 제어 신호들을 포함한다고 정의될 수 있다. 사용자는 저장되거나 스트리밍된 미디어 컨텐츠의 재생을 제어하는 것과 정확히 동일한 방식으로 액세서리를 동작시킬 수 있다. 저장된 컨텐츠가 재생되는 경우, 액세서리는 액세서리 통신 프로토콜(예를 들어, ButtonStatus 커맨드)을 사용하여 재생 엔진에 원격 제어 정보를 전달할 수 있다. 스트리밍된 컨텐츠가 재생되는 경우, 액세서리는 스트리밍 제어 애플리케이션 프로토콜을 사용하여 애플리케이션에 원격 제어 정보를 전달할 수 있다. 일 실시예에서, 액세서리 통신 프로토콜의 ButtonStatus 커맨드가 스트리밍 제어 애플리케이션 프로토콜에 통합될 수 있다.
또다른 실시예에서, 액세서리는 모바일 컴퓨팅 디바이스에 위치 정보를 송신할 수 있다. 위치 정보는 액세서리 및/또는 모바일 컴퓨팅 디바이스의 위치를 나타내는 임의의 정보를 포함할 수 있으며, 다양한 방식들로, 예를 들어, GPS(Global Positioning System) 수신기를 사용하고 그리고/또는 근처 모바일 전화 네트워크 액세스 포인트들에 관한 정보에 기초하여 위치를 삼각측량하여 결정될 수 있다. 액세서리 통신 프로토콜은 모바일 컴퓨팅 디바이스에 위치 정보를 전송하기 위해 액세서리에 의해 사용가능한 "위치" 링고를 제공할 수 있다. 그러나 애플리케이션은 위치 링고에 제공되지 않은 위치 정보를 사용할 수 있다. 이러한 정보는 액세서리-특정 프로토콜을 사용하여 액세서리에 의해 애플리케이션에 전송될 수 있다. 따라서, 위치 정보가 어떻게 사용될지에 따라, 동일한 액세서리가 액세서리 통신 프로토콜 또는 액세서리-특정 프로토콜의 위치 링고를 사용하여 모바일 컴퓨팅 디바이스에 위치 정보를 전송할 수 있다.
여기서 기술된 통신 경로들은 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 예를 들어, 경로는 액세서리 및/또는 모바일 컴퓨팅 디바이스 측에서 더 많거나 더 적은 층들을 포함할 수 있다. 일부 실시예들에서, 각각의 모바일 컴퓨팅 디바이스 터널링 패킷이 하나의 액세서리 프로토콜 메시지를 포함할 것이지만, 이것이 요구되지는 않는다. 예를 들어, 수신자(경우에 따라 액세서리 또는 애플리케이션)가 다수의 수신된 데이터 번들에서 메시지를 재구성할 수 있는 경우, 단일의 액세서리 프로토콜 메시지가 다수의 모바일 컴퓨팅 디바이스 터널링 패킷들을 사용하여 송신될 수 있다. 유사하게, 수신자가 번들을 다수의 메시지들로 파싱(parsing) 할 수 있는 경우, 단일의 모바일 컴퓨팅 디바이스 터널링 패킷은 다수의 액세서리 프로토콜 메시지들을 포함하도록 허용될 수 있다.
도 4를 설명할 때, 애플리케이션(404)이 이미 호환가능한 액세서리(402)와의 세션(406)을 설정했다고 가정되었다. 애플리케이션으로 하여금 호환가능한 액세서리를 식별하고(또는 그 역이 성립) 세션을 설정할 수 있게 하는 기술들의 예가 이제 기술될 것이다.
도 7은 본 발명의 실시예에 따라 액세서리 및 호환가능한 애플리케이션을 식별하기 위한 프로세스(700)의 흐름도이다. 프로세스(700)는 블록(702)에서 시작할 수 있다. 블록(704)에서, 모바일 컴퓨팅 디바이스는 액세서리가 접속되었는지의 여부를 결정할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스는, 예컨대, 도 1a에 도시된 바와 같이, 액세서리가 커넥터와 물리적으로 연결되었는지의 여부 또는 예컨대, 도 1b에 도시된 바와 같이, 액세서리가 모바일 컴퓨팅 디바이스와 무선으로 연결되었는지의 여부를 검출할 수 있다. 위에서 주지된 바와 같이, 액세서리는 모바일 컴퓨팅 디바이스와 액세서리 사이에 유선 또는 무선 통신 채널이 오픈될 때마다 접속되는 것으로서 간주될 수 있으며, 블록(704)은 이러한 채널의 오픈을 검출하는 것을 포함할 수 있다. 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션 매니저는 모바일 컴퓨팅 디바이스와 액세서리 사이의 통신 채널이 오픈되는지의 여부를 결정하기 위해 통신 모듈들 또는 하드웨어 접속들을 모니터링할 수 있다.
블록(706)에서, 모바일 컴퓨팅 디바이스가 액세서리로부터 애플리케이션 프로토콜 정보를 수신할 수 있다. 일부 실시예들에서, 이 정보는 액세서리 통신 프로토콜에 의해 정의되는 패킷들을 사용하여 전달될 수 있다. 다른 실시예들에서, 애플리케이션 프로토콜 정보는 액세서리 및 모바일 컴퓨팅 디바이스 중 어느 하나 또는 이들 모두에 의해 이해되는 임의의 방식으로 전달될 수 있다. 예를 들어, 애플리케이션 프로토콜 정보는 USB 프로토콜, 블루투스 프로토콜, 또는 WiFi 프로토콜과 같은 임의의 산업 표준 통신 프로토콜을 사용하여 전달될 수 있다. 예를 들어, 액세서리 통신 프로토콜은 액세서리가 모바일 컴퓨팅 디바이스에 송신하여 그 자신 및 자신의 성능들에 관한 정보를 제공할 수 있는 하나 이상의 커맨드들 및 연관된 데이터 포맷들을 특정할 수 있으며, 일부 실시예들에서, 이들 커맨드들은 액세서리 통신 프로토콜의 일반적인 링고의 일부분일 수 있다. 액세서리에 의해 제공되는 정보는 액세서리에 의해 지원되는 애플리케이션 통신 프로토콜(들)의 명칭(들)에 대한 텍스트 스트링들을 포함할 수 있다. 명칭들은, 예를 들어, 전술된 역 도메인 명칭 규약 또는 임의의 다른 요구되는 명명 규약을 사용하여 특정될 수 있다. 액세서리는 또한 다른 식별 정보를 송신할 수 있다. 예를 들어, 액세서리는 자신의 타입, 제조자, 모델명, 시리얼 번호, 하드웨어, 소프트웨어 및/또는 펌웨어 버전들 등을 식별하는 정보를 송신할 수 있다. 액세서리는 또한 자신이 사용할 수 있거나 사용하고자 하는 모바일 통신 디바이스의 성능들을 표시하는 정보를 송신할 수 있다. 예를 들어, 액세서리는 자신이 액세서리 통신 프로토콜의 어느 링고를 사용할 수 있는지, 자신이 모바일 컴퓨팅 디바이스로부터 또는 모바일 디바이스로 오디오 및/또는 비디오 신호들을 수신 또는 제공하는지의 여부, 모바일 컴퓨팅 디바이스의 바람직한 초기 동작 상태들(예를 들어, 오디오 및/또는 비디오 신호 교환이 초기에 인에이블되어야 하는지 또는 디스에이블되어야 하는지의 여부, 오디오 및/또는 비디오 시그널링에 대한 바람직한 포맷) 등을 특정할 수 있다.
다른 실시예들에서, 애플리케이션 프로토콜은 인터넷을 통해 서버로부터 또는 애플리케이션 스토어를 참조함으로써 특정될 수 있다. 예를 들어, 액세서리가 모바일 컴퓨팅 디바이스와 연결되는 경우, 모바일 컴퓨팅 디바이스는 인터넷을 통해 서버로부터 그리고/또는 애플리케이션 스토어로부터 애플리케이션 프로토콜 정보를 요청할 수 있다. 일 실시예에서, 모바일 컴퓨팅 디바이스는 액세서리 제조자, 모델명 및/또는 시리얼 번호와 같은 액세서리 식별 정보를 애플리케이션 스토어 또는 다른 서버에 송신할 수 있고, 그 응답으로 애플리케이션 프로토콜 정보를 수신할 수 있다. 액세서리로부터 송신된 애플리케이션 프로토콜 정보는, 예를 들어, 애플리케이션 프로토콜 명칭; 다양한 애플리케이션 프로토콜 커맨드들, 메시지들 및/또는 패킷 규격들을 특정하는 파일; 애플리케이션 프로토콜이 호환가능한 액세서리들의 리스팅; 애플리케이션 프로토콜이 호환가능한 애플리케이션들의 리스팅; 애플리케이션 또는 애플리케이션 업데이트가 다운로드될 수 있는 네트워크 위치의 표시 등을 포함할 수 있다. 애플리케이션 프로토콜 정보는 메타데이터 포맷으로 송신될 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜의 다양한 버전들이 애플리케이션 스토어를 통해 또는 인터넷을 통해 사용가능해질 수 있다. 예를 들어, 애플리케이션 프로토콜의 상이한 버전들은 다양한 레벨들의 기능성을 허용할 수 있고, 상이한 가격들로 모바일 컴퓨팅 디바이스와 사용하기 위해 제공될 수 있다. 예를 들어, "라이트(lite)" 버전, 무료 버전, 풀 버전, 데모 버전 등이 이용가능해질 수 있다. 예를 들어, 풀 버전은 모바일 컴퓨팅 디바이스 및/또는 액세서리에 의해 사용가능한 커맨드들의 세트를 정의할 수 있는 반면, 라이트 버전은 풀 버전에 의해 정의되는 커맨드들의 서브세트를 정의한다.
일부 실시예들에서, 애플리케이션 프로토콜들은 모바일 컴퓨팅 디바이스에 전달되는 경우 열거될 수 있다(enumerate). 액세서리는 인덱스 번호 또는 각각의 애플리케이션에 관련한 일부 타입의 표시를 가지고 각각의 지원되는 애플리케이션 프로토콜을 식별할 수 있다. 예를 들어, 액세서리는 인덱스 1이 애플리케이션 프로토콜 1이고, 인덱스 2가 애플리케이션 프로토콜 2이고, 인덱스 3이 애플리케이션 프로토콜 3임을 표시하는 메시지를 송신할 수 있다. 각각의 애플리케이션 프로토콜은 임의의 타입의 표시를 사용하여, 예를 들어, 역 도메인 명칭 규약을 사용하여 표시될 수 있다. 추후에, 이들 프로토콜들은 자신의 인덱스 번호를 사용하여 참조될 수 있다. 이러한 열거는 본 개시물 전반에 걸쳐 기술되는 실시예들에서 사용될 수 있다.
모바일 컴퓨팅 디바이스는 블록(708)에서 액세서리 통신 프로토콜에 따라 인증 절차들을 사용하여 액세서리를 인증할 수 있다. 이들 절차들은, 예를 들어, 모바일 컴퓨팅 디바이스에 저장되는 공용-키 인증서들 및 다양한 액세서리들 및/또는 다른 기술들에 의해 유지되는 개인 키들에 기초하는 인증 기술들을 포함할 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 접속 및 식별시(예를 들어, 블록(706) 이후) 모든 액세서리를 인증할 수 있다. 다른 실시예들에서, 모바일 컴퓨팅 디바이스는 블록(706)에서의 식별 이전에 또는 식별 동안 모든 액세서리를 인증할 수 있고, 다른 실시예들에서, 인증은 프로세스에서 추후 발생할 수 있거나 또는 전혀 발생하지 않을 수도 있다. 예를 들어, 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 액세서리 통신 프로토콜과 연관된 특정 피처들 및/또는 동작들이 인증된 액세서리들에 의해서만 액세스 되도록 허용하며, 이러한 "제한된 액세스" 피처들은 액세서리 프로토콜 커맨드들의 통신과 관련된 피처들을 포함할 수 있다(예를 들어, 전술된 터널링 커맨드들은 제한된 액세스 커맨드들일 수 있다). 모바일 컴퓨팅 디바이스는 액세서리가 제한된 액세스 피처를 사용하도록 시도할 때까지 액세서리를 인증하기를 기다릴 수 있거나, 모바일 컴퓨팅 디바이스는 액세서리가 제한된 액세스 피처를 사용하려 시도할 것임을 또는 시도할 수 있음을 표시하는 정보를 수신한 후 임의의 시간에서 액세서리를 인증할 수 있다.
이후 모바일 컴퓨팅 디바이스는 블록(706)에서 공급되는 애플리케이션 프로토콜 정보를 사용하여 블록(710)에서 "접속된" 애플리케이션 프로토콜 리스트를 생성 및/또는 업데이트할 수 있다. 예를 들어, 도 3을 참조하면, 포트 맵(325) 및/또는 액세서리 정보 테이블(330)은 새로 접속된 액세서리 및 그것의 애플리케이션 프로토콜(들)을 포트와 연관시키도록 업데이트될 수 있다. 블록(706)에서 제공되는 액세서리 식별 정보 중 임의의 정보는 모바일 컴퓨팅 디바이스에 의해 접속된 애플리케이션 프로토콜 리스트에 저장될 수 있다. 접속된 프로토콜 리스트의 일 예가 테이블(820)로서 도 8에 도시된다. 테이블(820)은 현재-접속된 액세서리가 자신이 접속되어 있는 포트와 연관지어 식별한 각각의 애플리케이션 프로토콜을 열거한다(따라서, 테이블(820)은 도 3의 포트 맵(325)의 예일 수 있다). 테이블(820)의 포맷 및 정보 컨텐츠는 필요한 경우 달라질 수 있다는 점이 이해된다.
다시 도 7을 참조하면, 블록(712)에서, 모바일 컴퓨팅 디바이스는 액세서리와 연관된 애플리케이션 프로토콜(들)을 사용하는 임의의 애플리케이션들이 사용가능한지의 여부를 결정할 수 있다(이러한 애플리케이션들은 또한 여기서 "호환가능한" 애플리케이션들이라고 지칭됨). 예를 들어, 모바일 컴퓨팅 디바이스는 지원되는 애플리케이션 프로토콜들의 테이블을 저장할 수 있으며, 각각의 프로토콜은 자신을 지원하는 애플리케이션(또는 애플리케이션들)과 연관된다. 지원되는 애플리케이션 프로토콜 테이블의 일 예는 테이블(810)로서 도 8에 도시된다. 테이블(810)은 애플리케이션 프로토콜 명칭들의 리스트를 포함하고, 각각의 애플리케이션 프로토콜 명칭은 하나 이상의 애플리케이션들의 식별자와 연관된다. 일부 실시예들에서, 테이블(810)은 애플리케이션 식별자를 리턴시키기 위해 애플리케이션 프로토콜의 명칭을 사용하여 액세스될 수 있는 룩업 테이블로서 구현될 수 있고, 테이블(810)은 또한 특정 애플리케이션과 연관되는 애플리케이션 프로토콜들의 리스트를 리턴시키기 위해 애플리케이션 식별자를 사용하여 액세스가능할 수 있다.
일부 실시예들에서, 테이블(810)은 현재 실행중인 애플리케이션들과 연관된 애플리케이션 프로토콜들만을 포함한다. 예를 들어, 애플리케이션이 개시하는 경우, 애플리케이션은 자신이 요구하고 그리고/또는 사용할 수 있는 임의의 애플리케이션 프로토콜들의 리스트를 모바일 컴퓨팅 디바이스의 시스템 프로세스(예를 들어, 도 3의 지원층(315))에 제공할 수 있다. 모바일 컴퓨팅 디바이스 시스템 프로세스는 그에 따라 테이블(810)을 업데이트할 수 있다. 다른 실시예들에서, 테이블(810)은 모바일 컴퓨팅 디바이스 상에 설치된 모든 애플리케이션들에 대해 유지되는 지속적인 테이블일 수 있다. 예를 들어, 애플리케이션의 설치(또는 업데이트)는 애플리케이션이 요구하고 그리고/또는 사용할 수 있는 임의의 애플리케이션 프로토콜들을 모바일 컴퓨팅 디바이스의 시스템 프로세스(예를 들어, 지원층(315))에 통지하는 것을 포함할 수 있고, 모바일 컴퓨팅 디바이스는 그에 따라 테이블(810)을 업데이트할 수 있다.
일부 실시예들에서, 액세서리가 모바일 컴퓨팅 디바이스와 연결되는 경우, 액세서리는 예를 들어, 액세서리 통신 프로토콜과 연관된 액세서리 식별 링고를 사용하여, 식별 정보를 송신함으로써 그 자신을 식별할 수 있다. 식별 정보는, 예를 들어, 테이블(810)을 참조함으로써 적절한 애플리케이션 통신 프로토콜을 선택하기 위해 모바일 컴퓨팅 디바이스에 의해 사용될 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 인터넷을 통해 애플리케이션 스토어 및/또는 서버에 액세서리 식별 정보를 송신하여 액세서리와 호환가능한 애플리케이션 통신 프로토콜을 식별할 수 있다. 일부 실시예들에서, 애플리케이션 스토어 및/또는 서버는 액세서리와 호환가능한 애플리케이션 통신 프로토콜을 상세화하는 파일을 송신할 수 있다. 일부 실시예들에서, 액세서리는 모바일 컴퓨팅 디바이스에 애플리케이션 프로토콜 정보를 송신하지 않을 수 있으며, 오히려 액세서리는 이후 적절한 애플리케이션 통신 프로토콜을 선택하기 위해 모바일 컴퓨팅 디바이스에 의해 사용되는 액세서리 식별 정보를 송신할 수 있다.
도 7의 블록(712)을 다시 참조하면, 지원되는 애플리케이션 프로토콜 테이블(예를 들어, 도 8의 테이블(810))이 제공되는 실시예들에서, 모바일 컴퓨팅 디바이스는, 새로 접속된 액세서리의 프로토콜 명칭을 사용하여 지원되는 프로토콜 테이블에 액세스함으로써 호환가능한 애플리케이션이 사용가능한지의 여부를 결정할 수 있다. 예를 들어, 도 8에 도시된 바와 같이, 새로 접속된 액세서리가 자신의 애플리케이션 프로토콜 식별자로서 protocolString{c}를 제공하는 경우, 프로세스(700)의 블록(712)은 지원되는 프로토콜 테이블(810) 내에 protocolString{c}을 검색하고, 이에 의해 애플리케이션 "App8"이 이러한 애플리케이션 프로토콜과 연관됨을 결정하는 단계를 포함할 수 있다. 이 경우, 블록(712)은 애플리케이션이 사용가능하다는 결정으로 귀착될 것이다. 도 8에 추가로 도시된 바와 같이, 새로 접속된 액세서리가 자신의 애플리케이션 프로토콜로서 protocolString{x}를 제공한 경우, 테이블(810)에서 어떠한 매치도 발견될 수 없고, 프로세스(700)의 블록(712)은 호환가능한 애플리케이션이 사용가능하지 않다는 결정으로 귀착될 것이다.
호환가능한 애플리케이션이 사용가능하지 않은 경우, 프로세스(700)는 블록(714)에서 호환가능한 애플리케이션의 위치를 찾아 획득하는 것을 용이하게 할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스는 사용자를 애플리케이션 스토어(예를 들어, Apple사에 의해 제공되는 iTunes? Store) 또는 애플리케이션들을 구입 및/또는 다운로드하기 위한 다른 리소스로 안내할 수 있다. 다양한 타입들의 도움이 제공될 수 있다. 예를 들어, 일부 실시예들에서, 블록(706)에서 모바일 컴퓨팅 디바이스에 제공되는 액세서리 정보는 액세서리와 함께 사용하기 위한 선호되는 애플리케이션의 식별자를 포함할 수 있다. 이러한 식별자는 URL(uniform resource locator)(예를 들어, 월드 와이드 웹(WWW) 페이지 어드레스), 특정 애플리케이션 스토어 내의 선호하는 애플리케이션에 대한 고유 제품 식별자 등일 수 있다. 모바일 컴퓨팅 디바이스는 이 정보를 사용하여 선호하는 애플리케이션의 위치를 찾아내고, 사용자가 애플리케이션을 구입 및/또는 다운로드하도록 프롬프트할 수 있다.
다른 실시예들에서, 모바일 컴퓨팅 디바이스는, 다른 액세서리 식별 정보와 함께 또는 다른 액세서리 식별 정보가 없이, 애플리케이션 프로토콜 정보를 사용하여, 예를 들어, 애플리케이션 스토어 내에서 호환가능한 애플리케이션을 검색할 수 있다. 예를 들어, 도 9에 도시된 바와 같이, 모바일 컴퓨팅 디바이스는 (appCode (830)로서 표현되는) 액세서리에 의해 제공되는 선호되는 애플리케이션에 대한 식별자 및/또는 접속된 애플리케이션 프로토콜들 중 하나 이상을 사용하여 질의(825)를 형성할 수 있다. 모바일 컴퓨팅 디바이스는 애플리케이션 스토어 또는 또다른 목적지에서의 검색과 연관된 URL(840)에 질의(825)를 송신할 수 있다. 도시된 예에서, 질의는, 선호되는 애플리케이션에 대한 appCode (830)와 함께, (논리 "OR" 연산자로 링크되는) 모든 접속된 애플리케이션 프로토콜들의 리스트를 포함한다. 다수의 애플리케이션들이 질의에 매치하는 경우, 선호되는 애플리케이션(830)은 (매치들의 리스트 상에 있다고 가정하면) 선호되는 애플리케이션을 하이라이트하기 위해 애플리케이션 스토어에 의해 사용될 수 있다. 따라서, 접속된 프로토콜 리스트(820) 내의 애플리케이션 프로토콜들 중 하나 이상을 지원하는 다수의 애플리케이션들이 리스팅될 수 있다 할지라도, 선호되는 애플리케이션(830)은 디폴트 애플리케이션일 수 있고, 따라서, 예를 들어, 결과 리스트의 최상부에 리스팅될 수 있으며, 그리고/또는 그것을 선호되는 것으로서 식별하는 심볼, 워드 또는 로고로 마킹될 수 있다. 일부 실시예들에서, 선호되는 애플리케이션의 둘 이상의 버전이 랭킹에 제공될 수 있고, 따라서, 사용자에게는 계층화된(tiered) 리스트가 제시될 수 있다. 예를 들어, 선호되는 애플리케이션의 프로 버전, 표준 버전 및/또는 무료 버전이 모두 제공될 수 있다.
질의에 응답하여, 애플리케이션 스토어는 하나 이상의 호환가능한 애플리케이션들을 리턴시킬 수 있고, 모바일 컴퓨팅 디바이스는 사용자가 호환가능한 애플리케이션을 선택하여 다운로드하도록 프롬프트(prompt)할 수 있다. 일부 실시예들에서, 애플리케이션들은 다운로드시 즉시 설치될 수 있고, 다른 실시예들에서, 사용자는 다운로드 하고 이후 애플리케이션을 설치하도록 별도로 프롬프트될 수 있다. 또다른 실시예들에서, 사용자는 애플리케이션을 구입하도록 요구받을 수 있다. 일부 실시예들에서, 구입은 애플리케이션 스토어를 통해, 신용카드를 사용하여, 그리고/또는 이전에 설정된 계좌를 통해 이루어질 수 있다.
다른 실시예들에서, 호환가능한 애플리케이션은 액세서리 그 자체에 미리 저장될 수 있고, 액세서리 통신 프로토콜은 액세서리로 하여금 자신이 그 상에 저장된 호환가능한 애플리케이션을 가짐을 표시하게 하는 커맨드들을 포함할 수 있고, 이러한 표시에 응답하여, 모바일 컴퓨팅 디바이스는 액세서리로부터 호환가능한 애플리케이션을 업로드하고 이를 설치할 수 있다(일부 실시예들에서, 모바일 컴퓨팅 디바이스는 액세서리-제공된 애플리케이션들을 업로드 및/또는 설치하기 전에 사용자가 승인하도록 프롬프트할 수 있다).
도 7을 다시 참조하면, 블록(716)에서, 호환가능한 애플리케이션이 이제 사용가능한지 그리고 설치되었는지의 여부가 결정된다. (예를 들어, 호환가능한 애플리케이션의 위치를 찾을 수 없었거나, 사용자가 그것을 구입 또는 다운로드하지 않도록 선택했을 수 있다.) 만약 그렇지 않은 경우, 프로세스(700)는 블록(718)에서 종료할 수 있다.
블록(716)에서, 호환가능한 애플리케이션이 사용가능한 경우(이전에 설치되었거나, 블록(714)을 통해 방금 설치된 경우), 블록(720)에서, 모바일 컴퓨팅 디바이스는 호환가능한 애플리케이션이 이미 실행중인지의 여부를 결정할 수 있다. 만약, 실행중이지 않은 경우, 애플리케이션은 블록(722)에서 개시될 수 있다. 구현예에 따라, 블록(722)은 사용자로 하여금 애플리케이션이 개시되어야 함을 확인하도록 프롬프트하는 단계를 포함할 수 있다.
블록(724)에서, 애플리케이션은 액세서리와 통신할 수 있다. 일부 실시예들에서, 블록(724)은, 예컨대 전술된 바와 같이, 세션을 생성하고, 상기 세션을 통해 애플리케이션 프로토콜 커맨드들을 송신 및/또는 수신하는 단계를 포함할 수 있다. 블록(724)은 또한 액세서리 통신 프로토콜을 사용하여 커맨드들 및 다른 정보를 송신 및/또는 수신하는 단계를 포함할 수 있다. 따라서, 동일한 애플리케이션 및 액세서리가 액세서리 통신 프로토콜에 의해 지원되는 기능들을 사용할 수 있고, 또한, 액세서리 통신 프로토콜에 의해 지원되는 기능들과 오버랩하거나 오버랩하지 않을 수 있는 애플리케이션 프로토콜을 사용하여 다른 정보, 제어 신호들, 데이터 등을 교환할 수 있다. 통신은 예를 들어, 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되고 그리고 또는 애플리케이션이 종료할 때까지, 무한히 지속할 수 있다. 그러한 때에는, 프로세스(700)는 종료할 수 있다(블록 718).
프로세스(700)는 모바일 컴퓨팅 디바이스에서 하드웨어, 소프트웨어 및/또는 펌웨어를 사용하여 구현될 수 있다. 예를 들어, 시스템 프로세스들 및/또는 애플리케이션들은 모바일 컴퓨팅 디바이스의 기능성을 제어하도록 실행하여 전술된 동작들을 수행할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스는 심지어 액세서리가 접속해제된 후라 할지라도 모바일 컴퓨팅 디바이스에 접속되었던 임의의 액세서리에 의해 지원되는 모든 또는 다수의 애플리케이션 프로토콜들의 지속적인 리스트를 유지할 수 있다. 모바일 컴퓨팅 디바이스가 애플리케이션 스토어와 통신하는 경우, 모바일 컴퓨팅 디바이스는 지속적인 리스트 상의 프로토콜들 중 일부 또는 전부를 애플리케이션 스토어에 (예를 들어, 애플리케이션 스토어를 호스팅하는 서버에 대한 검색 질의로서) 제공할 수 있고, 애플리케이션 스토어는 리스트에 기초하여 사용자가 관심을 가질 수 있는 애플리케이션들을 제안할 수 있다. 예를 들어, 애플리케이션 스토어는 동일한 애플리케이션 프로토콜(들)을 사용하는 다른 애플리케이션들을 식별할 수 있다. 지속적인 리스트가 또한 각각의 애플리케이션 프로토콜과 연관된 특정 액세서리들을 식별하는 정보를 포함하는 경우, 애플리케이션 스토어에 의해 제공되는 정보는 특정 액세서리들을 식별된 애플리케이션들과 호환가능한 것으로서 식별할 수 있다. 이는 사용자가 구입 및/또는 다운로드할 애플리케이션을 선택하는 것을 도울 수 있다.
도 10은 본 발명의 일 실시예에 따라 액세서리와의 통신을 개시하기 위해 애플리케이션에 의해 실행될 수 있는 프로세스(1000)의 흐름도이다. 프로세스(1000)는, 예를 들어, 애플리케이션이 모바일 컴퓨팅 디바이스 상에서 개시되는 경우, 시작할 수 있다(블록 1002). 예를 들어, 사용자가 애플리케이션을 수동으로 개시할 수 있거나, 또는 애플리케이션이 (예를 들어, 도 7을 참조하여 전술된 바와 같이) 액세서리 접속에 응답하여 모바일 컴퓨팅 디바이스에 의해 자동으로 개시될 수 있다.
블록(1004)에서, 애플리케이션은 호환가능한 액세서리가 접속되었는지의 여부를 체크하여 결정할 수 있다. (여기서 사용된 바와 같이, 액세서리가 해당 애플리케이션에 의해 요구되고 그리고/또는 사용될 수 있는 애플리케이션 프로토콜을 지원하는 경우, 액세서리는 특정 애플리케이션과 "호환가능"하다.) 예를 들어, 모바일 컴퓨팅 디바이스가 도 8의 테이블(820)과 같은 접속된 액세서리 테이블을 유지하는 실시예들에서, 애플리케이션은 원하는 애플리케이션 프로토콜의 명칭을 사용하는 테이블에 질의하여 호환가능한 액세서리가 접속되었는지의 여부를 결정할 수 있다. 이러한 질의는, 예를 들어, 지원층(예를 들어, 도 3의 지원층(315))과 통신하기 위해 API 기능 호출을 인보킹하는 것을 포함할 수 있다.
블록(1006)에서, 호환가능한 액세서리가 접속되지 않은 경우, 애플리케이션은 블록(1008)에서 소정 시간량 동안 대기하고 이후 다시 시도할 수 있다. 예를 들어, 타임아웃 기간에 도달하는 경우, 프로세스(1000)는 블록(1020)에서 종료한다. 일부 실시예들에서, 블록(1008)에서 대기하는 동안, 애플리케이션은 사용자로 하여금 호환가능한 액세서리를 접속시키도록 프롬프트하는 메시지를 사용자에게 생성할 수 있다. 일부 실시예들에서, 애플리케이션은 모바일 컴퓨팅 디바이스 시스템 서비스에 등록할 수 있으며, 반복적으로 체크하는 것이 아니라, 호환가능한 액세서리가 사용가능해질 때 통지를 요청할 수 있다. 다른 실시예들에서, 애플리케이션은 호환가능한 액세서리가 접속되지 않은 경우 종료할 수 있으며, 또한, 호환가능한 액세서리가 접속되지 않는 경우 애플리케이션이 실행되지 않거나 또는 애플리케이션이 감소한 기능성을 가지고 실행될 수 있음을 사용자에게 통지할 수 있다.
호환가능한 액세서리가 블록(1010)에서 검출되는 경우, 애플리케이션은 그 액세서리와의 세션을 개시할 수 있다. 예를 들어, 액세서리는 지원층(408)(도 4 참조) 또는 애플리케이션 매니저(도 14 참조)의 API 호출을 인보크하여 특정 액세서리 및 애플리케이션 프로토콜(예를 들어, 도 4의 세션(406))과 연관된 세션을 생성할 수 있다. 블록(1012)에 의해 도 10에서 표현된 세션은 무기한으로 계속될 수 있다. 전술된 바와 같이, 세션 동안, 애플리케이션은 세션과 연관된 애플리케이션 프로토콜을 사용하여 메시지들(예를 들어, 제어 신호들, 데이터, 상태 및/또는 다른 정보)을 송신 및/또는 수신할 수 있으며, 애플리케이션은 또한 원하는 기능성이 액세서리 통신 프로토콜 내에서 지원되는 한 액세서리 통신 프로토콜을 사용하여 메시지들을 송신 및/또는 수신할 수 있다.
세션이 결국 종료할 수 있다. 예를 들어, 블록(1014)에서 애플리케이션은 (예를 들어, 애플리케이션의 종료 또는 액세서리가 더 이상 사용되지 않는다는 표시와 같은 사용자 명령에 응답하여) 세션이 종료되어야 한다고 결정할 수 있으며, 이러한 결정에 응답하여 블록(1016)에서 세션을 종료할 수 있다. 또다른 예로서, 블록(1018)에서, 애플리케이션은 액세서리가 접속해제되었다고 통지받을 수 있으며, 이는 또한 블록(1016)에서 세션 종료를 초래할 수 있다. 블록(1016)에서 세션 종료는, 예를 들어, 세션 객체를 파기 또는 종료하고 관련 리소스들을 풀어주기(free) 위한 API 호출을 인보킹하는 것을 포함할 수 있다. 예를 들어, 한 번에 오직 하나의 세션이 액세서리와 애플리케이션 프로토콜의 주어진 조합에 대해 허용되는 실시예들에서, 세션 종료는 액세서리 및 그 프로토콜이, 예를 들어, 상이한 애플리케이션과, 또다른 세션에서 이제 자유롭게 사용될 수 있음을 모바일 컴퓨팅 디바이스에 시그널링할 수 있다. 일부 실시예들에서, 세션의 종료는 액세서리의 접속해제를 초래할 수 있고(예를 들어, 모바일 컴퓨팅 디바이스가 포트를 폐쇄할 수 있음), 또다른 실시예들에서, 액세서리는 세션이 종료한 후에도 접속 상태로 유지될 수 있으며, 또다른 실시예들에서, 애플리케이션은 세션이 종료할 때 액세서리를 접속해제할지의 여부에 대해 모바일 컴퓨팅 디바이스 시스템 서비스들에 명령할 수 있다.
세션이 종료하면, 프로세스(1000)가 종료할 수 있다. 일부 실시예들에서, 애플리케이션이 세션 종료 후에도 여전히 실행중인 경우, 프로세스(1000)는 블록(1004)으로 리턴하여 호환가능한 액세서리를 검색하고 새로운 세션을 시작할 수 있다.
여기서 기술된 액세서리 통신 프로토콜은 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 순차적인 것으로서 기술된 동작들은 병렬로 실행될 수 있고, 동작들의 순서는 수정될 수 있으며, 그리고/또는 동작들이 추가, 생략 또는 조합될 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스는 다수의 액세서리들에 대한 동시 접속들 및/또는 다수의 애플리케이션들의 동시 실행을 지원할 수 있다. 따라서, 단일 애플리케이션이 다수의 액세서리들과 동시에 상호작용할 수 있거나, 또는 단일 액세서리가 다수의 애플리케이션들과 동시에 상호작용할 수 있다.
예를 들어, 도 11은 본 발명의 일부 실시예들에 따라, 액세서리 A(1106) 및 액세서리 B(1108)와 동시에 상호작용하는 모바일 컴퓨팅 디바이스(1102) 상의 애플리케이션(1100)을 예시한다. 액세서리 A(1106) 및 액세서리 B(1108)는 상이한 타입들의 액세서리들일 수 있거나, 또는 이들은 유사하거나 심지어 동일한 액세서리들일 수 있다. 이러한 예에서, 각각의 액세서리는 상이한 포트들 상에 접속되며, 따라서, 액세서리 A(1106)는 포트(1110)에 접속되고, 액세서리 B(1108)는 포트(1112)에 접속된다. 애플리케이션(1100)은 2개의 세션들(1114, 1116)을 생성하였다. 세션(1112)은 액세서리(1104)와 연관되며, 애플리케이션 프로토콜 A1을 사용하는 반면, 세션(1114)은 액세서리 A(1106)와 연관되며, 애플리케이션 프로토콜 B1을 사용한다. 세션들(1112 및 1114)은 서로 독립적인데, 하나가 다른 하나에 영향을 주지 않고 개시, 사용 및/또는 종료될 수 있다. 일부 실시예들에서, 세션은 프로토콜 특정적일 수 있다. 포트(1110)는 액세서리 통신 프로토콜을 사용하여 프로토콜 A1에 따르는 메시지들에 대한 "터널"을 제공하여 모바일 컴퓨팅 디바이스(1102)와 액세서리(1106) 사이에 통과시킬 수 있고, 포트(1112)는 (동일한) 액세서리 통신 프로토콜을 사용하여 프로토콜 B1에 따르는 메시지들에 대한 별도의 터널을 제공하여 모바일 컴퓨팅 디바이스(1102)와 액세서리(1108) 사이에 통과시킬 수 있다. 애플리케이션 프로토콜들 A1 및 B1이 상이한 프로토콜들이거나 필요한 경우 동일한 프로토콜일 수 있다는 점이 이해된다. 또한, 2개의 액세서리들 및 2개의 세션들이 도시되지만, 충분한 하드웨어 및/또는 소프트웨어 리소스들(예를 들어, 포트들 및/또는 세션들)이 모바일 컴퓨팅 디바이스 상에서 사용가능한 경우에만, 임의의 개수의 액세서리들 및 세션들이 여기서 기술되는 방식으로 특정 애플리케이션과 접속될 수 있다.
도 12는 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스(1204) 상에서 실행중이며 액세서리 A(1206) 및 액세서리 B(1208)와 동시에 상호작용하는 2개의 애플리케이션들인 애플리케이션 1(1200) 및 애플리케이션 2(1202)를 예시한다. 액세서리 A(1206) 및 액세서리 B(1208)는 상이한 타입들의 액세서리들일 수 있거나, 또는 이들은 유사한 또는 심지어 동일한 액세서리들일 수 있다. 이러한 예에서, 각각의 액세서리는 상이한 포트 상에 접속되며, 따라서, 액세서리 A(1206)는 포트(1210)에 접속되고, 액세서리 B(1208)는 포트(1212)에 접속된다. 애플리케이션 1(1200)은 액세서리 A(1206) 및 애플리케이션 프로토콜 A1과 연관된 세션(1214)을 생성하였고, 애플리케이션 2(1202)은 액세서리 B(1208) 및 애플리케이션 프로토콜 B1과 연관된 세션(1216)을 생성하였다. 세션들(1212 및 1214)은 서로 독립적인데, 하나가 다른 하나에 영향을 주지 않고 개시, 사용 및/또는 종료될 수 있다. 포트(1210)는 액세서리 통신 프로토콜을 사용하여 애플리케이션 프로토콜 A1에 따르는 메시지들에 대한 터널을 제공하여 모바일 컴퓨팅 디바이스(1204)와 액세서리(1206) 사이에 통과시킬 수 있고, 포트(1212)는 바로 그 (동일한) 액세서리 통신 프로토콜을 사용하여 애플리케이션 프로토콜 B1에 따르는 메시지들에 대한 별도의 터널을 제공하여 모바일 컴퓨팅 디바이스(1204)와 액세서리(1208) 사이에 통과시킬 수 있다. 도 11에서와 같이, 애플리케이션 프로토콜들 A1 및 B1이 상이한 프로토콜들이거나 필요한 경우 동일한 프로토콜일 수 있다는 점이 이해된다. 또한, 2개의 액세서리들, 2개의 애플리케이션들 및 2개의 세션들이 도시되지만, 충분한 하드웨어 및/또는 소프트웨어 리소스들(예를 들어, 포트들 및/또는 세션들)이 모바일 컴퓨팅 디바이스 상에서 사용가능한 경우에만, 임의의 개수의 액세서리들, 세션들, 및/또는 애플리케이션들이 여기서 기술되는 방식으로 동시에 지원될 수 있다.
도 13은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스(1304) 상에서 실행중이며 액세서리 (1306)와 동시에 상호작용하는 2개의 애플리케이션들인 애플리케이션 1(1300) 및 애플리케이션 2(1302)를 예시한다. 이 예에서, 액세서리(1306)는 2개의 상이한 애플리케이션 프로토콜들(A1 및 A2)을 지원한다. 프로토콜들(A1 및 A2)은 명칭만 상이할 수 있거나, 또는 이들은 2개의 상이하며 본질적으로 호환불가능한 프로토콜들일 수 있다. 액세서리(1306)는 프로토콜 A1과 연관되는 포트(1310) 상에서 모바일 컴퓨팅 디바이스(1304)에 접속되고, 또한 프로토콜 A2와 연관된 포트(1312) 상에서 모바일 컴퓨팅 디바이스(1304)에 접속된다. 애플리케이션 1(1300)은 액세서리(1306) 및 애플리케이션 프로토콜 A1과 연관된 세션(1314)을 생성하였고, 따라서, 포트(1310)를 통해 액세서리(1306)와 통신할 수 있다. 유사하게, 애플리케이션 2(1302)는 액세서리(1306) 및 애플리케이션 프로토콜 A2와 연관된 세션(1316)을 생성하였고, 따라서, 포트(1312)를 통해 액세서리(1306)와 통신할 수 있다. 세션들(1312 및 1314)은 서로 독립적인데, 하나가 다른 하나에 영향을 주지 않고 개시, 사용 및/또는 종료될 수 있다. 포트(1310)는 액세서리 통신 프로토콜을 사용하여 애플리케이션 프로토콜 A1에 따르는 메시지들에 대한 터널을 제공하여 모바일 컴퓨팅 디바이스(1304)와 액세서리(1306) 사이에 통과시킬 수 있고, 포트(1312)는 바로 그 (동일한) 액세서리 통신 프로토콜을 사용하여 애플리케이션 프로토콜 A2에 따르는 메시지들에 대한 별도의 터널을 제공하여 모바일 컴퓨팅 디바이스(1304)와 액세서리(1306) 사이에 통과시킬 수 있다. 2개의 애플리케이션들 및 2개의 세션들이 도시되지만, 충분한 하드웨어 및/또는 소프트웨어 리소스들(예를 들어, 포트들 및/또는 세션들)이 모바일 컴퓨팅 디바이스 상에서 사용가능한 경우에만, 임의의 개수의 액세서리들, 세션들 및/또는 애플리케이션들이 여기서 기술되는 방식으로 동일한 액세서리에 동시에 접속될 수 있다.
도 11-13의 시스템 구성들이 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 예를 들어, 임의의 개수의 애플리케이션들 및 임의의 개수의 액세서리들이 임의의 개수의 세션들 및 포트들을 사용하여 접속될 수 있다. 전술된 바와 같이, 세션들은 물리적 접속(예를 들어, 포트들 등)의 상세항목(detail)으로부터 애플리케이션을 숨기는 소프트웨어 엔티티일 수 있다. 따라서, 애플리케이션은 통신하기 위해 호환가능한 액세서리가 어느 포트에 접속되었는지 알 필요가 없다. 아울러, 통신 경로는 또한 다른 중간층들(예를 들어, 전술된 바와 같은 프로토콜 매니저 및/또는 프로토콜 데몬층)을 포함할 수 있다.
애플리케이션 매니저는 애플리케이션과 통신 포트 사이의 통신 접속을 유도하여 애플리케이션 프로그램들에 대해 투명한 통신 프로토콜의 상세사항(particulars)을 작성하도록 사용될 수 있다. 일부 실시예들에서, 통신 접속이 유도되면, 애플리케이션 프로그램은 자신이 통신 중인 액세서리의 어떠한 상세항목도 알지 않고도 데이터를 출력 스트림에 기록하고 입력 스트림으로부터 판독함으로써 액세서리와 통신할 수 있다. 이는 애플리케이션 매니저를 사용하여 발생할 수 있다.
일부 실시예들에서, 애플리케이션 매니저는 도 4에 도시된 지원층(408) 또는 프로토콜 매니저(410)에 의해 구현되거나 이의 일부분들을 포함할 수 있다. 도 14는 이러한 유도의 예를 예시한다. 도면은 본 발명의 일부 실시예들에 따른 모바일 컴퓨팅 디바이스의 응용층(1402), 애플리케이션 매니저(1404) 및 하드웨어 전송층(1406) 사이의 데이터의 흐름을 도시한다. 응용층(1402)은 모바일 컴퓨팅 디바이스 상에서 실행하는 임의의 종류의 프로세스일 수 있다. 하드웨어 전송층(1402)은 모바일 컴퓨팅 디바이스와 액세서리 사이의 임의의 타입의 하드웨어 인터페이스 또는 소프트웨어 인터페이스를 포함할 수 있다.
애플리케이션 매니저(1404)는 하드웨어 전송층(1406)을 통해 그리고 응용층(1402)을 통해 액세서리들 사이의 통신 인터페이스를 제공할 수 있다. 이렇게 할 시에, 애플리케이션(1402)이 자신이 통신하고 있는 액세서리의 특정사항들 또는 액세서리가 연결되는 포트의 특정사항들을 알지 않도록 통신이 유도될 수 있다. 애플리케이션 매니저(1404)는 모바일 컴퓨팅 디바이스의 운영 체제의 일부분인 배경 프로세스 또는 모바일 컴퓨팅 디바이스에서 실행하는 또다른 배경 프로세스일 수 있다. 애플리케이션 매니저(1404)는 액세서리와 통신하기 위해 사용될 수 있는 애플리케이션에 입력 및 출력 스트림들을 제공할 수 있다.
일부 실시예들에서, 애플리케이션 매니저(1404)는 모바일 컴퓨팅 디바이스와 연결되는 접속된 액세서리들을 관리할 수 있고, 하드웨어 전송층(1406)을 통해 액세스될 수 있다. 또한, 애플리케이션 매니저(1404)는 모바일 컴퓨팅 디바이스 상에서 실행 중인 또는 모바일 컴퓨팅 디바이스 상에 설치된 액세서리 통신 피처들을 관리할 수 있다. 두 경우 모두에서, 애플리케이션 매니저(1404)는 액세서리들 및/또는 애플리케이션들과 연관된 애플리케이션 프로토콜 정보를 저장할 수 있다. 도 15-18은 세션들을 설정하고, 애플리케이션 매니저를 사용하여 애플리케이션과 액세서리 사이에 통신을 제공하도록 구현될 수 있는 다양한 프로세스들을 도시한다.
도 15는 본 발명의 일부 실시예들에 따라 세션을 설정 및 관리하기 위해 모바일 컴퓨팅 디바이스에서의 애플리케이션 매니저에 의해 실행될 수 있는 프로세스(1500)의 흐름도이다. 프로세스(1500)는 블록(1502)에서 시작할 수 있다. 블록(1504)에서, 애플리케이션 매니저는 통신 포트들을 모니터링하여 액세서리가 모바일 컴퓨팅 디바이스와 접속되었는지(즉, 통신 중인지)의 여부를 결정한다. 일부 실시예들에서, 애플리케이션 매니저는 물리적 커넥터의 하드웨어 상태를 모니터링하여 액세서리가 모바일 통신 디바이스와 연결되었는지의 여부를 결정할 수 있다. 일부 실시예들에서, 애플리케이션 매니저는 무선 접속이 설정되었음을 나타내는 표시를 WiFi 또는 블루투스 모듈로부터 수신할 수 있다. 포트의 타입과는 무관하게, 애플리케이션 매니저는 액세서리와의 통신 채널이 설정되었는지의 여부를 결정할 수 있다. 블록(1506)에서, 프로세스(1500)는 액세서리가 모바일 컴퓨팅 디바이스와 연결되었는지의 여부를 계속 모니터링할 수 있다.
블록(1506)에서 결정된 바와 같이 통신 채널이 설정되면, 프로세스(1500)는 이후 블록(1508)에서 인증 프로세스들을 수행할 수 있다. 액세서리 프로토콜을 사용하여 액세서리와 모바일 컴퓨팅 디바이스 사이에 다양한 메시지들을 송신함으로써 인증이 진행될 수 있다. 액세서리가 인증되어 모바일 컴퓨팅 디바이스와 통신하기 위한 허가가 주어지면, 액세서리 성능 정보가 블록(1510)에서 수신될 수 있다. 성능 정보는 액세서리가 호환가능한 하나 이상의 애플리케이션 프로토콜들을 표시하는 정보를 포함할 수 있다. 애플리케이션 프로토콜들은, 예를 들어, 전술된 바와 같은 역 도메인 명칭 규약, 또는 애플리케이션 프로토콜을 나타내기 위한 임의의 다른 규약을 사용하여 표시될 수 있다. 정보의 일부 또는 모두가 블록(1512)에서 모바일 컴퓨팅 디바이스에서의 메모리에 저장될 수 있다. 특히, 애플리케이션 프로토콜들은 액세서리가 연결되는 통신 포트와 애플리케이션 프로토콜들을 연관시키는 룩업 테이블(예를 들어, 도 8의 접속된 애플리케이션 프로토콜 테이블(820))에 저장될 수 있다.
블록(1514)에서, 애플리케이션 매니저는 액세서리에 의해 지원되는 애플리케이션 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션 또는 모바일 컴퓨팅 디바이스와 액세서리 사이의 통신을 허용하는지의 여부를 결정할 수 있다. 일부 실시예들에서, 애플리케이션(또는 다른 프로세스)이 액세서리에 의해 지원되는 애플리케이션 프로토콜을 지원하는 모바일 컴퓨팅 디바이스 상에서 실행중인 경우, 통신이 허용될 수 있다. 예를 들어, 애플리케이션 매니저는 모바일 컴퓨팅 디바이스에서 실행중인 애플리케이션들에 의해 지원되는 애플리케이션 프로토콜들을 룩업 테이블에 저장된 애플리케이션 프로토콜들과 비교할 수 있다. 액세서리와 애플리케이션 사이의 통신은 애플리케이션 프로토콜을 사용하여 발생할 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜 메시지는 (예를 들어, 액세서리 프로토콜 메시지 내에 애플리케이션 프로토콜 메시지를 랩핑함으로써) 액세서리 프로토콜 메시지 내에 포함(embed)되거나 터널링될 수 있다. 액세서리가 블록(1516)에서 모바일 컴퓨팅 디바이스로부터 분리되지 않고 그리고/또는 애플리케이션의 실행이 블록(1518)에서 종료하지 않는 한, 통신이 계속될 수 있다. 그렇지 않은 경우, 일부 실시예들에서, 룩업 테이블에 저장된 애플리케이션 프로토콜들은 블록(1520)에서 제거될 수 있고, 프로세스(1500)는 블록(1522)에서 종료할 수 있다.
도 16은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스에서 실행중인 애플리케이션과 액세서리 사이의 통신을 조정하기 위해 모바일 컴퓨팅 디바이스에서의 애플리케이션 매니저에 의해 실행될 수 있는 프로세스의 또다른 흐름도이다. 프로세스(1600)는 블록(1605)에서 시작할 수 있다. 블록(1610)에서, 애플리케이션 매니저는 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션으로부터 액세서리 정보에 대한 요청을 수신할 수 있다. 액세서리가 블록(1615)에서 접속되지 않은 경우, 그렇게 표시하는 메시지가 애플리케이션에 송신될 수 있고, 프로세스(1600)는 블록(1610)으로 리턴하여 액세서리가 MCD와 연결될 때까지 대기할 수 있거나, 일부 실시예들에서는 프로세스(1600)가 종료할 수 있다. 액세서리가 모바일 컴퓨팅 디바이스와 접속되는 경우, 애플리케이션 매니저는 블록(1620)에서 모바일 컴퓨팅 디바이스와 연결되는 각각의 그리고 모든 액세서리에 의해 지원되는 임의의 애플리케이션 프로토콜들의 표시를 포함하는 액세서리 정보를 애플리케이션에 제공할 수 있다. 애플리케이션 매니저는, 예를 들어, 역 도메인 명칭 규약을 사용하여, 메타데이터로서 액세서리에 의해 지원되는 애플리케이션 프로토콜들을 포함하는, 애플리케이션 프로토콜 정보 중 임의의 정보 또는 모두를 송신할 수 있다. 각각의 애플리케이션 프로토콜은 애플리케이션 프로토콜 식별자와 연관될 수 있다.
일부 실시예들에서, 액세서리 정보를 요청한다기보다는, 애플리케이션은 애플리케이션 프로토콜 데이터를 애플리케이션 매니저에게 송신할 수 있다. 그리고, 애플리케이션 매니저는, 만약 존재하는 경우, 애플리케이션으로부터 송신된 애플리케이션 프로토콜 데이터와 호환가능한 룩업 테이블(예를 들어, 접속된 애플리케이션 프로토콜 테이블(820))로부터 애플리케이션 프로토콜을 선택할 수 있다.
블록(1625)에서, 애플리케이션은 애플리케이션 프로토콜에 대한 통신 세션을 오픈할 수 있고, 예를 들어, 애플리케이션 프로토콜 식별자를 사용하여, 애플리케이션 매니저에게 프로토콜을 표시할 수 있다. 그렇게 함으로써, 애플리케이션은 액세서리 또는 포트에 대해 어떠한 것도 특정하지 않고 요청을 수행할 수 있다. 통신 세션의 오픈에 응답하여, 애플리케이션 매니저는 블록(1630)에서, 세션과 연관된 출력 스트림 및 입력 스트림을 애플리케이션에 제공할 수 있다. 일부 실시예들에서, 통신 세션은 특정 액세서리와 연관된 특정 프로토콜에 대해 오픈된다. 다수의 세션들이 하나의 또는 다수의 액세서리들과의 통신을 위해 다수의 프로토콜들을 사용하여 생성될 수 있다.
블록(1635)에서, 애플리케이션 매니저는 통신 세션과 연관된 애플리케이션 프로토콜을 사용하여 애플리케이션으로부터 애플리케이션 프로토콜 메시지를 수신할 수 있다. 애플리케이션 프로토콜 메시지는 블록(1630)에서 제공되는 출력 스트림을 사용하여 애플리케이션 매니저에서 수신될 수 있다. 이후 애플리케이션 매니저는 블록(1640)에서 액세서리 프로토콜 랩퍼로 애플리케이션 프로토콜 메시지를 랩핑할 수 있다. 일부 실시예들에서, 이러한 랩핑은 (예를 들어, 도 5a, 5b 및 5c에 도시된 바와 같이) 액세서리 프로토콜 메시지 내에 애플리케이션 프로토콜 메시지를 포함시키는 것을 포함할 수 있다. 일부 실시예들에서, 이러한 랩핑은 액세서리 프로토콜을 사용하여 애플리케이션 프로토콜 메시지를 터널링할 수 있다. 블록(1645)에서, 랩핑된 애플리케이션 프로토콜 메시지는 액세서리로 송신될 수 있다. 이후, 프로세스(1600)는 블록(1650)으로 진행될 수 있다. 다시 블록(1635)으로 돌아와서, 애플리케이션 매니저가 블록(1635)에서 애플리케이션 프로토콜 메시지를 수신하지 않는 경우, 프로세스(1600)는 블록(1650)으로 진행할 수 있다.
블록(1650)에서, 애플리케이션 매니저는 액세서리로부터 액세서리 프로토콜 메시지를 수신할 수 있다. 액세서리 프로토콜 메시지는 액세서리 프로토콜 메시지 내에 랩핑된 애플리케이션 프로토콜 메시지를 포함할 수 있다. 블록(1655)에서, 액세서리 프로토콜 랩퍼는 애플리케이션 프로토콜 메시지로부터 스트립핑될 수 있고, 애플리케이션 프로토콜 메시지가 블록(1660)에서 애플리케이션으로 송신될 수 있다.
액세서리가 모바일 컴퓨팅 디바이스(1670)로부터 접속해제되거나 애플리케이션이 모바일 컴퓨팅 디바이스(1665)에서의 실행을 중지하는 경우, 프로세스(1600)는 블록(1675)에서 종료할 수 있다. 그렇지 않은 경우, 프로세스는 블록(1635)으로 리턴한다.
모바일 컴퓨팅 디바이스와 연결되는 액세서리에서 수행될 수 있는 프로세스가 도 17에 도시된다. 프로세스(1700)는 액세서리가 모바일 컴퓨팅 디바이스와 접속되는 경우 블록(1702)에서 시작할 수 있다. 블록(1704)에서, 액세서리는 액세서리에 의해 지원되는 애플리케이션 프로토콜들을 표시하는 메시지를 모바일 컴퓨팅 디바이스에 송신할 수 있다. 이러한 메시지는 도 15의 블록(1510)에 대해 기술된 액세서리 성능들의 일부분일 수 있다. 이러한 메시지는 액세서리 프로토콜에 따라 송신될 수 있다. 액세서리는 (예를 들어, 전술된 바와 같은) 역 도메인 명칭 규약을 사용하여 애플리케이션 프로토콜들을 표시할 수 있다. 통신 세션이 애플리케이션 매니저에 의해 설정되는 경우, 블록(1706)에서, 모바일 컴퓨팅 디바이스는 통신 세션이 생성되었음을 표시하는 메시지를, 액세서리 프로토콜을 사용하여 액세서리에 송신할 수 있다. 이러한 메시지, 또는 후속하는 메시지는, 블록(1708)에서 표시되는 바와 같이 세션을 생성하기 위해 사용되는 애플리케이션 프로토콜을 표시할 수 있다. 일부 실시예들에서, 블록(1708)에서, 세션 ID는 애플리케이션 프로토콜 대신 또는 애플리케이션 프로토콜에 더하여 전달될 수 있다. 블록(1710)에서, 확인응답 메시지는 블록(1712)에서 애플리케이션 프로토콜을 사용하여 모바일 컴퓨팅 디바이스와 통신하기 전에, 액세서리 프로토콜을 사용하여 액세서리로부터 모바일 컴퓨팅 디바이스에 송신될 수 있다. 프로세스(1700)는 블록(1714)에서 종료할 수 있다. 프로세스(1700)는 예를 들어, 애플리케이션이 사용자 또는 운영 체제에 의해 폐쇄되는 경우, 애플리케이션 또는 운영 체제가 세션을 폐쇄하는 경우, 그리고/또는 액세서리가 접속해제되는 경우, 종료할 수 있다.
도 18은 본 발명의 일부 실시예에 따라 액세서리와의 통신을 오픈하기 위해 모바일 컴퓨팅 디바이스에서 애플리케이션에 의해 실행될 수 있는 프로세스(1800)의 흐름도이다. 프로세스(1800)는 블록(1805)에서 시작할 수 있다. 블록(1810)에서, 애플리케이션은 애플리케이션 매니저로부터 접속된 액세서리들에 관한 정보를 요청할 수 있다. 애플리케이션 매니저는 액세서리 정보를 애플리케이션에 송신함으로써 응답할 수 있으며, 이는 블록(1815)에서 애플리케이션에 의해 수신될 수 있다. 액세서리 정보를 포함하는 애플리케이션 매니저로부터의 응답은 블록(1815)에서 수신될 수 있다. 액세서리 정보는 모바일 컴퓨팅 디바이스와 연결된 액세서리들을 표시하는 정보, 액세서리와 호환가능한 애플리케이션 프로토콜(들), 및/또는 애플리케이션 프로토콜(들)과 연관된 식별자들을 포함할 수 있다. 일부 실시예들에서, 액세서리 매니저는 접속된 애플리케이션 프로토콜들의 테이블 또는 리스팅이 위치될 수 있는 메모리 위치에 애플리케이션을 안내(direct)할 수 있다.
블록(1820)에서, 애플리케이션(또는 모바일 컴퓨팅 디바이스)은 애플리케이션 프로토콜들 또는 접속된 액세서리와 호환가능한 단일 애플리케이션 프로토콜 중 임의의 것이 애플리케이션과 호환가능한 애플리케이션 프로토콜과 매치하는지의 여부를 결정할 수 있다. 매치가 발견되는 경우, 프로세스(1800)는 블록(1835)으로 이동한다. 어떠한 매치도 존재하지 않는 경우, 액세서리와 연관된 애플리케이션 프로토콜과 호환가능한 애플리케이션은 블록(1825)에서 인터넷 상에서(예를 들어, 온라인 애플리케이션 스토어에서) 또는 모바일 컴퓨팅 디바이스 상에서 검색될 수 있다. 일부 실시예들에서, 액세서리 정보는 액세서리와의 사용을 위해 선호되는 애플리케이션을 표시하는 정보를 포함할 수 있다. 일부 실시예들에서, 애플리케이션은 블록(1830)에서 모바일 컴퓨팅 디바이스에서 다운로드 및 실행될 수 있고, 프로세스(1800)는 블록(1835)으로 이동할 수 있다. 일부 실시예들에서, 또한 액세서리와 호환가능한 애플리케이션 프로토콜과의 호환가능성을 제공하는 애플리케이션 추가(add-on) 또는 패치가 네트워크 위치로부터(예를 들어, 온라인 애플리케이션 스토어에서) 다운로드될 수 있다. 새로운 애플리케이션이 다운로드되지 않고 호환가능한 애플리케이션들이 발견되지 않는 경우, 프로세스(1800)는 블록(1865)에서 종료할 수 있다.
일부 실시예들에서, 블록(1820)에서, 모바일 컴퓨팅 디바이스에서 어떠한 호환가능한 애플리케이션들도 발견되지 않거나 사용가능하지 않은 경우, 3개의 옵션들 중 하나가 수행될 수 있다. 첫째, 사용자는 네트워크 위치 또는 애플리케이션 스토어로부터 호환가능한 애플리케이션을 검색 및/또는 다운로드하고 싶은지의 여부를 안내받는다(prompted). 프로세스는 사용자의 선택에 따라 진행될 수 있다. 둘째, 모바일 컴퓨팅 디바이스는 사용자에게 안내하지 않고 호환가능한 애플리케이션을 검색 및/또는 다운로드할 수 있다. 셋째, 모바일 컴퓨팅 디바이스는 사용자에게 안내하지도 않고 호환가능한 애플리케이션을 검색하지도 않을 수 있다. 일부 실시예들에서, 액세서리는 위의 3개의 옵션들 중 어느 것에 모바일 컴퓨팅 디바이스가 따라야 하는지를 표시하는 메시지를 송신할 수 있다. 이러한 메시지는 블록(1810) 또는 블록(1815)에서 또는 그 이전에 송신될 수 있다. 다른 실시예들에서, 모든 액세서리들이 위의 옵션들 중 어느 것에 따라야 하는지를 표시하는 모바일 컴퓨팅 디바이스에서의 시스템 설정이 사용자에 의해 세팅될 수 있다.
블록(1835)에서, 애플리케이션은 호환가능한 애플리케이션 프로토콜에 결합(tie)된 통신 세션을 오픈할 수 있다. 세션이 생성되면, 애플리케이션 매니저는 블록(1840)에서 애플리케이션에 입력 및 출력 스트림들을 제공할 수 있다. 블록(1845)에서, 애플리케이션은 애플리케이션 프로토콜에 따라 포맷된 데이터를 출력 스트림에 기록함으로써, 그리고 입력 스트림으로부터 애플리케이션 프로토콜 데이터를 판독함으로써 액세서리와 통신할 수 있다.
블록(1850)에서 결정된 바와 같이, 액세서리가 모바일 컴퓨팅 디바이스와 연결되고, 애플리케이션이 블록(1855)에서 세션을 종료하지 않는 한, 애플리케이션은 애플리케이션 매니저에 의해 제공되는 입력/출력 스트림들을 사용하여 액세서리와 통신할 수 있다. 그렇지 않은 경우, 세션은 블록(1860)에서 종료할 수 있고, 프로세스(1800)는 블록(1855)에서 종료할 수 있다.
본 발명의 일부 실시예들에서, 액세서리가 모바일 컴퓨팅 디바이스와 접속하는 경우, 액세서리는 선호되는 애플리케이션을 특정하는 메타데이터를 포함하는 액세서리 정보를 송신할 수 있다. 이러한 정보는, 예를 들어, 식별 단계, 인증 단계, 또는 성능 단계(capabilities phase) 동안 송신될 수 있다. 일부 실시예들에서, 선호되는 애플리케이션이 애플리케이션에서 실행되고 있지 않고 모바일 컴퓨팅 디바이스에서의 메모리에 저장되는 경우, 애플리케이션이 자동으로 개시될 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 사용자에게 선호되는 애플리케이션을 개시하고 싶은지를 문의하는 통지를 사용자에게 제공하고, 사용자가 긍정적으로 응답하는 경우 애플리케이션을 개시할 수 있다.
본 발명의 일부 실시예들에서, 선호되는 애플리케이션들(즉, 액세서리에 의해 선호되는 애플리케이션들) 중 임의의 애플리케이션이 모바일 컴퓨팅 디바이스 상에서 로딩되는 경우, 모바일 컴퓨팅 디바이스는 사용자 인터페이스의 홈 스크린 상에서 선호되는 애플리케이션들 중 하나 또는 이들 각각과 관련된 아이콘을 하이라이트할 수 있다. 따라서, 사용자는 액세서리와 함께 사용하기 위해 호환가능한 애플리케이션들을 보다 용이하게 위치시킬 수 있다. 예를 들어, 애플리케이션 아이콘을 하이라이트하는 경우, 모바일 컴퓨팅 디바이스는 아이콘의 색상 또는 음영을 변경시키고, 아이콘을 움직이거나 진동시키고, 아이콘을 확대하고, 아이콘의 형상을 변경시키고, 아이콘에 대한 그림을 변경시키는 것 등을 수행할 수 있다. 아이콘의 임의의 양상이 변경될 수 있다.
본 발명의 다른 실시예들에서, 선호되는 애플리케이션이 모바일 컴퓨팅 디바이스 상에 저장되거나 로딩되지 않는 경우, 모바일 컴퓨팅 디바이스는 선호되는 애플리케이션을 다운로드하기 위해 애플리케이션 스토어와 같은 네트워크 위치에 안내(direct)될 수 있다. 일부 실시예들에서, 메타데이터가 저장될 수 있고, 선호되는 애플리케이션이 추후 시간에 네트워크 애플리케이션으로부터 다운로드될 수 있다. 예를 들어, 사용자가 선호되는 애플리케이션이 다운로드될 수 있는 특정된 네트워크 위치로 웹 브라우저 또는 애플리케이션 스토어를 안내하는 경우, 애플리케이션이 다운로드될 수 있다. 또다른 예로서, 사용자가 선호되는 애플리케이션을 다운로드하기 위해 적절한 레벨의 무선 접속성을 가지는 경우, 애플리케이션이 다운로드될 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스가 호스트 컴퓨터에 연결되는 경우, 선호되는 애플리케이션이 로딩될 수 있다.
더욱이, 일부 실시예들에서, 액세서리로부터 모바일 컴퓨팅 디바이스로 송신된 메타데이터가 또한 선호되는 애플리케이션이 모바일 컴퓨팅 디바이스 상에 로딩된 애플리케이션과 매치하지 않는 경우 어떻게 동작할지를 특정하는 표시를 포함할 수 있다. 이러한 표시는 커맨드 또는 메시지의 일부분일 수 있다. 예를 들어, 액세서리는 선호되는 애플리케이션이 모바일 컴퓨팅 디바이스에서의 애플리케이션과 매치해야 하며, 선호되는 애플리케이션이 액세서리와 상호작용하기 위해 다운로드되어야 한다는 것을 특정할 수 있다. 또다른 예로서, 액세서리는 선호되는 애플리케이션을 특정할 수 있지만, 호환가능한 애플리케이션 프로토콜을 가지고 임의의 애플리케이션과 상호동작할 것이다. 이 경우, 모바일 컴퓨팅 디바이스는 선호되는 애플리케이션을 다운로드할 수 있지만 이것이 요구되지는 않는다. 또한, 일부 경우들에서, 모바일 컴퓨팅 디바이스는 선호되는 애플리케이션을 다운로드할지 또는 호환가능한 애플리케이션을 사용할지의 여부에 관한 사용자로부터의 피드백을 요청할 수 있다. 또다른 예에서, 액세서리는 모바일 컴퓨팅 디바이스가 네트워크 위치 또는 애플리케이션 스토어로부터 애플리케이션을 검색하거나 다운로드하지 않는다는 것을 특정할 수 있다. 또한, 일부 상황(situation)들에서, 액세서리는 사용자가 애플리케이션을 다운로드할지의 여부에 대해 결코 문의받지 않는다는 것을 특정할 수 있다. 이러한 시나리오에서, 액세서리는 모바일 컴퓨팅 디바이스에서 애플리케이션과의 상호작용 없이 동작할 수 있다.
본 발명의 다른 실시예에서, 액세서리는 모바일 컴퓨팅 디바이스와 연결될 수 있고, 제1 애플리케이션은 모바일 컴퓨팅 디바이스에서 실행 중일 수 있다. 제1 애플리케이션은 액세서리와 호환가능할 수 있거나 호환가능하지 않을 수 있는 애플리케이션 프로토콜과 연관될 수 있으며, 애플리케이션은 액세서리와 통신중일 수도 있거나 통신하지 않을 수도 있다. 액세서리는 실행할 제2 애플리케이션을 특정하는 커맨드를 모바일 컴퓨팅 디바이스에 송신할 수 있다. 이는 사용자와의 상호작용에 응답하여, 예를 들어, 사용자가 액세서리의 버튼을 누르는 것으로부터 개시될 수 있다. 모바일 컴퓨팅 디바이스는 이후 커맨드의 수신에 응답하여 제2 애플리케이션을 실행할 수 있다. 일부 실시예들에서, 제1 애플리케이션은 제2 애플리케이션과 병렬로 실행할 수 있다. 일부 실시예들에서, 제1 애플리케이션이 폐쇄되고, 제2 애플리케이션이 로딩될 수 있다. 일부 실시예들에서, 커맨드는 시리얼 번호 및/또는 명칭에 의해 애플리케이션을 표시할 수 있다. 일부 실시예들에서, 커맨드는 또한 애플리케이션이 다운로드되고 이후 실행될 수 있는 네트워크 위치를 특정할 수 있다. 또한, 일부 실시예들에서, 액세서리는 모바일 컴퓨팅 디바이스에서 어떠한 애플리케이션도 실행하지 않는 경우, 또는 운영 체제가 모바일 컴퓨팅 디바이스에서 실행 중인 경우, 제2 애플리케이션이 실행하도록 요청할 수 있다.
본 발명이 특정 실시예들에 대해 기술되었지만, 당업자는 많은 수정들이 가능하다는 것을 인지할 것이다. 예를 들어, 여기서 기술되는 특정 실시예들에서, 포트는 임의의 주어진 시간에서 기껏해야 하나의 애플리케이션 프로토콜과 연관된다. 다른 실시예들에서, 상이한 애플리케이션 프로토콜들을 사용하는 통신들은 동일한 포트 상에서 멀티플렉싱될 수 있고, 그리고/또는 동일한 애플리케이션 프로토콜을 사용하는 상이한 애플리케이션들과의 통신들은 동일한 포트 상에서 멀티플렉싱될 수 있다. 한가지 이러한 실시예들에서, 액세서리 프로토콜 메시지들을 (어느 방향으로든) 터널링하기 위해 사용되는 모바일 컴퓨팅 디바이스-프로토콜 커맨드들은 액세서리 프로토콜 메시지의 적절할 핸들링을 용이하게 하기 위해 세션 및/또는 애플리케이션 프로토콜 식별자를 포함할 수 있다. 한가지 이러한 실시예에서, 애플리케이션이 특정 액세서리 및 애플리케이션 프로토콜과 연관된 세션을 설정하는 경우, 해당 세션의 식별자는 액세서리 통신 프로토콜의 커맨드를 사용하여 액세서리에 제공될 수 있다. 해당 세션과 연관된 후속적인 모바일 컴퓨팅 디바이스-프로토콜 패킷들(예를 들어, 터널링 커맨드 패킷들)은 세션 식별자를 포함할 수 있다. 따라서, 액세서리는, 다수의 세션들이 동시에 진행중이라 할지라도, 그리고 다수의 세션들과 관련된 통신들이 동일한 포트 상으로 멀티플렉싱된다 할지라도, 자신이 송신 또는 수신할 수 있는 임의의 액세서리 프로토콜 메시지들을 특정 세션과 연관시킬 수 있다. 이후 액세서리는, 다수의 세션들에 대한 통신들이 단일 포트 상으로 멀티플렉싱된다 할지라도, 다수의 세션들에 대해 별도의 상태 정보를 유지할 수 있다.
애플리케이션 통신 프로토콜이 애플리케이션과 액세서리 사이의 통신을 위해 사용될 수 있는 방법의 예를 제공하는 본 발명의 실시예들이 기술되었다. 많은 경우들에서, 모바일 컴퓨팅 디바이스는 애플리케이션 통신 프로토콜에 대해 불가지론적일 수 있다. 일부 실시예들은 액세서리 및/또는 애플리케이션이 애플리케이션 통신 프로토콜을 특정하는 정보를 통신하는 방식들을 기술한다. 다양한 다른 기술들이 사용될 수 있으므로, 액세서리 및/또는 애플리케이션은 어느 애플리케이션 프로토콜을 사용할지 안다. 예를 들어, 모바일 컴퓨팅 디바이스는 공지된 모든 애플리케이션 프로토콜들을 가지는 테이블을 포함할 수 있다. 액세서리 및/또는 애플리케이션은 테이블 엔트리를 지정함으로써 애플리케이션 프로토콜을 특정할 수 있다. 또다른 예로서, 애플리케이션은 임의의 개수의 통신 프로토콜들을 사용하여 액세서리로부터 애플리케이션 프로토콜 정보를 요청할 수 있다. 또다른 예로서, 애플리케이션은 애플리케이션에 의해 지원되는 임의의 프로토콜들을 액세서리에 대해 특정할 수 있고, 액세서리는 사용할 애플리케이션 프로토콜을 선택할 수 있다. 또다른 예로서, 비트 마스크가 사용될 수 있는데, 여기서 미리 결정된 상이한 비트마스크들이 다양한 애플리케이션 프로토콜들을 나타내기 위해 사용될 수 있다. 애플리케이션 프로토콜을 식별하기 위한 다양한 다른 수단 역시 사용될 수 있다.
또한, 다양한 다른 실시예들이 개시된다. 예를 들어, 액세서리 디바이스에서 동작하며, 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션과 액세서리 사이에서 통신하기 위한 방법이 개시된다. 상기 방법은 액세서리 통신 프로토콜을 사용하여 적어도 하나의 애플리케이션 통신 프로토콜을 특정하는 정보를 모바일 디바이스에 전달하는 단계; 및/또는 액세서리 통신 프로토콜을 사용하여 모바일 디바이스에서 실행하는 애플리케이션과 통신하는 단계를 포함할 수 있다. 일부 실시예들에서, 상기 방법은 또한 액세서리 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 운영 체제와 통신하는 단계를 포함할 수 있다.
일부 실시예들에서, 애플리케이션 통신 프로토콜 패킷은 액세서리 통신 프로토콜 패킷 내에서 터널링될 수 있다. 일부 실시예들에서, 방법은 또한 모바일 통신 디바이스 상에서 실행하는 애플리케이션으로부터 애플리케이션 통신 프로토콜 커맨드들을 수신하는 단계 및 그에 응답하여 액세서리의 상태를 변경하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션으로부터의 커맨드에 응답하여 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션에 데이터를 송신하는 단계를 포함할 수 있으며, 여기서, 데이터는 애플리케이션 통신 프로토콜을 사용하여 전송될 수 있으며, 커맨드는 액세서리 통신 프로토콜을 사용하여 수신될 수 있다. 일부 실시예들에서, 적어도 하나의 애플리케이션 통신 프로토콜을 특정하는 정보는 역 도메인 명칭 규약에 제공될 수 있다. 일부 실시예들에서, 방법은 또한 액세서리 통신 프로토콜을 사용하여 액세서리를 가지고 모바일 컴퓨팅 디바이스의 기능성을 제어하는 단계를 포함할 수 있다.
액세서리 디바이스가 개시되며, 하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 커맨드들 및 데이터를 모바일 컴퓨팅 디바이스와 교환하도록 구성되는 통신 인터페이스 - 상기 통신 인터페이스는 적어도 하나의 포트를 가짐 - ; 및/또는 상기 하우징 내에 배치되고 상기 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함할 수 있다. 상기 제어 로직은 액세서리 통신 프로토콜을 사용하여 상기 통신 인터페이스를 통해 상기 모바일 컴퓨팅 디바이스에서 실행하는 운영 체제와 통신하도록 구성될 수 있다. 상기 제어 로직은 액세서리 통신 프로토콜을 사용하여 상기 통신 인터페이스를 통해 상기 모바일 통신 디바이스 상에서 실행하는 애플리케이션과 통신하도록 구성될 수 있다.
일부 실시예들에서, 제어 로직은 또한 액세서리 통신 프로토콜을 사용하여 애플리케이션 통신 프로토콜을 특정하는 정보를 전달하도록 구성될 수 있다. 일부 실시예들에서, 제어 로직은 또한 액세서리 통신 프로토콜이 아닌 표준 통신 프로토콜을 사용하여 애플리케이션 통신 프로토콜을 특정하는 정보를 전달하도록 구성될 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜 정보는 역 도메인 명칭 규약을 사용하여 모바일 컴퓨팅 디바이스에 전달될 수 있다. 일부 실시예들에서, 통신 인터페이스는 무선 통신 인터페이스를 포함할 수 있다.
모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션과 액세서리 디바이스 사이에서 통신하기 위한 방법이 개시되며, 상기 방법은 액세서리 디바이스에서 동작한다. 방법은 액세서리 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에 액세서리 정보를 전달하는 단계; 세션 식별자, 애플리케이션 프로토콜 식별자, 또는 오픈 접속 커맨드 중 적어도 하나를 모바일 컴퓨팅 디바이스로부터 수신하는 단계; 및/또는 그후 애플리케이션 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션과 통신하는 단계를 포함한다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 모바일 컴퓨팅 디바이스에 전달되는 애플리케이션 프로토콜 스트링과 연관된 프로토콜일 수 있다. 일부 실시예들에서, 액세서리 정보는 애플리케이션 프로토콜 스트링, 애플리케이션 프로토콜 스트링에 대응하는 애플리케이션 프로토콜 인덱스, 선호되는 애플리케이션 정보, 또는 액세서리 통신 프로토콜 정보 중 적어도 하나를 포함할 수 있다. 일부 실시예들에서, 선호되는 애플리케이션 정보는 모바일 컴퓨팅 디바이스에 전달되는 애플리케이션 프로토콜 스트링들과 연관된 애플리케이션 통신 프로토콜을 사용하여 통신을 지원하는 애플리케이션을 특정한다. 일부 실시예들에서, 전달(communicating)은 액세서리를 이용하여 모바일 컴퓨팅 디바이스의 기능성을 제어하는 것을 포함할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜 스트링은 역 도메인 명칭 규약일 수 있다.
또다른 액세서리 디바이스가 개시된다. 액세서리는 하우징; 하우징 내에 적어도 부분적으로 배치되고 그리고/또는 모바일 컴퓨팅 디바이스와 통신상으로 연결되도록 구성되는 통신 인터페이스; 액세서리 하드웨어; 및/또는 하우징 내에 배치되고, 액세서리 특정 하드웨어 및 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함할 수 있다. 제어 로직은 액세서리 통신 프로토콜을 사용하여 통신 인터페이스를 통해 모바일 컴퓨팅 디바이스에 애플리케이션 통신 프로토콜 정보를 전달하도록 구성될 수 있다. 제어 로직은 통신 인터페이스를 통해 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션과의 통신 세션을 설정하도록 구성될 수 있으며, 통신 세션은 애플리케이션 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션과 액세스 사이에서 통신한다. 제어 로직은 액세서리 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션으로부터 데이터를 수신하도록 구성될 수 있다. 제어 로직은 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션으로부터 수신된 데이터에 응답하여 액세서리 하드웨어의 동작을 제어하도록 구성될 수 있다.
일부 실시예들에서, 통신 인터페이스는 무선 통신 인터페이스를 포함할 수 있다. 일부 실시예들에서, 제어 로직은 추가적으로 액세서리 하드웨어로부터 하드웨어 데이터를 수신하고 그리고/또는 애플리케이션 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션에 하드웨어 데이터를 송신하도록 구성될 수 있다. 일부 실시예들에서, 액세서리 하드웨어는 센서를 포함할 수 있고, 하드웨어 데이터는 센서를 사용하여 수집된 데이터를 포함할 수 있다. 일부 실시예들에서, 액세서리 하드웨어는 전기 디바이스와의 하드웨어 인터페이스를 포함할 수 있고, 하드웨어 데이터는 하드웨어 인터페이스를 통해 전기 디바이스로부터 수신되는 데이터를 포함할 수 있다. 일부 실시예들에서, 액세서리 하드웨어는 전기 디바이스와의 하드웨어 인터페이스를 포함할 수 있으며, 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션으로부터의 데이터는 하드웨어 인터페이스를 사용하여 전기 디바이스를 제어하기 위한 데이터를 포함한다. 일부 실시예들에서, 액세서리 하드웨어는 디스플레이를 포함할 수 있고, 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션으로부터의 데이터는 디스플레이가능한 정보를 포함할 수 있다.
액세서리 디바이스와 모바일 디바이스 상에서 실행하는 애플리케이션 사이에서 통신하기 위한 또다른 방법이 개시된다. 이러한 방법은 상기 모바일 디바이스 상에서 동작할 수 있다. 방법은 액세서리 디바이스를 식별하는 단계 - 상기 식별은 액세서리 통신 프로토콜을 사용함 - ; 애플리케이션 통신 프로토콜을 특정하는 상기 액세서리 디바이스로부터의 정보를 수신하는 단계 - 상기 정보는 상기 액세서리 통신 프로토콜을 사용하여 수신됨 - ; 상기 모바일 컴퓨팅 디바이스에서 애플리케이션을 실행하는 단계; 및/또는 상기 애플리케이션 통신 프로토콜을 사용하여 상기 애플리케이션으로부터 상기 액세서리 디바이스와 통신하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한, 상기 애플리케이션 프로토콜이 상기 모바일 컴퓨팅 디바이스에서 프로토콜 테이블 내에 리스팅되는지의 여부를 결정하는 단계를 포함할 수 있고, 상기 프로토콜 테이블은 상기 모바일 컴퓨팅 디바이스에서 애플리케이션들에 의해 지원되는 프로토콜들을 포함할 수 있다.
일부 실시예들에서, 방법은 또한 프로토콜 테이블이 애플리케이션 프로토콜을 포함하지 않는 경우 애플리케이션 프로토콜을 지원하는 애플리케이션을 다운로드하는 단계를 포함할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜을 특정하는 액세서리 디바이스로부터의 정보는 역 도메인 명칭 규약을 사용하여 하나의 애플리케이션 통신 프로토콜을 특정한다. 일부 실시예들에서, 애플리케이션 통신 프로토콜을 특정하는 액세서리 디바이스로부터의 정보는 또한 애플리케이션 통신 프로토콜과 연관된 식별자를 포함한다. 일부 실시예들에서, 애플리케이션 통신 프로토콜을 사용하여 액세서리 디바이스와 통신하는 단계는 액세서리 통신 프로토콜 패킷들 내에 애플리케이션 통신 프로토콜 패킷들을 캡슐화하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 액세서리 통신 프로토콜 내에 포함되는 커맨드들을 포함할 수 있다.
하우징; 하우징 내에 적어도 부분적으로 배치되고 그리고/또는 액세서리와 커맨드들 및 데이터를 교환하도록 구성되는 통신 인터페이스 - 상기 통신 인터페이스는 적어도 하나의 포트를 가짐 -; 상기 하우징 내에 배치되는 메모리; 및/또는 상기 하우징 내에 배치되고 그리고/또는 상기 메모리 및 통신 인터페이스에 통신상으로 연결되는 제어 로직을 포함할 수 있는 모바일 컴퓨팅 디바이스가 또한 개시된다. 제어 로직은 액세서리 통신 프로토콜을 사용하여 통신 인터페이스를 통해 액세서리로부터 애플리케이션 통신 프로토콜을 특정하는 표시를 수신하도록 구성될 수 있다. 제어 로직은 메모리에 저장된 애플리케이션을 실행하도록 구성될 수 있다. 제어 로직은 애플리케이션 통신 프로토콜을 사용하여 액세서리와 애플리케이션 사이에 통신을 설정하도록 구성될 수 있다. 일부 실시예들에서, 적어도 하나의 포트는 유선 또는 무선 포트일 수 있다. 일부 실시예들에서, 제어 로직은 애플리케이션에 의해 특정되는 애플리케이션 통신 프로토콜이 메모리에 저장되는 애플리케이션 통신 프로토콜과 연관될 수 있는지의 여부를 결정하도록 추가로 구성될 수 있다. 일부 실시예들에서, 제어 로직은 액세서리 통신 프로토콜을 사용하여 액세서리에 애플리케이션 통신 프로토콜 데이터를 터널링하도록 추가로 구성될 수 있다. 일부 실시예들에서, 제어 로직은 액세서리 통신 프로토콜 패킷을 이용하여 애플리케이션 통신 프로토콜 패킷을 캡슐화하고 액세서리 통신 프로토콜 패킷을 포트에 제공하도록 추가로 구성될 수 있다.
하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 그리고/또는 명령들 및 데이터를 액세서리와 교환하도록 구성되는 통신 인터페이스; 상기 하우징 내에 배치되는 메모리; 및/또는 상기 하우징 내에 배치되고, 상기 메모리 및 상기 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함할 수 있는 또다른 모바일 컴퓨팅 디바이스가 개시된다. 제어 로직은 상기 통신 인터페이스를 통해 액세서리 디바이스로부터의 애플리케이션 통신 프로토콜 정보를 수신하도록 구성될 수 있고, 상기 애플리케이션 통신 프로토콜 정보는 상기 액세서리에 의해 지원되는 애플리케이션 통신 프로토콜의 식별을 포함하고, 그리고/또는 상기 애플리케이션 통신 프로토콜 정보는 액세서리 통신 프로토콜을 사용하여 상기 액세서리로부터 수신될 수 있다. 제어 로직은 액세서리 통신 프로토콜 패킷들 내에서 애플리케이션 프로토콜 패킷들을 캡슐화함으로써 캡슐화된 패킷들을 생성하도록 구성될 수 있다. 제어 로직은 상기 통신 인터페이스를 통해 상기 액세서리로 상기 캡슐화된 패킷들을 송신하도록 구성될 수 있다. 일부 실시예들에서, 상기 통신 인터페이스는 무선 통신 인터페이스일 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 메모리에 저장된 프로토콜 테이블을 더 포함할 수 있고, 상기 프로토콜 테이블은 상기 모바일 컴퓨팅 디바이스 상에 설치된 애플리케이션들에 의해 지원되는 애플리케이션 프로토콜들의 리스팅을 포함할 수 있다.
모바일 컴퓨팅 디바이스의 프로세서에 의해 실행되는 경우, 프로세서로 하여금 방법을 실행하게 하는 프로그램 명령들을 포함할 수 있는 컴퓨터-판독가능한 매체가 개시된다. 이러한 방법은 액세서리 통신 프로토콜을 사용하여 액세서리 디바이스로부터 애플리케이션 통신 프로토콜 정보를 수신하는 단계, 애플리케이션 통신 프로토콜을 사용하여 애플리케이션으로부터 데이터를 수신하는 단계, 및/또는 액세서리로부터 수신된 데이터를 조작(manipulate)하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 모바일 컴퓨팅 디바이스의 디스플레이에서 조작된 데이터의 적어도 일부분을 디스플레이하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 애플리케이션 통신 프로토콜을 사용하여 액세서리에 커맨드들을 송신함으로써 액세서리의 기능성을 제어하는 단계를 포함할 수 있다.
모바일 디바이스 상에 설치된 애플리케이션과 액세서리 디바이스 사이에 통신 세션을 설정하기 위한 또다른 방법이 제공된다. 방법은 모바일 디바이스 상에서 동작할 수 있으며, 지원되는 애플리케이션 프로토콜들의 리스트를 수집된 애플리케이션 프로토콜들의 리스트와 비교하는 단계; 지원되는 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜 사이에 매치가 발견되는 경우, 매치되는 애플리케이션 프로토콜을 특정하는 정보를 액세서리에 전달하는 단계; 및/또는 지원되는 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜 사이에 매치가 발견되지 않는 경우, 수집된 애플리케이션 프로토콜 리스트 내의 적어도 하나의 애플리케이션 프로토콜과 연관된 애플리케이션이 다운로드될 수 있는 애플리케이션 스토어에 모바일 디바이스의 사용자를 안내하는 단계를 포함할 수 있다. 일부 실시예들에서, 지원되는 애플리케이션 프로토콜들의 리스트는 애플리케이션에 의해 지원되는 하나 이상의 통신 프로토콜들을 포함할 수 있고, 그리고/또는 수집된 애플리케이션 프로토콜들의 리스트는 모바일 컴퓨팅 디바이스와 연결되는 하나 이상의 액세서리들로부터 수신되는 하나 이상의 통신 프로토콜들을 포함할 수 있다. 일부 실시예들에서, 지원되는 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜 사이에 매치가 발견되는 경우, 액세서리와의 통신 세션을 요청한다. 일부 실시예들에서, 매치되는 애플리케이션 프로토콜을 특정하는 정보를 전달하는 경우, 세션 식별자를 포함할 수 있다. 일부 실시예들에서 지원되는 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜 사이에 매치가 발견되는 경우, 매치되는 애플리케이션 프로토콜을 사용하여 액세서리와 통신한다. 일부 실시예들에서, 애플리케이션 스토어는 인터넷-기반 애플리케이션 스토어일 수 있다.
모바일 컴퓨팅 디바이스의 프로세서에 의해 실행되는 경우, 프로세서로 하여금 방법을 실행하게 하는 프로그램 명령들을 포함할 수 있는 컴퓨터-판독가능한 매체가 제공된다. 방법은 지원되는 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜이 수집된 애플리케이션 프로토콜 리스트 내의 애플리케이션 프로토콜에 매치하는지의 여부를 결정하는 단계를 포함할 수 있으며; 그리고/또는 지원되는 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜의 리스트 내의 애플리케이션 프로토콜 사이에서의 매치의 발견에 응답하여 하위-방법을 수행할 수 있다. 하위-방법은 모바일 컴퓨팅 디바이스 및 상기 모바일 컴퓨팅 디바이스에 연결된 액세서리 사이의 통신 세션을 개시하는 단계; 지원되는 애플리케이션 프로토콜을 특정하는 정보를 액세서리에 전달하는 단계; 및/또는 지원되는 애플리케이션 프로토콜을 사용하여 모바일 컴퓨팅 디바이스로부터 액세서리와 통신하는 단계를 포함한다. 일부 실시예들에서, 수집된 프로토콜 리스트는 액세서리와 호환가능한 애플리케이션 프로토콜들을 나타내는 하나 이상의 통신 프로토콜 식별자들을 포함할 수 있고, 그리고/또는 지원되는 프로토콜 리스트는 모바일 컴퓨팅 디바이스에 설치된 애플리케이션과 호환가능한 애플리케이션 프로토콜들을 나타내는 하나 이상의 통신 프로토콜 식별자들을 포함할 수 있다. 일부 실시예들에서, 지원되는 애플리케이션 프로토콜은 액세서리 통신 프로토콜과 상이할 수 있다. 일부 실시예들에서, 프로그램 명령들은 프로세서로 하여금, 지원되는 애플리케이션 프로토콜과 수집된 애플리케이션 프로토콜들의 리스트 내의 애플리케이션 프로토콜 사이에 매치가 발견되지 않는 것에 응답하여, 수집된 프로토콜 리스트 내의 애플리케이션 프로토콜에 매치하는 프로토콜을 지원하는 애플리케이션을 다운로드하게 하는 것을 더 포함할 수 있다.
액세서리 디바이스로부터 애플리케이션 프로토콜 식별자를 수신하는 단계 - 상기 수신된 애플리케이션 프로토콜 식별자는 역 도메인 명칭 포맷인 데이터 스트링을 포함하고, 애플리케이션 통신 프로토콜과 연관될 수 있음 - ; 및/또는 상기 수신된 애플리케이션 프로토콜 식별자가 상기 모바일 컴퓨팅 디바이스에서 메모리에 저장된 프로토콜 테이블 내에 리스팅된 애플리케이션 프로토콜 식별자와 매치하는지의 여부를 결정하고, 이후 상기 애플리케이션 통신 프로토콜을 사용하여 상기 액세서리와 통신하는 단계를 포함할 수 있는, 모바일 컴퓨팅 디바이스에서 동작하는 또다른 방법이 제공된다. 일부 실시예들에서, 상기 프로토콜 테이블은 상기 모바일 컴퓨팅 디바이스에서 실행가능한 애플리케이션들과 연관된 하나 이상의 애플리케이션 프로토콜 식별자들을 포함할 수 있다. 일부 실시예들에서, 방법은 또한 상기 수신된 애플리케이션 프로토콜 식별자가 상기 프로토콜 테이블 내의 애플리케이션 프로토콜 식별자와 매치하는 경우 상기 프로토콜 테이블 내의 애플리케이션 프로토콜 식별자와 연관된 상기 애플리케이션을 실행하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 상기 수신된 애플리케이션 프로토콜 식별자와 매치하는 연관된 애플리케이션 프로토콜 식별자를 가지는 애플리케이션을 다운로드하는 단계를 포함할 수 있다.
하우징; 하우징 내에 적어도 부분적으로 배치되고, 그리고/또는 액세서리와 커맨드들 및 데이터를 교환하도록 구성되는 통신 인터페이스; 하우징 내에 배치되고, 지원되는 애플리케이션 프로토콜 리스트를 유지하도록 구성되는 메모리; 및/또는 하우징 내에 배치되며 그리고/또는 메모리 및 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함하는 모바일 컴퓨팅 디바이스가 또한 개시된다. 일부 실시예들에서, 제어 로직은 액세서리에 의해 지원되는 애플리케이션 통신 프로토콜을 식별하는 정보를 통신 인터페이스를 통해 액세서리로부터 수신하도록 구성될 수 있다. 일부 실시예들에서, 제어 로직은 액세서리에 의해 지원되는 애플리케이션 통신 프로토콜이 지원되는 애플리케이션 프로토콜들의 리스트 내에서 식별되는 프로토콜에 대응하는지의 여부를 결정하도록 구성될 수 있으며, 지원되는 애플리케이션 프로토콜들의 리스트는 모바일 디바이스 상에서 설치된 애플리케이션에 의해 지원되는 하나 이상의 프로토콜들을 포함할 수 있다. 일부 실시예들에서, 제어 로직은, 액세서리에 의해 지원되는 애플리케이션 프로토콜과 지원되는 애플리케이션 프로토콜들의 리스트 내의 식별되는 프로토콜 사이에 대응성이 결정되는 경우, 모바일 컴퓨팅 디바이스 프로토콜을 사용하여 매치되는 애플리케이션 프로토콜을 식별하는 정보를 액세서리에 전달하도록 구성될 수 있다. 일부 실시예들에서, 제어 로직은 매치되는 애플리케이션 프로토콜을 사용하여 액세서리와 통신하도록 구성될 수 있다.
모바일 컴퓨팅 디바이스 프로토콜을 사용하여 액세서리로부터 애플리케이션 프로토콜 정보를 수신하는 단계를 포함할 수 있는 또다른 방법이 제공되며, 여기서, 애플리케이션 프로토콜 정보는 액세서리와 호환가능한 적어도 하나의 애플리케이션 프로토콜을 식별한다. 방법은 또한 애플리케이션 프로토콜이 지원되는 프로토콜 리스트 내에 리스팅된 프로토콜과 매치하는지의 여부를 결정하는 단계를 포함할 수 있으며, 여기서 지원되는 프로토콜들의 리스트는 적어도 모바일 디바이스 상에 설치된 애플리케이션에 의해 지원되는 하나 이상의 통신 프로토콜들을 포함할 수 있고, 그리고/또는 지원되는 프로토콜 리스트 내에 리스팅된 각각의 프로토콜은 애플리케이션과 연관될 수 있다. 애플리케이션 프로토콜이 지원되는 프로토콜 리스트 내의 프로토콜에 매치하는 경우, 방법은 지원되는 리스트 내의 매치되는 프로토콜과 연관된 애플리케이션을 실행하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜이 지원되는 프로토콜 리스트 내의 프로토콜과 매치하지 않는 경우, 인터넷으로부터 지원되는 프로토콜 리스트 내의 프로토콜과 연관된 애플리케이션을 다운로드한다.
액세서리로부터 모바일 컴퓨팅 디바이스에서 정보를 수신하는 단계 - 상기 정보는 애플리케이션 프로토콜의 식별을 포함할 수 있음 - ; 상기 애플리케이션 프로토콜을 모바일 컴퓨팅 디바이스에서의 메모리에 저장된 지원되는 프로토콜 테이블 내에 리스팅된 프로토콜들과 비교하는 단계 - 지원되는 프로토콜 테이블은 애플리케이션과 연관된 적어도 하나의 애플리케이션 프로토콜을 포함할 수 있음 - ; 그리고/또는 애플리케이션 프로토콜이 지원되는 프로토콜 테이블 내에 리스팅된 프로토콜에 매치하는 경우, 모바일 컴퓨팅 디바이스에서 애플리케이션 프로토콜과 연관된 애플리케이션을 실행하는 단계를 포함할 수 있는 또다른 방법이 제공된다. 일부 실시예들에서, 정보는 애플리케이션 프로토콜을 지원하는 선호되는 애플리케이션의 식별을 포함할 수 있고, 그리고/또는 애플리케이션 프로토콜이 지원되는 프로토콜 테이블 내에 리스팅된 프로토콜과 매치하지 않는 경우, 선호되는 애플리케이션을 다운로드한다. 일부 실시예들에서, 애플리케이션 프로토콜을 식별하는 정보는 역 도메인 명칭 포맷을 사용하여 애플리케이션 프로토콜을 식별한다. 일부 실시예들에서, 방법은 또한 애플리케이션 프로토콜을 사용하여 액세서리와 통신하는 단계를 포함할 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜을 식별하는 정보는 모바일 컴퓨팅 디바이스 프로토콜에 따라 포맷될 수 있다.
하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 그리고/또는 명령들 및 데이터를 액세서리와 교환하도록 구성되는 통신 인터페이스; 상기 하우징 내에 배치되는 메모리 - 상기 메모리는 애플리케이션과 호환가능한 프로토콜들을 리스팅하는 지원되는 애플리케이션 프로토콜 리스트를 포함하고, 지원되는 애플리케이션 프로토콜은 모바일 컴퓨팅 디바이스 상에 설치되는 애플리케이션에 의해 지원되는 애플리케이션 프로토콜을 포함할 수 있음 - ; 및/또는 상기 하우징 내에 배치되고, 그리고/또는 상기 메모리 및 상기 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함하는 모바일 컴퓨팅 디바이스가 제공된다. 상기 제어 로직은 상기 액세서리에 의해 지원되는 애플리케이션 프로토콜을 식별하는 메시지를 액세서리로부터 수신하고; 상기 애플리케이션 프로토콜이 지원되는 애플리케이션 프로토콜 리스트 내에 저장된 지원되는 애플리케이션 프로토콜과 매치하는지의 여부를 결정하고; 그리고/또는 매치하는 경우, 상기 애플리케이션 프로토콜과 매치되는 상기 지원되는 액세서리와 연관된 애플리케이션을 실행하도록 구성된다. 일부 실시예들에서, 상기 액세서리로부터 수신되는 상기 메시지는 상기 애플리케이션 프로토콜을 지원하는 애플리케이션이 발견될 수 있는 인터넷-기반 어드레스를 식별한다. 일부 실시예들에서, 방법은 또한 인터넷-기반 어드레스로부터 상기 애플리케이션을 다운로드하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 모바일 컴퓨팅 디바이스에서 애플리케이션을 설치하고 애플리케이션을 실행하는 단계를 포함할 수 있다.
하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 커맨드들 및 데이터를 액세서리와 교환하도록 구성되는 통신 인터페이스 - 상기 통신 인터페이스는 제1 통신 포트 및 제2 통신 포트를 가짐 - ; 상기 하우징 내에 배치되는 메모리; 및/또는 상기 하우징 내에 배치되고, 상기 메모리 및 상기 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함하는 모바일 통신 디바이스가 개시된다. 상기 제어 로직은 제1 애플리케이션 통신 프로토콜을 사용하여 상기 제1 통신 포트를 통해 제1 액세서리와 통신하고; 그리고/또는 제2 애플리케이션 통신 프로토콜을 사용하여 상기 제2 통신 포트를 통해 제2 액세서리와 통신하도록 구성될 수 있다. 일부 실시예들에서, 상기 제1 통신 포트 또는 상기 제2 통신 포트 중 적어도 하나는 무선 통신 포트를 포함할 수 있다. 일부 실시예들에서, 상기 제1 애플리케이션 통신 프로토콜 및 상기 제2 애플리케이션 통신 프로토콜은 상이하다. 일부 실시예들에서, 상기 제어 로직은 액세서리 통신 프로토콜을 사용하여 상기 제1 통신 포트를 통해 상기 제1 액세서리와 통신하고 상기 제2 액세서리 통신 포트를 통해 상기 제2 액세서리와 통신하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 제어 로직은 상기 제1 포트를 통해 상기 제1 액세서리와 통신하기 위한 제1 통신 세션을 설정하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 제어 로직은 상기 제1 포트를 통해 상기 제2 액세서리와 통신하기 위한 제2 통신 세션을 설정하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 통신 인터페이스는 제3 통신 포트를 포함할 수 있고, 상기 제어 로직은 제3 애플리케이션 통신 프로토콜을 사용하여 상기 제3 통신을 통해 제3 액세서리와 통신하도록 추가적으로 구성될 수 있다.
모바일 컴퓨팅 디바이스의 프로세서에 의해 실행되는 경우, 프로세서로 하여금 방법을 실행하게 하는 프로그램 명령들을 포함하는 컴퓨터-판독가능한 매체가 개시된다. 이러한 방법은 제1 액세서리와의 통신을 위해 제1 통신 세션을 요청하는 단계; 상기 제1 통신 세션에 대한 세션 식별자를 수신하는 단계; 제1 애플리케이션 프로토콜을 사용하여 상기 제1 통신 세션을 통해 상기 제1 액세서리와 통신하는 단계; 제2 액세서리와 통신하기 위한 제2 통신 세션을 요청하는 단계; 상기 제2 통신 세션에 대한 세션 식별자를 수신하는 단계; 및/또는 제2 애플리케이션 프로토콜을 사용하여 상기 제2 통신 세션을 통해 상기 제2 액세서리와 통신하는 단계를 포함할 수 있다. 일부 실시예들에서, 제1 애플리케이션 프로토콜 및 제2 애플리케이션 프로토콜은 상이하다. 일부 실시예들에서, 제1 애플리케이션 프로토콜 및 제2 애플리케이션 프로토콜은 동일하다. 일부 실시예들에서, 프로그램 명령들은 추가적으로 상기 프로세서로 하여금 상기 제1 액세서리 또는 상기 제2 액세서리가 상기 모바일 컴퓨팅 디바이스와 동작상으로 연결되는지를 결정하게 한다.
모바일 통신 디바이스는 하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 그리고/또는 제1 액세서리 및 제2 액세서리와 커맨드들 및 데이터를 교환하도록 구성되는 통신 인터페이스 - 상기 통신 인터페이스는 제1 통신 포트 및 제2 통신 포트를 가짐 - ; 하우징 내에 배치되는 메모리; 및/또는 하우징 내에 배치되고 그리고/또는 메모리 및 통신 인터페이스와 통신상으로 연결되는 제어 로직을 포함한다. 제어 로직은 제어 로직을 실행하는 제1 애플리케이션과 제1 통신 포트 사이에 제1 통신 세션을 설정하고; 제1 애플리케이션 프로토콜을 사용하여 제1 통신 세션을 통해 제1 액세서리와 통신하고; 제어 로직에 의해 실행하는 제2 애플리케이션과 제2 통신 포트 사이에 제2 통신 세션을 설정하고; 그리고/또는 제2 애플리케이션 프로토콜을 사용하여 제2 통신 세션을 통해 제2 액세서리와 통신하도록 구성된다. 일부 실시예들에서, 제어 로직은 액세서리 통신 프로토콜을 사용하여 제1 애플리케이션 통신 프로토콜 메시지들에 대한 터널을 제공하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 액세서리 통신 프로토콜은 제1 애플리케이션 통신 프로토콜과는 상이할 수 있다. 일부 실시예들에서, 제어 로직은 액세서리 통신 프로토콜을 사용하여 제2 애플리케이션 통신 프로토콜 메시지들에 대한 터널을 제공하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 액세서리 통신 프로토콜은 제2 애플리케이션 통신 프로토콜과는 상이할 수 있다.
모바일 컴퓨팅 디바이스에서 실행하는 또다른 방법이 제공된다. 방법은 액세서리가 통신 포트에서 모바일 컴퓨팅 디바이스와 통신상으로 연결될 수 있다는 표시를 수신하는 단계; 액세서리가 액세서리 프로토콜 및 애플리케이션 프로토콜 모두를 사용하여 모바일 컴퓨팅 디바이스와의 통신을 지원하는 것을 결정하는 단계; 통신 포트를 통하는 액세서리와 통신 포트를 통해 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션 사이에 통신 세션을 설정하는 단계; 및/또는 통신 세션을 사용하여 애플리케이션으로부터 액세서리로 메시지들을 송신하는 단계를 포함할 수 있으며, 여기서 메시지들은 애플리케이션 프로토콜 메시지들이다. 일부 실시예들에서, 액세서리 프로토콜 및 애플리케이션 프로토콜은 상이하다. 일부 실시예들에서, 방법은 액세서리가 애플리케이션 프로토콜을 지원한다는 표시를 액세서리로부터 수신하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 액세서리 프로토콜 메시지들 내에 애플리케이션 프로토콜 메시지들을 캡슐화하는 단계를 포함할 수 있다.
모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션 및 상기 모바일 컴퓨팅 디바이스와 통신하는 액세서리 사이에 통신 세션을 설정하기 위한 방법이 제공된다. 방법은 모바일 컴퓨팅 디바이스에서 실행할 수 있으며, 상기 액세서리에 관련된 정보에 대한 요청을 상기 애플리케이션으로부터 수신하는 단계; 상기 애플리케이션에 액세서리 정보를 제공하는 단계 - 상기 액세서리 정보는 액세서리가 호환가능한 적어도 하나의 애플리케이션 통신 프로토콜의 식별자를 포함함 - ; 상기 애플리케이션 통신 프로토콜을 사용하는 통신을 위해 상기 액세서리와 상기 애플리케이션 사이의 통신 세션에 대한 요청을 수신하는 단계; 상기 애플리케이션으로부터 메시지를 수신하는 단계 - 상기 메시지는 상기 애플리케이션 통신 프로토콜에 따라 포맷됨 - ; 액세서리 통신 프로토콜 랩퍼(wrapper)로 상기 메시지를 랩핑하는 단계; 및/또는 상기 메시지를 상기 액세서리에 전달하는 단계 - 상기 메시지는 상기 애플리케이션 통신 프로토콜과는 상이한 액세서리 통신 프로토콜에 따라 전달될 수 있음 - 를 포함할 수 있다. 일부 실시예들에서, 상기 액세서리 통신 프로토콜 랩퍼는 터널링 커맨드를 포함할 수 있다. 일부 실시예들에서, 적어도 애플리케이션 통신 프로토콜의 상기 식별자는 역 도메인 명칭 포맷으로 제공되는 식별자를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 상기 액세서리로부터 메시지를 수신하는 단계 - 상기 메시지는 액세서리 통신 프로토콜에 따라 포맷될 수 있음 - ; 상기 메시지로부터 상기 액세서리 통신 프로토콜 랩퍼를 스트립핑(strip)하는 단계; 및/또는 상기 메시지를 상기 애플리케이션에 송신하는 단계 - 상기 메시지는 상기 애플리케이션 통신 프로토콜에 따라 전달될 수 있음 - 를 포함할 수 있다. 일부 실시예들에서, 방법은 또한 액세서리 접속성에 대해 통신 인터페이스를 모니터링하는 단계; 및 액세서리가 상기 통신 인터페이스와 통신상으로 연결되는 경우, 액세서리 성능들을 포함하는 성능 메시지를 수신하는 단계 - 상기 메시지는 상기 액세서리가 호환가능한 적어도 하나의 애플리케이션 통신 프로토콜에 대한 식별자를 포함할 수 있음 - 를 포함할 수 있다. 일부 실시예들에서, 성능 메시지는 상기 액세서리 통신 프로토콜에 따라 포맷될 수 있다.
모바일 컴퓨팅 디바이스는 하우징; 상기 하우징 내에 적어도 부분적으로 배치되고, 그리고/또는 액세서리 통신 프로토콜을 사용하여 명령들 및 데이터를 액세서리와 교환하도록 구성되는 통신 인터페이스; 상기 하우징 내에 배치되는 메모리; 및/또는 상기 하우징 내에 배치되며, 상기 메모리 및 상기 통신 인터페이스와 통신상으로 연결되는 제어 로직 - 상기 제어 로직은 애플리케이션 및 배경 프로세스로서의 액세서리 매니저를 실행하도록 구성됨 - 을 포함할 수 있다. 상기 액세서리 매니저로서 실행하는 제어 로직은 상기 통신 인터페이스와 연결되는 액세서리에 대한 상기 통신 인터페이스를 모니터링하고; 액세서리가 상기 통신 인터페이스와 연결되는 경우, 상기 액세서리 통신 프로토콜을 사용하여 상기 액세서리로부터 호환가능한 애플리케이션 프로토콜들을 포함하는 액세서리 성능 정보를 수신하고; 액세서리 통신 프로토콜 랩퍼로 랩핑된 애플리케이션 통신 프로토콜 포맷된 메시지들을 상기 액세서리로부터 수신하고; 상기 메시지로부터 상기 액세서리 통신 프로토콜 랩퍼를 제거하고; 그리고/또는 상기 애플리케이션에 메시지들을 전달하도록 구성될 수 있다. 일부 실시예들에서, 상기 액세서리 성능들은 상기 액세서리 통신 프로토콜을 사용하여 수신된다. 일부 실시예들에서, 상기 액세서리 매니저로서 실행하는 제어 로직은 데이터가 입력 데이터 스트림으로부터 판독될 수 있도록 상기 입력 데이터 스트림을 설정하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 액세서리 매니저로서 실행하는 제어 로직은 상기 액세서리로부터 수신된 메시지들을 상기 입력 데이터 스트림을 사용하여 상기 애플리케이션으로 전달한다. 일부 실시예들에서, 상기 액세서리 매니저로서 실행하는 제어 로직은: 애플리케이션 통신 프로토콜 포맷된 메시지들을 상기 애플리케이션으로부터 수신하고; 액세서리 통신 프로토콜 랩퍼로 상기 액세서리 통신 프로토콜 메시지들을 랩핑하고; 그리고 상기 메시지들을 상기 액세서리로 전달하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 액세서리 매니저로서 실행하는 제어 로직은, 데이터가 상기 애플리케이션에 의해 출력 데이터 스트림에 기록되고 상기 액세서리로 송신될 수 있도록, 상기 출력 데이터 스트림을 설정하도록 추가적으로 구성될 수 있다. 일부 실시예들에서, 상기 액세서리 매니저로서 실행하는 제어 로직은 상기 출력 데이터 스트림으로부터 수신된 메시지들을 상기 액세서리로 전달한다.
또다른 방법이 제공된다. 이러한 방법은 액세서리가 액세서리 인터페이스에 통신상으로 연결되었다는 표시에 대해 모바일 컴퓨팅 디바이스의 액세서리 인터페이스를 모니터링하는 단계; 액세서리가 액세서리 인터페이스에 통신상으로 연결될 수 있는 경우, 액세서리로부터 성능 정보를 수신하는 단계 - 성능 정보는 액세서리 통신 프로토콜을 사용하여 수신될 수 있고, 그리고/또는 성능 정보는 액세서리와 호환가능한 하나 이상의 애플리케이션 통신 프로토콜을 표시하는 정보를 포함할 수 있음 - ; 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션에 대한 입력 데이터 스트림을 설정하는 단계 - 액세서리 통신 프로토콜 랩퍼 내에 랩핑된 액세서리로부터 수신된 애플리케이션 메시지는 액세서리 통신 프로토콜 랩퍼로부터 스트립핑되고 입력 데이터 스트림을 사용하여 애플리케이션에 기록될 수 있음 - ; 및/또는 애플리케이션에 대한 출력 데이터 스트림을 설정하는 단계 - 애플리케이션으로부터의 출력 데이터 스트림에 기록되는 애플리케이션 메시지는 액세서리 통신 프로토콜 랩퍼 내에 랩핑되어 액세서리 인터페이스를 통해 송신될 수 있음 - 를 포함할 수 있다. 일부 실시예들에서, 액세서리 인터페이스는 무선 통신 인터페이스를 포함할 수 있다. 일부 실시예들에서, 하나 이상의 애플리케이션 통신 프로토콜들을 표시하는 정보는 역 도메인 명칭 포맷을 사용하여 제공될 수 있다.
또한, 모바일 컴퓨팅 디바이스 상에서 실행하는 방법이 제공된다. 방법은 애플리케이션 프로토콜을 사용하여 외부 액세서리와 모바일 컴퓨팅 디바이스 사이의 통신 세션에 대한 요청을 모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션으로부터 수신하는 단계; 애플리케이션 프로토콜이 액세서리에 의해 지원될 수 있는지의 여부를 결정하는 단계; 애플리케이션 프로토콜이 액세서리에 의해 지원될 수 있는 경우, 애플리케이션 프로토콜을 사용하여 액세서리와 통신하기 위해 입력 스트림 및 출력 스트림을 애플리케이션에 제공하는 단계; 출력 스트림을 통해 애플리케이션으로부터 메시지를 수신하는 단계 - 메시지는 애플리케이션 프로토콜에 따라 포맷될 수 있음 - ; 액세서리 프로토콜 메시지 내에 상기 메시지를 랩핑하는 단계; 및/또는 메시지를 액세서리에 송신하는 단계를 포함할 수 있다.
일부 실시예들에서, 결정하는 단계는 룩업 테이블 내에서 애플리케이션 프로토콜을 검색하는 단계를 더 포함할 수 있다. 일부 실시예들에서, 방법은 액세서리로부터 메시지를 수신하는 단계 - 상기 메시지는 액세서리 프로토콜 메시지 내에 랩핑된 애플리케이션 프로토콜 메시지일 수 있음 - ; 애플리케이션 프로토콜 메시지로부터 액세서리 프로토콜 랩퍼를 벗겨내는(unwrapping) 단계; 및/또는 애플리케이션 프로토콜 메시지를 애플리케이션의 입력 스트림에 기록하는 단계를 포함할 수 있다.
모바일 컴퓨팅 디바이스 상에서 실행하는 또다른 방법이 제공된다. 방법은 제1 액세서리와 제1 애플리케이션 사이에 제1 통신 세션을 오픈하는 단계 - 상기 통신 세션은 제1 통신 프로토콜을 사용하여 제1 액세서리와 제1 애플리케이션 사이에 통신을 제공함 - ; 제1 애플리케이션으로부터 제1 메시지를 수신하는 단계; 액세서리 프로토콜 랩퍼 내에 랩핑된 제1 메시지를 액세서리에 송신하는 단계; 제1 액세서리와 제2 애플리케이션 사이에 제2 통신 세션을 오픈하는 단계 - 상기 통신 세션은 제2 통신 프로토콜을 사용하여 제1 액세서리와 제1 애플리케이션 사이에 통신을 제공하고, 제1 및 제2 애플리케이션 프로토콜들은 상이함 - ; 및/또는 제2 애플리케이션으로부터 제2 메시지를 수신하고, 액세서리 프로토콜 랩퍼 내에 랩핑된 제2 메시지를 액세서리에 송신하는 단계를 포함한다.
모바일 컴퓨팅 디바이스의 프로세서에 의해 실행되는 경우 프로세서로 하여금 방법을 실행하게 하는 프로그램 명령들을 포함하는 컴퓨터-판독가능한 매체가 제공된다. 방법은 액세서리 매니저로부터 액세서리 정보를 요청하는 단계 - 상기 액세서리 매니저는 상기 모바일 컴퓨팅 디바이스에서 실행하는 배경 프로세스이고, 상기 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션들과 상기 모바일 컴퓨팅 디바이스와 통신상으로 연결된 액세서리 사이에 통신 접속성을 제공함 - ; 액세서리가 상기 모바일 컴퓨팅 디바이스와 통신상으로 연결되는 경우, 상기 액세서리와 호환가능한 적어도 하나의 애플리케이션 통신 프로토콜을 특정하는 하나 이상의 프로토콜 식별자들 및 액세서리 식별자를 상기 액세서리 매니저로부터 수신하는 단계; 상기 애플리케이션이 상기 적어도 하나의 애플리케이션 프로토콜과 호환가능한지의 여부를 결정하는 단계; 상기 애플리케이션이 호환가능한 경우, 상기 애플리케이션 통신 프로토콜을 사용하여 상기 액세서리 매니저를 통해 상기 액세서리와의 통신을 위한 세션을 오픈(open)하는 단계; 및 상기 애플리케이션 통신 프로토콜을 사용하여 상기 액세서리와 통신하는 단계를 포함할 수 있다. 일부 실시예들에서, 프로토콜 식별자는 역 도메인 명칭 규약을 사용하여 포맷될 수 있다. 일부 실시예들에서, 상기 액세서리와 통신하는 단계는 상기 액세서리 매니저로부터 출력 스트림을 수신하는 단계; 및/또는 상기 애플리케이션 통신 프로토콜에 따라 데이터를 상기 입력 스트림에 기록하는 단계를 포함할 수 있다. 일부 실시예들에서, 상기 액세서리와 통신하는 단계는 상기 액세서리 매니저로부터 입력 스트림을 수신하는 단계; 및/또는 상기 애플리케이션 통신 프로토콜에 따라 포맷된 데이터를 상기 입력 스트림으로부터 수신하는 단계를 포함할 수 있다.
애플리케이션이 애플리케이션 매니저를 사용하여 액세서리와의 통신을 설정하기 위한 방법이 개시된다. 방법은 상기 애플리케이션과 호환가능한 애플리케이션 프로토콜을 특정하는 표시를 상기 애플리케이션 매니저로부터 수신하는 단계; 상기 애플리케이션 프로토콜을 사용하여 상기 액세서리와 통신하기 위해 상기 애플리케이션 매니저로부터 입력 스트림 및 출력 스트림을 수신하는 단계; 및/또는 그후, 상기 액세서리에 대한 애플리케이션 프로토콜 메시지들을 상기 출력 스트림에 기록하는 단계를 포함할 수 있다. 일부 실시예들에서, 방법은 상기 애플리케이션 매니저에 애플리케이션 프로토콜 정보를 송신하는 단계를 더 포함할 수 있고, 상기 애플리케이션 프로토콜 정보는 상기 애플리케이션에 의해 지원되는 상기 애플리케이션 프로토콜들의 표시를 포함할 수 있다. 일부 실시예들에서, 상기 액세서리와 호환가능한 상기 애플리케이션 프로토콜은 상기 애플리케이션에 의해 송신되는 상기 애플리케이션 프로토콜 정보에 의해 표시되는 애플리케이션 프로토콜일 수 있다. 일부 실시예들에서, 애플리케이션 프로토콜 정보에 의해 표시되는 애플리케이션 프로토콜은 역 도메인 명칭 규약을 사용하여 애플리케이션 프로토콜을 표시한다.
모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션에 의해 수행되는 방법이 개시된다. 방법은 애플리케이션 매니저로부터 액세서리 정보를 요청하는 단계 - 액세서리 정보는 모바일 컴퓨팅 디바이스와 통신상으로 연결되는 액세서리에 의해 지원되는 하나 이상의 애플리케이션 프로토콜들을 표시하는 정보를 포함할 수 있음 - ; 액세서리에 의해 지원되는 애플리케이션 프로토콜이 애플리케이션에 의해 지원되는 애플리케이션 프로토콜에 매치하는지의 여부를 결정하는 단계; 애플리케이션 프로토콜이 매치하는 경우, 애플리케이션 프로토콜을 사용하여 액세서리와의 통신을 위해 입력 스트림 및 출력 스트림을 요청하는 단계; 입력 스트림 및 출력 스트림을 수신하는 단계; 및/또는 그후 액세서리에 대한 애플리케이션 프로토콜 메시지들을 출력 스트림에 기록하는 단계를 포함한다. 일부 실시예들에서, 방법은 입력 스트림을 사용하여 액세서리로부터 애플리케이션 프로토콜 메시지들을 판독하는 단계를 포함할 수 있다. 일부 실시예들에서, 액세서리 정보는 역 도메인 명칭 규약을 사용하여 애플리케이션 프로토콜들을 표시한다. 일부 실시예들에서, 액세서리 정보는 테이블에 저장될 수 있고, 액세서리 정보는 액세서리 정보와 연관된 메타데이터의 저장 위치에 대한 포인터일 수 있다.
모바일 컴퓨팅 디바이스 상에서 실행하는 애플리케이션에 의해 수행되는 방법이 제공된다. 방법은 모바일 컴퓨팅 디바이스와 연결되는 액세서리에 의해 애플리케이션 프로토콜을 표시하는 정보를 포함하는 테이블에 액세스하는 단계; 애플리케이션에 의해 지원되는 애플리케이션 프로토콜이 테이블 내의 애플리케이션 프로토콜에 매치하는지의 여부를 결정하는 단계; 애플리케이션 프로토콜들이 매치하는 경우, 매치되는 애플리케이션을 사용하여 액세서리와의 통신을 위한 통신 세션을 오픈하는 단계; 입력 스트림 및 출력 스트림을 수신하는 단계; 및/또는 그후, 액세서리에 대한 애플리케이션 프로토콜 메시지들을 출력 스트림에 기록하는 단계를 포함한다. 일부 실시예들에서, 테이블은 액세서리와 연관된 복수의 애플리케이션 프로토콜들을 포함할 수 있고, 그리고/또는 애플리케이션은 애플리케이션에 의해 지원되는 애플리케이션 프로토콜이 테이블 내의 애플리케이션 프로토콜 중 임의의 것과 매치하는지의 여부를 결정한다. 일부 실시예들에서, 방법은 또한 입력 스트림을 사용하여 액세서리로부터 애플리케이션 프로토콜 메시지를 판독하는 단계를 포함할 수 있다. 일부 실시예들에서, 액세서리 정보는 역 도메인 명칭 규약을 사용하여 포맷되는 애플리케이션 프로토콜들을 표시한다.
회로, 로직 모듈, 프로세서, 및/또는 다른 컴포넌트는 다양한 동작들을 수행하도록 "구성되는" 것으로서 여기서 기술될 수 있다. 당업자는, 구현예에 따라, 이러한 구성이 특정 컴포넌트들의 설계, 셋업, 상호접속 및/또는 프로그래밍을 통해 달성될 수 있다는 점, 및 다시 구현예에 따라, 구성된 컴포넌트가 상이한 동작들에 대해 재구성가능하거나 재구성가능하지 않을 수도 있다는 점을 인지할 것이다. 예를 들어, 프로그램가능한 프로세서는 적절한 실행가능한 코드를 제공함으로써 구성될 수 있고, 전용 로직 회로는 로직 게이트들 및 다른 회로 엘리먼트들을 적절히 접속시킴으로써 구성될 수 있는 등의 식이다.
전술된 실시예들이 특정 하드웨어 및 소프트웨어 컴포넌트들을 참조할 수 있지만, 당업자는, 하드웨어 및/또는 소프트웨어 컴포넌트들의 상이한 조합들이 또한 사용될 수 있으며, 하드웨어에서 구현되는 것으로서 기술된 특정 동작들이 또한 소프트웨어에서 구현될 수 있으며 그 역도 성립한다는 점을 이해할 것이다.
본 발명의 다양한 피처들을 포함하는 컴퓨터 프로그램들은 다양한 컴퓨터 판독가능한 저장 매체 상에서 인코딩될 수 있고, 적절한 매체는 자기 디스크 또는 테이프, 컴팩트 디스크(CD) 또는 DVD(디지털 다목적 디스크)와 같은 광학 저장 매체, 플래시 메모리 등을 포함한다. 프로그램 코드를 이용하여 인코딩된 컴퓨터 판독가능한 저장 매체는 호환가능한 디바이스와 함께 패키지화될 수 있거나, 다른 디바이스들과는 별도로 제공될 수 있다. 또한, 프로그램 코드는 인터넷을 포함한, 다양한 프로토콜들에 따르는 유선 광학 및/또는 무선 네트워크들을 통해 인코딩 및 전송될 수 있고, 이에 의해, 예를 들어, 인터넷 다운로드를 통한 배포를 허용한다.
예들 및/또는 상세내용들이 단일 컴포넌트에 대해 본 개시물에서 기술되었지만, 이러한 예들 또는 상세내용들은 여기서 기술되는 임의의 실시예와 함께 사용될 수 있다.
따라서, 본 발명이 특정 실시예들에 대해 기술되었지만, 본 발명은 후속하는 청구항들의 범위 내에 있는 모든 수정들 및 등가물들을 커버하도록 의도된다는 점이 이해될 것이다.

Claims (53)

  1. 모바일 컴퓨팅 디바이스와 액세서리 디바이스들 사이의 통신을 위한 액세서리 통신 프로토콜을 이용하여, 액세서리 디바이스에 의해 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 운영체제와 통신하는 단계;
    상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과의 통신을 위하여 상기 액세서리 디바이스에 의해 지원되는 애플리케이션 통신 프로토콜을 식별하도록 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 사용가능한 정보를, 상기 액세서리 디바이스에 의해 상기 모바일 컴퓨팅 디바이스의 운영체제에 전달하는 단계 - 상기 정보는 액세서리 통신 프로토콜을 사용하여 전달되고, 상기 애플리케이션 통신 프로토콜은 상기 액세서리 통신 프로토콜과 구별됨 -; 및
    상기 액세서리 디바이스에 의해, 상기 애플리케이션 통신 프로토콜을 사용하여 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 통신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 애플리케이션 통신 프로토콜을 특정하는 정보를 포함하는 방법.
  3. 제2항에 있어서,
    상기 애플리케이션 통신 프로토콜을 특정하는 정보는 역 도메인 명칭 규약(reverse domain name convention)에서 제공되는 방법.
  4. 제1항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 액세서리 디바이스를 식별하는 정보를 포함하는 방법.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 모바일 컴퓨팅 디바이스 상에서 실행되는 상기 애플리케이션으로부터 상기 애플리케이션 통신 프로토콜에 따르는 커맨드(command)를 수신하는 단계; 및
    상기 커맨드를 수신하는 것에 응답하여 상기 액세서리 디바이스의 상태를 변경하는 단계
    를 더 포함하는 방법.
  8. 액세서리 디바이스로서,
    모바일 컴퓨팅 디바이스와 액세서리 디바이스들 사이의 통신을 위한 액세서리 통신 프로토콜을 이용하여 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 운영체제와 통신하고;
    상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과의 통신을 위하여 상기 액세서리 디바이스에 의해 지원되는 애플리케이션 통신 프로토콜을 식별하도록 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 사용가능한 정보를, 상기 모바일 컴퓨팅 디바이스의 운영체제에 전달하고 - 상기 정보는 액세서리 통신 프로토콜을 사용하여 전달되고, 상기 애플리케이션 통신 프로토콜은 상기 액세서리 통신 프로토콜과 구별됨 -;
    상기 애플리케이션 통신 프로토콜을 사용하여 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 통신하도록 구성된 제어 로직을 포함하는 액세서리 디바이스.
  9. 제8항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 애플리케이션 통신 프로토콜을 특정하는 정보를 포함하는 액세서리 디바이스.
  10. 제8항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 액세서리 디바이스를 식별하는 정보를 포함하는 액세서리 디바이스.
  11. 제10항에 있어서,
    상기 액세서리 디바이스를 식별하는 정보는 상기 액세서리 디바이스의 제조사 및 상기 액세서리 디바이스의 모델을 포함하는 액세서리 디바이스.
  12. 액세서리 디바이스들과의 통신을 위한 액세서리 통신 프로토콜을 이용하여, 모바일 컴퓨팅 디바이스 상에서 실행되는 운영체제에 의해 액세서리 디바이스와 통신하는 단계;
    상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과의 통신을 위하여 상기 액세서리 디바이스에 의해 지원되는 애플리케이션 통신 프로토콜을 식별하도록 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 사용가능한 정보를, 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 운영체제에 의해 상기 액세서리 디바이스로부터 수신하는 단계 - 상기 정보는 액세서리 통신 프로토콜을 사용하여 수신되고, 상기 애플리케이션 통신 프로토콜은 상기 액세서리 통신 프로토콜과 구별됨 -; 및
    상기 모바일 컴퓨팅 디바이스에 의해, 상기 애플리케이션 통신 프로토콜을 사용하여 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 상기 액세서리 디바이스 사이의 통신을 인에이블하는 단계
    를 포함하는 방법.
  13. 제12항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 애플리케이션 통신 프로토콜을 특정하는 정보를 포함하는 방법.
  14. 제12항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 액세서리 디바이스를 식별하는 정보를 포함하는 방법.
  15. 제12항에 있어서,
    상기 애플리케이션 통신 프로토콜이 상기 모바일 컴퓨팅 디바이스 상에 저장된 프로토콜 테이블에 포함되는지의 여부를 결정하는 단계 - 상기 프로토콜 테이블은 상기 모바일 컴퓨팅 디바이스 상에 상주하는 애플리케이션들에 의해 지원되는 애플리케이션 통신 프로토콜들을 식별함 -; 및
    상기 애플리케이션 통신 프로토콜이 상기 프로토콜 테이블에 포함되는 경우,
    상기 프로토콜 테이블 내의 상기 애플리케이션 통신 프로토콜과 연관된 애플리케이션을 결정하는 단계; 및
    상기 결정된 애플리케이션을 실행하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 상기 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 애플리케이션 통신 프로토콜을 지원하는 하나 이상의 애플리케이션들이 발견될 수 있는 인터넷-기반 어드레스를 포함하는 방법.
  17. 제16항에 있어서,
    상기 애플리케이션 통신 프로토콜이 상기 프로토콜 테이블에 포함되지 않을 경우,
    상기 인터넷-기반 어드레스로부터 상기 하나 이상의 애플리케이션들을 상기 모바일 컴퓨팅 디바이스에 다운로드하는 단계; 및
    상기 애플리케이션 통신 프로토콜을 포함하도록 상기 프로토콜 테이블을 업데이트하는 단계
    를 더 포함하는 방법.
  18. 모바일 컴퓨팅 디바이스로서,
    운영체제를 실행하고, 액세서리 디바이스들과의 통신을 위한 액세서리 통신 프로토콜을 이용하여 상기 운영체제에 의해 액세서리 디바이스와 통신하고;
    상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과의 통신을 위하여 상기 액세서리 디바이스에 의해 지원되는 애플리케이션 통신 프로토콜을 식별하도록 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 사용가능한 정보를, 상기 액세서리 디바이스로부터 수신하고 - 상기 정보는 액세서리 통신 프로토콜을 사용하여 수신되고, 상기 애플리케이션 통신 프로토콜은 상기 액세서리 통신 프로토콜과 구별됨 -;
    상기 애플리케이션 통신 프로토콜을 사용하여 상기 모바일 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 상기 액세서리 디바이스 사이의 통신을 인에이블하도록 구성된 프로세서를 포함하는 모바일 컴퓨팅 디바이스.
  19. 제18항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 상기 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 애플리케이션 통신 프로토콜을 특정하는 정보를 포함하는 모바일 컴퓨팅 디바이스.
  20. 제18항에 있어서,
    상기 애플리케이션 통신 프로토콜을 식별하기 위해 상기 모바일 컴퓨팅 디바이스에 의해 사용가능한 정보는 상기 액세서리 디바이스를 식별하는 정보를 포함하는 모바일 컴퓨팅 디바이스.
  21. 제1항에 있어서,
    상기 운영체제와 통신하는 단계는 상기 액세서리 통신 프로토콜에 따르는 제1 메시지를 상기 모바일 컴퓨팅 디바이스의 포트로 전송하는 단계를 포함하고,
    상기 애플리케이션과 통신하는 단계는 상기 액세서리 통신 프로토콜에 따르는 제2 메시지를 상기 모바일 컴퓨팅 디바이스의 상기 포트로 전송하는 단계를 포함하는 - 상기 제2 메시지는 상기 애플리케이션 통신 프로토콜에 따르는 메시지를 포함함 -
    방법.
  22. 제12항에 있어서,
    상기 액세서리 디바이스와 통신하는 단계는 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 상기 액세서리 통신 프로토콜에 따르는 제1 메시지를 상기 모바일 컴퓨팅 디바이스의 포트로 전송하는 단계를 포함하고,
    상기 애플리케이션과 상기 액세서리 디바이스 사이의 통신을 인에이블하는 단계는 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 상기 모바일 컴퓨팅 디바이스의 상기 포트를 통하여 상기 액세서리 통신 프로토콜에 따르는 제2 메시지를 수신하는 단계 - 상기 제2 메시지는 상기 애플리케이션 통신 프로토콜에 따르는 제3 메시지를 포함함 - 및 상기 모바일 컴퓨팅 디바이스의 운영체제에 의해 상기 제3 메시지를 상기 애플리케이션으로 전달하는 단계 - 상기 제3 메시지는 상기 애플리케이션에 의해 해석됨 - 를 포함하는
    방법.
  23. 제12항에 있어서,
    상기 애플리케이션이 실행하는 동안에, 상기 모바일 컴퓨팅 디바이스 상의 또 다른 프로세스에 의해 상기 액세서리 통신 프로토콜을 이용하여 상기 액세서리 디바이스와 통신하는 단계를
    더 포함하는 방법.

  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
KR1020117024283A 2009-03-16 2010-03-11 애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신 KR101346541B1 (ko)

Applications Claiming Priority (17)

Application Number Priority Date Filing Date Title
US16060109P 2009-03-16 2009-03-16
US16064409P 2009-03-16 2009-03-16
US61/160,644 2009-03-16
US61/160,601 2009-03-16
US12/720,446 US8402145B2 (en) 2009-03-16 2010-03-09 Application communication with external accessories
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,349 2010-03-09
US12/720,423 2010-03-09
US12/720,489 2010-03-09
US12/720,375 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
KR20110129473A KR20110129473A (ko) 2011-12-01
KR101346541B1 true KR101346541B1 (ko) 2013-12-31

Family

ID=42153714

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117024283A KR101346541B1 (ko) 2009-03-16 2010-03-11 애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신

Country Status (12)

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

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 戴尔产品有限公司 计算机实现的方法、设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271387A1 (en) * 2006-05-22 2007-11-22 Apple Computer, Inc. Communication protocol for use with portable electronic devices
US20080102821A1 (en) * 2006-10-31 2008-05-01 Julien Jacques Jalon Control of electronic devices
US20080320190A1 (en) * 2007-06-22 2008-12-25 Apple Inc. Communication between a host device and an accessory via an intermediate device
US20090024757A1 (en) * 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols

Family Cites Families (83)

* 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 株式会社東芝 携帯端末機器に装着される電子装置及び電子装置の制御方法
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
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
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090024757A1 (en) * 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US20070271387A1 (en) * 2006-05-22 2007-11-22 Apple Computer, Inc. Communication protocol for use with portable electronic devices
US20080102821A1 (en) * 2006-10-31 2008-05-01 Julien Jacques Jalon Control of electronic devices
US20080320190A1 (en) * 2007-06-22 2008-12-25 Apple Inc. Communication between a host device and an accessory via an intermediate device

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
GB2481349A (en) 2011-12-21
US8554924B2 (en) 2013-10-08
US8402128B2 (en) 2013-03-19
BRPI1009309B1 (pt) 2021-11-16
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
KR101346541B1 (ko) 애플리케이션 통신 프로토콜을 사용하는 액세서리 및 모바일 컴퓨팅 디바이스 통신
US20170013066A1 (en) Application launching in conjunction with an accessory
KR101787185B1 (ko) 액세서리와 공조하는 애플리케이션 개시
AU2011101205A4 (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
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 7