KR20130094329A - 액세서리와 공조하는 애플리케이션 개시 - Google Patents

액세서리와 공조하는 애플리케이션 개시 Download PDF

Info

Publication number
KR20130094329A
KR20130094329A KR1020137011004A KR20137011004A KR20130094329A KR 20130094329 A KR20130094329 A KR 20130094329A KR 1020137011004 A KR1020137011004 A KR 1020137011004A KR 20137011004 A KR20137011004 A KR 20137011004A KR 20130094329 A KR20130094329 A KR 20130094329A
Authority
KR
South Korea
Prior art keywords
application
computing device
mobile computing
accessory
launch
Prior art date
Application number
KR1020137011004A
Other languages
English (en)
Other versions
KR101522801B1 (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 KR20130094329A publication Critical patent/KR20130094329A/ko
Application granted granted Critical
Publication of KR101522801B1 publication Critical patent/KR101522801B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명의 실시예들은 액세서리로부터의 개시(launch) 요청에 응답하여 애플리케이션을 개시하기 위한 시스템들 및 방법들을 제공한다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 자신이 애플리케이션의 개시를 허용하는 상태에 있는지의 여부를 결정할 수 있고/있거나 개시 커맨드에서 요청되는 애플리케이션 또는 애플리케이션 타입이 개시를 위해 이용가능한지의 여부를 결정할 수 있다. 요청에 응답하여, 그리고 모바일 컴퓨팅 디바이스가 가능한 경우, 모바일 컴퓨팅 디바이스는 애플리케이션을 개시할 수 있다. 모바일 컴퓨팅 디바이스는 또한 애플리케이션이 개시될 수 있음을 표시하는 긍정 확인응답 메시지를 액세서리에 송신할 수 있다. 개방 통신 세션 메시지가 또한 액세서리에 송신될 수 있다. 이에 응답하여, 액세서리는 통신 세션을 개방하고 애플리케이션과 상호동작할 수 있다.

Description

액세서리와 공조하는 애플리케이션 개시{APPLICATION LAUNCHING IN CONJUNCTION WITH AN ACCESSORY}
관련 출원들에 대한 교차 참조
본 출원은 그 전체 내용이 모든 목적으로 여기에 참조로 포함된, APPLICATION AUTO-LAUNCH IN CONJUNCTION WITH AN ACCESSORY라는 명칭의 2010년 9월 30일에 출원된 미국 가출원 제61/388,560호(출원인 관리 번호 제20750P-017400US호)의 35 U.S.C.119(e) 하에서의 이점 및 우선권을 청구한다.
본 개시내용은 일반적으로 액세서리와 모바일 컴퓨팅 디바이스 사이의 통신에 관한 것이며, 특히 모바일 컴퓨팅 디바이스 상에서 애플리케이션들을 개시하기 위한 액세서리 요청들에 관한 것이다.
모바일 컴퓨팅 디바이스들은 유비쿼터스화되었다. 여러 회사들이, 몇몇을 들자면, iPhone™, iPod Touch™, iPad™, 다양한 BlackBerry® 디바이스들, 및 Google사의 Android™ 플랫폼과 호환가능한 스마트폰들과 같은 모바일 컴퓨팅 디바이스들을 만들었다. 모바일 컴퓨팅 디바이스들은 종종 웹 브라우저, 워드 프로세서, 이메일 애플리케이션, 지도, 전화 서비스, 게임, 오디오 애플리케이션, 비디오 애플리케이션 등을 포함한다. 또한, 액세서리들은 또한 모바일 컴퓨팅 디바이스들과 함께 사용하도록 만들어졌다. 일부 액세서리들은 모바일 컴퓨팅 디바이스 상에서 실행하는 특정 애플리케이션 또는 애플리케이션들의 그룹과 상호동작하도록 만들어질 수 있다.
본 발명의 실시예들은 액세서리와 통신상으로 커플링되는 모바일 컴퓨팅 디바이스 상에서 애플리케이션을 개시하기 위한 기법들을 제공한다. 실시예들의 하나의 세트에서, 액세서리는 모바일 컴퓨팅 디바이스 상에서 애플리케이션을 개시하기 위한 커맨드를 모바일 컴퓨팅 디바이스에 송신할 수 있다. 그 응답으로, 모바일 컴퓨팅 디바이스는 애플리케이션이 개시될 수 있음을 표시하는 확인응답을 액세서리에 송신할 수 있다. 이후 통신 세션은 액세서리와 모바일 컴퓨팅 디바이스 사이의 통신을 용이하게 하기 위해 개방될 수 있다.
첨부 도면들과 함께 후속하는 상세한 설명은 본 발명의 속성 및 장점들의 더욱 양호한 이해를 제공할 것이다.
도 1은 본 발명의 일부 실시예들에 따라 유선 및 무선 통신 채널을 사용하여 2개의 액세서리들과 커플링된 모바일 컴퓨팅 디바이스를 도시한다.
도 2는 본 발명의 일 실시예에 따라 함께 커플링된 액세서리의 블록도 및 모바일 컴퓨팅 디바이스의 블록도를 도시한다.
도 3은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스 상에서 발생하는 애플리케이션의 개시를 위한 프로세스의 흐름도이다.
도 4는 본 발명의 일부 실시예들에 따라 액세서리가 모바일 컴퓨팅 디바이스에서 애플리케이션의 개시를 요청하기 위한 프로세스의 흐름도이다.
도 5는 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스 상에서 발생하는 애플리케이션을 개시하기 위한 프로세스의 또다른 흐름도이다.
도 6는 본 발명의 일부 실시예들에 따라 액세서리가 모바일 컴퓨팅 디바이스에서 애플리케이션의 개시를 요청하기 위한 프로세스의 또다른 흐름도이다.
도 7은 본 발명의 일부 실시예들에 따라 모바일 컴퓨팅 디바이스 상에서 발생하는 애플리케이션을 개시하기 위한 프로세스의 또다른 흐름도이다.
도 8은 본 발명의 일부 실시예들에 따라 액세서리가 모바일 컴퓨팅 디바이스에서 애플리케이션의 개시를 요청하기 위한 프로세스의 또다른 흐름도이다.
본 발명의 다양한 실시예들은 모바일 컴퓨팅 디바이스가 애플리케이션을 실행하거나 개시하는 것을 요청하기 위해 액세서리에 의해 사용될 수 있는 프로세스들 및 시스템들에 관한 것이다. 예를 들어, 액세서리는 모바일 컴퓨팅 디바이스에 의해 실행되는 특정 애플리케이션과 작용하도록 개발될 수 있다. 사용자가 모바일 컴퓨팅 디바이스에서 애플리케이션을 열고/열거나 실행하도록 대기하는 것보다는, 액세서리는 모바일 컴퓨팅 디바이스가 애플리케이션을 실행하는 것을 요청하는 커맨드를 모바일 컴퓨팅 디바이스에 송신할 수 있다. 일부 경우들에서, 모바일 컴퓨팅 디바이스는 애플리케이션을 개시할지의 여부를 제어하고, 모바일 컴퓨팅 디바이스가 새로운 애플리케이션을 개시하도록 허용할 수 있는 상태에 있는지의 여부를 결정할 수 있는 등의 식이다. 따라서, 일부 실시예들에서, 액세서리는 애플리케이션이 개시되도록 요청할 수 있고, 상기 요청은 모바일 컴퓨팅 디바이스에 의해 거절되거나 승인될 수 있다. 모바일 컴퓨팅 디바이스는 요청이 핸들링되는 시기 및 방법을 제어할 수 있다.
일부 실시예들에서, 모바일 컴퓨팅 디바이스에 송신된 개시 커맨드는 특정 애플리케이션 또는 애플리케이션 타입을 표시하는 정보를 포함할 수 있다. 모바일 컴퓨팅 디바이스는 이후, 이러한 정보에 기초하여, 어느 애플리케이션을 개시할지를 결정할 수 있다. 실시예들의 한 세트에서, 요청에 응답하여, 액세서리는 통신 채널의 개방을 대기할 수 있다. 통신 채널이 개방되면, 애플리케이션 및 액세서리는 상호동작할 수 있다.
일부 실시예들에서, 액세서리는 모바일 컴퓨팅 디바이스로부터 애플리케이션 정보를 요청할 수 있다. 이는, 예를 들어, 디바이스 능력들이 교환될 수 있는 초기화 페이즈 동안 수행될 수 있다. 그 응답으로, 모바일 컴퓨팅 디바이스는 이용가능한 애플리케이션의 리스팅을 송신할 수 있다. 이러한 리스팅을 사용하여, 액세서리는 이용가능한 애플리케이션들 각각에 대응하는 비트 마스크를 포함하는 개시 요청을 송신할 수 있다. 애플리케이션들의 리스팅 내의 대응하는 애플리케이션이 개시됨을 표시하는 비트 마스크 내의 비트가 어써트(assert)될 수 있다.
개시 커맨드는 다수의 데이터 엘리먼트들 -- 예를 들어, 특정 애플리케이션의 명칭, 애플리케이션 타입, 애플리케이션들의 종류(genus), 룩업 테이블 내의 애플리케이션 타입들을 검색하기 위해 사용될 수 있는 액세서리의 명칭, 애플리케이션의 타입 또는 개시될 특정 애플리케이션을 표시하는 비트 마스크, 통신을 위해 사용될 통신 프로토콜, 또는 요청을 수행하는 액세서리의 식별자, 애플리케이션 타입에 대응하는 코드, 또는 애플리케이션 또는 애플리케이션 타입을 식별할 수 있는 임의의 다른 정보를 포함할 수 있다.
모바일 컴퓨팅 디바이스가 어느 애플리케이션이 개시되고 어느 것이 개시되지 않는지를 제어하므로, 모바일 컴퓨팅 디바이스의 액세서리 제어가 조절될 수 있다. 그러나, 이러한 제어에도 불구하고, 액세서리들은 모바일 컴퓨팅 디바이스가 애플리케이션을 개시하는 것을 여전히 요청할 수 있다. 따라서, 본 발명의 실시예들은 모바일 컴퓨팅 디바이스에서 애플리케이션을 개시하기 위해 액세서리 유연성(flexibility) 및 애플리케이션 개시의 전체 제어 사이의 균형을 맞춘다.
모바일 컴퓨팅 디바이스들 및 액세서리들
도 1은 액세서리(121) 및 액세서리(124)와 커플링되는 모바일 컴퓨팅 디바이스(102)를 도시한다. 케이블(111)은 모바일 컴퓨팅 디바이스(102)를 액세서리(124)와 커플링시키기 위해 사용된다. 케이블(111)은 모바일 컴퓨팅 디바이스(102)와 접속하기 위한 커넥터(108) 및 액세서리(124)와 접속하기 위한 커넥터(110)를 포함할 수 있다. 액세서리(121)는 모바일 컴퓨팅 디바이스(102)와 무선으로 커플링된다.
모바일 컴퓨팅 디바이스는 제한 없는 임의의 타입의 컴퓨팅 및/또는 통신 디바이스일 수 있다. 예를 들어, iPod Touch™, iPhone™, iPad ™, 안드로이드 호환가능 디바이스 및/또는 블랙베리 디바이스가 사용될 수 있다. 또한, 모바일 컴퓨팅 디바이스(102)는 미디어 플레이어 능력, 네트워킹, 웹 브라우징, 이메일, 워드 프로세싱, 데이터 저장소, 애플리케이션 실행 및/또는 임의의 다른 컴퓨팅 또는 통신 기능들을 제공할 수 있다.
액세서리(113)는, 예를 들어, 외부 스피커 시스템, 외부 비디오 디바이스, 멀티미디어 디바이스, 가전 디바이스, 테스트 기기, 가전 제품(예를 들어, 냉장고, 커피 메이커, 환경 제어 시스템, 또는 식기세척기), 운동 장비, 보안 시스템, 홈 또는 오피스 자동화 시스템, 카메라, 사용자 입력 디바이스(예를 들어, 키보드, 마우스, 게임 제어기), 측정 디바이스, 의료 디바이스(예를 들어, 포도당 모니터 또는 인슐린 모니터), 매장 디바이스, 자동차, 자동차 액세서리(예를 들어, 카 스테리오 시스템, 또는 카 내비게이션 시스템), 라디오(예를 들어, FM, AM 및/또는 위성), 비행기, 버스, 기차 또는 다른 대중교통 차량 상의 엔터테인먼트 콘솔 등과 같은, 모바일 컴퓨팅 디바이스(102)와 통신할 수 있는 임의의 디바이스일 수 있다. 모바일 컴퓨팅 디바이스와 함께 사용될 수 있는 임의의 타입의 디바이스는 액세서리 디바이스로서 사용될 수 있다.
도 2는 일 실시예에 따라 액세서리(202)(예를 들어, 액세서리(121) 또는 액세서리(124)를 구현하는)와 커플링되는 모바일 컴퓨팅 디바이스(200)(예를 들어, 도 1의 모바일 컴퓨팅 디바이스(102)를 구현하는)의 블록도를 도시한다. 모바일 컴퓨팅 디바이스(200)는 프로세서(230), 저장 디바이스(225), 사용자 인터페이스(UI)(235), 네트워크 인터페이스(236) 및 액세서리 입력/출력(I/O) 인터페이스(205)를 포함할 수 있다.
하나 이상의 집적 회로들(예를 들어, 종래의 마이크로프로세서 또는 마이크로 제어기를 포함하는)로서 구현될 수 있는 프로세서(230)는 모바일 컴퓨팅 디바이스(200)의 동작을 제어할 수 있다. 예를 들어, 사용자 인터페이스(235)에 의해 제공되는 사용자 입력 신호들에 응답하여, 프로세서(230)는, 저장 디바이스(225)에 저장될 수 있는 미디어 자산들을 선택 및 재생하는 것, 네트워크 인터페이스(236)를 사용하여 데이터를 송신 및/또는 검색하기 위해 다양한 네트워크들(예를 들어, 모바일 전화 네트워크, 인터넷, 로컬 영역 네트워크 등)에 액세스하는 것, 저장 디바이스(225) 상에 상주하는 다양한 애플리케이션 프로그램들(앱들)(226)을 실행하는 것과 같은 다양한 작업들을 수행할 수 있다. 프로세서(230)는 또한 액세서리 I/O 인터페이스(205)를 통해 액세서리들과의 통신을 관리할 수 있다.
사용자 인터페이스(235)는, 지원 전자 부품들(예를 들어, 디지털-대-아날로그 또는 아날로그-대-디지털 변환기, 신호 프로세서 등)과 함께 터치 패드, 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 키패드 마이크로폰 등과 같은 입력 제어들 뿐만 아니라, 디스플레이 스크린, 표시등, 스피커, 헤드폰 잭 등과 같은 출력 디바이스들을 포함할 수 있다. 사용자는 모바일 컴퓨팅 디바이스(200)의 기능성을 작동시키도록 사용자 인터페이스(235)의 다양한 입력 제어들을 동작시킬 수 있고, 또한, 사용자 인터페이스(235)를 통해 모바일 컴퓨팅 디바이스(200)로부터의 출력을 시청 및/또는 청취할 수 있다.
저장 디바이스(225)는 예를 들어, 디스크, 플래시 메모리, 또는 임의의 다른 비휘발성 저장 매체를 사용하여 구현될 수 있다. 저장 디바이스(225)는 프로세서(230)에 의해 실행가능한 애플리케이션 프로그램들(226), 시스템 프로그램들 및 다른 프로그램 코드(명시적으로 도시되지 않음), 및 다양한 액세서리들과의 통신을 관리할 시에 사용될 수 있는 프로토콜 테이블(227)과 같은 다양한 데이터를 저장할 수 있다. 일부 실시예들에서, 저장 디바이스(225)는 또한, 미디어 자산들(예를 들어, 자산 명칭, 아티스트, 제목, 장르 등), 재생리스트(순차적으로 또는 랜덤 순서로 재생될 수 있는 자산들의 리스트들) 등을 기술하는 메타데이터와 함께, 모바일 통신 디바이스(200)에 의해 재생될 수 있는 오디오, 비디오, 스틸 이미지 등과 같은 미디어 자산들을 저장할 수 있다. 저장 디바이스(225)는 또한 사용자의 연락처에 관한 정보(이름, 주소, 전화 번호 등)와 같은 임의의 다른 타입의 정보, 스케쥴링된 약속 및 이벤트, 노트들, 및/또는 다른 개인 정보를 저장할 수 있다.
애플리케이션 프로그램들(또한 여기서 "애플리케이션들" 또는 "앱"들로서 지칭됨)(226)은 프로세서(230)에 의해 실행가능한 임의의 프로그램을 포함할 수 있다. 예를 들어, 실시예들의 한 세트에서, 애플리케이션은 사용자와의 상호작용을 가능하게 하기 위한 사용자 인터페이스를 포함하는 프로그램일 수 있다. 다른 실시예들에서, 애플리케이션은 데몬과 같은 배경에서 실행하는 프로세스일 수 있다. 일부 실시예들에서, 특정 애플리케이션은 그 제조자에 의해 모바일 컴퓨팅 디바이스(200) 상에 설치될 수 있는 반면, 다른 애플리케이션들은 사용자에 의해 설치될 수 있다. 애플리케이션 프로그램들의 예들은 비디오 게임 프로그램, 개인 정보 관리 프로그램, 미디어 자산을 재생하고/재생하거나 미디어 자산 데이터베이스를 내비게이팅하기 위한 프로그램, 호출을 하고/하거나 착신하기 위해 전화 인터페이스를 제어하기 위한 프로그램 등을 포함할 수 있다. 특정 애플리케이션 프로그램들(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® 또는 마이크로소프트의 애플리케이션 스토어)을 실행하는 호스트 컴퓨터(미도시)와 통신하기 위해 액세서리 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 사에 의해 제조되고 판매되는 iPad™, iPod® 및 iPhone™ 제품들 상에서 사용되는 커넥터(예를 들어, 30핀 커넥터)와 짝을 이루도록(mate) 적응되는 커넥터를 포함할 수 있다. 다른 커넥터들이 또한 사용될 수 있는데, 예를 들어, 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 표준 USB 또는 FireWire 커넥터 등을 포함할 수 있다. 대안적으로 또는 추가적으로, 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 무선 인터페이스(예를 들어, 블루투스 등)를 포함할 수 있다.
제어기(260)는, 예를 들어, 디지털 오디오 디코딩, 아날로그 또는 디지털 오디오 및/또는 비디오 프로세싱, 사용자 입력의 프로세싱, 액세서리 기능성의 제어 등과 같은 다양한 기능들을 수행하기 위한 프로그램 코드를 실행하는 마이크로프로세서 또는 마이크로제어기를 포함할 수 있다. 제어기(260)는 또한 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)를 통해 모바일 컴퓨팅 디바이스와의 통신을 관리할 수 있다.
사용자 인터페이스(255)는, 지원 전자 부품들(예를 들어, 디지털-대-아날로그 또는 아날로그-대-디지털 변환기, 신호 프로세서 등)과 함께, 터치 패드, 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 키패드, 마이크로폰, 프로브 등과 같은 입력 제어들 뿐만 아니라, 비디오 스크린, 표시등, 스피커, 헤드폰 잭 등과 같은 출력 디바이스들을 포함할 수 있다. 사용자는 액세서리(202)의 기능성을 작동시키도록 사용자 인터페이스(255)의 다양한 입력 제어들을 동작시킬 수 있고, 사용자 인터페이스(255)를 통해 액세서리(202)로부터의 출력을 시청 및/또는 청취할 수 있다. 추가로, 일부 실시예들에서, 사용자는 액세서리 사용자 인터페이스(255)를 통해 모바일 컴퓨팅 디바이스(200)(또는 그 상에서 실행하는 애플리케이션들)를 동작시킬 수 있다.
메모리(265)는 임의의 타입의 메모리, 디스크, 또는 제어기(260)에 대한 프로그램 코드 및/또는 데이터를 저장할 수 있는 다른 저장 매체를 사용하여 구현될 수 있다. 예를 들어, 메모리(265)는 액세서리 특정 하드웨어(275) 및/또는 사용자 인터페이스(255)와 상호작용하기 위한 명령들을 제어기(260)에 제공할 수 있는 액세서리 특정 소프트웨어(280)를 저장할 수 있다. 일부 실시예들에서, 액세서리(202)는 모바일 컴퓨팅 디바이스(200)로부터 정보(예를 들어, 사용자 입력, 메타데이터 및/또는 애플리케이션 데이터)를 수신할 수 있고, 이러한 정보가 또한 메모리(265)에 저장될 수 있다.
액세서리 특정 하드웨어(275)는 액세서리(202)의 원하는 기능성을 인에이블시키는데 필요한 임의의 하드웨어를 나타낼 수 있다. 예를 들어, 액세서리 특정 하드웨어(275)는 임의의 타입의 센서 또는 계측기와 같은 하나 이상의 데이터 수집 디바이스들을 포함할 수 있다. 일부 실시예에서, 액세서리 특정 하드웨어(275)는 전기적 특성들(저항, 전압차 등)을 나타내는 데이터를 생성하는 전기적 계측기, 광 및/또는 광의 패턴들을 검출하는 광 센서, 모션 센서, 온도 센서, 습도 센서, 압력 센서, 선택된 화학물질들(예를 들어, 일산화탄소와 같은 잠재적인 독성 가스들)의 존재에 응답하는 화학 센서 등을 포함할 수 있다. 액세서리 특정 하드웨어(275)는 또한 포도당 측정기, 호흡 측정기, 심박 및/또는 심장 기능 모니터, 혈압 모니터 등과 같은 하나 이상의 의료 디바이스를 포함할 수 있다.
일부 실시예들에서, 데이터-수집 디바이스를 포함하는 액세서리 특정 하드웨어(275)는 물리적 데이터에 대응하거나 물리적 데이터를 나타내는 하나 이상의 전기적 신호들(예를 들어, 전압, 저항 및/또는 전류)을 제공할 수 있다. 다양한 포맷들의 아날로그 및/또는 디지털 신호들이 사용될 수 있다. 액세서리 특정 하드웨어(275)는 또한 신호를 제어기(260)에 송신하기 전에 이를 프로세싱하는 신호 프로세싱 컴포넌트들을 포함할 수 있고, 일부 실시예들에서, 액세서리 특정 하드웨어(275)는 신호를 프로세싱할 수 있는 제어기(260)에 직접 전기적 신호를 송신할 수 있다. 또한, 액세서리 특정 하드웨어(275)에 의해 수집된 데이터를 나타내는 신호들은 예를 들어, 하기에 기술된 바와 같은 애플리케이션 프로토콜을 사용하여, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션에 (제어기(260)에 의한 프로세싱을 가지고 또는 제어기(260)에 의한 프로세싱 없이) 송신될 수 있고, 따라서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 액세서리 특정 하드웨어(275)를 사용하여 수집되는 데이터를 프로세싱할 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 하나 이상의 컴퓨터-제어가능한 디바이스들을 포함할 수 있다. 컴퓨터-제어가능한 디바이스들의 예들은 모터, 액츄에이터, 조명, 카메라, 밸브, 스피커, 디스플레이 스크린, 프린터, 및/또는 제어기(260)에 의해 제어가능한 임의의 다른 장비를 포함한다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션은 액세서리(202)에 제어 신호들을 송신할 수 있고, 제어기(260)는 제어 신호들에 응답하여 액세서리 특정 하드웨어(275)를 동작시킬 수 있다.
일부 실시예들에서, 액세서리 특정 하드웨어(275)는 사용자 인터페이스(255)의 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 액세서리 특정 하드웨어(275)는 네트워크 및/또는 통신 인터페이스들을 포함할 수 있다. 다른 실시예들에서, 액세서리 특정 하드웨어(275)는 개인 영역 네트워크에 대한 통신 인터페이스를 포함할 수 있다. 다른 실시예들에서, 액세서리 특정 하드웨어(275)는 전화 인터페이스, GSM, CDMA, 및/또는 다른 음성 및/또는 데이터 네트워크 인터페이스들을 포함할 수 있다. 액세서리 특정 하드웨어(275)는 모바일 컴퓨팅 및/또는 통신 디바이스와의 상호운용성이 바람직할 수 있는 임의의 하드웨어 컴포넌트를 포함할 수 있다.
여기서 기술된 시스템 구성들 및 컴포넌트들은 예시적이며, 그 변형들 및 수정들이 가능하다. 모바일 컴퓨팅 디바이스 및/또는 액세서리는 여기서 구체적으로 기술되지 않은 다른 능력들을 가질 수 있다. 액세서리(202) 및 모바일 컴퓨팅 디바이스(200)가 여기서 특정 블록들을 참조하여 기술되지만, 블록들이 기재의 편의를 위해 정의되며, 컴포넌트 부분들의 특정한 물리적 배열을 포함하도록 의도되지 않는다는 점이 이해되어야 한다. 또한, 블록들이 물리적으로 별개의 컴포넌트들에 응답할 필요는 없다.
모바일 컴퓨팅 디바이스(200)의 액세서리 I/O 인터페이스(205) 및 액세서리(202)의 모바일 컴퓨팅 디바이스 I/O 인터페이스(250)는 모바일 컴퓨팅 디바이스(200)로 하여금 액세서리(202)에 접속되고, 후속적으로 액세서리(202)로부터 접속해제되도록 한다. 여기서 사용되는 바와 같이, 모바일 컴퓨팅 디바이스(200) 및 액세서리(202)는 액세서리 I/O 인터페이스(205) 및 모바일 컴퓨팅 디바이스 I/O 인터페이스(250) 사이의 통신 채널이 개방될 때마다 "접속"되고, 통신 채널이 폐쇄될 때마다 "접속해제"된다. 접속은 (예를 들어, 모바일 컴퓨팅 디바이스(200) 및 액세서리(202)의 각각의 짝을 이루는 커넥터들 사이의) 물리적 부착에 의해, 케이블과 같은 간접 부착에 의해, 또는 무선 통신 채널을 설정함으로써 달성될 수 있다. 유사하게, 접속해제는 물리적 탈착, 케이블의 분리, 액세서리(202) 또는 모바일 컴퓨팅 디바이스(200)의 파워 다운, 또는 무선 통신 채널의 폐쇄에 의해 달성될 수 있다. 따라서, 유니버셜 직렬 버스("USB"), Fire Wire (IEEE 1394 표준), 또는 유니버셜 비동기식 수신기/송신기("UART")와 같은 유선 채널들, 또는 블루투스(Bluetooth SIG에 의해 개발되고 상표 Bluetooth® 하에서 라이센싱되는 단거리 무선 통신 표준), WiFi(IEEE 802.11 계열 표준들 중 임의의 것에 따름), 무선 개인 영역 네트워크, 적외선 등과 같은 무선 채널들을 포함한 다양한 통신 채널들이 사용될 수 있다. 일부 실시예들에서, 통신은 유선 및 무선 채널 모두를 사용하여 발생할 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스 및 액세서리 사이의 다수의 통신 채널들은 동시에 개방될 수 있거나, 또는 모바일 컴퓨팅 디바이스는 다수의 액세서리들에 동시에 접속될 수 있으며, 각각의 액세서리는 상이한 통신 채널을 사용한다.
특정 통신 채널과는 무관하게, 모바일 컴퓨팅 디바이스(200) 및 액세서리(202)가 서로 접속되는 한, 디바이스들은 액세서리 통신 프로토콜에 의해 특정된 바와 같이 커맨드들 및 데이터를 상호교환함으로써 통신할 수 있다. 액세서리 통신 프로토콜은 모바일 컴퓨팅 디바이스(200) 및 액세서리(202) 사이에서 메시지들을 송신하기 위한 포맷을 정의할 수 있다. 예를 들어, 액세서리 통신 프로토콜은 각각의 메시지가 헤더, 페이로드 및/또는 테일을 가지는 패킷에서 송신됨을 특정할 수 있다. 헤더는 시작 표시자, 패킷의 길이, 및 수신자에 의해 프로세싱될 커맨드와 같은 기본 정보를 제공할 수 있는 반면, 페이로드는 커맨드와 연관된 임의의 데이터를 제공하고, 연관된 데이터의 양은 상이한 커맨드들에 대해 상이할 수 있고, 일부 커맨드들은 가변 길이 페이로드들을 제공할 수 있다. 패킷은 또한, 예를 들어, 당해 기술분야에 공지된 바와 같은 에러-검출 또는 에러-정정 코드들, 및/또는 원하는 경우 다른 정보를 제공할 수 있는 테일을 포함할 수 있다. 다양한 실시예들에서, 액세서리 통신 프로토콜은 수신자에 의해 취해질 동작을 표시하고, 작업 완료, 상태의 변경, 또는 에러의 발생을 시그널링하고/시그널링하거나 연관된 데이터의 속성을 식별하기 위한 특정 커맨드들을 정의할 수 있다. 일부 실시예들에서, 커맨드들은 임의의 특정 커맨드가 오직 한 방향에서만 유효하도록 정의될 수 있다.
액세서리 통신 프로토콜은 또한 디바이스들 사이에 신호들을 전송하기 위해 사용가능한 하나 이상의 물리적 전송 링크들을 특정할 수 있다. 예를 들어, 전송 링크는 USB 링크, UART 링크, Fire Wire 링크, 블루투스 링크, WiFi 링크, 병렬 링크, 직렬 링크 등일 수 있다. 이 레벨에서, 액세서리 통신 프로토콜은, 예를 들어, 시작 바이트, 싱크 바이트, 중지 바이트, 및/또는 다른 보조 신호들을 특정할 수 있다. 일부 실시예들에서, 액세서리 통신 프로토콜은 다수의 대안적인 전송 링크들을 제공할 수 있고, 따라서, 단일 모바일 컴퓨팅 디바이스는 유선 및/또는 무선 링크들을 포함하는 다양한 물리적 링크들을 통한 통신을 지원할 수 있다.
액세서리 통신 프로토콜은 다수의 "링고(lingo)들"을 정의할 수 있고, 여기서 "링고"는 일반적으로, 액세서리들의 다양한 클래스들에 의해 지원될 수 있는(또는 지원되지 않을 수 있는) 관련된 커맨드들의 그룹을 지칭한다. 일 실시예에서, 커맨드는 커맨드가 속하는 링고를 식별하는 제1 바이트 및 링고 내의 특정 커맨드를 식별하는 제2 바이트에 의해 고유하게 식별될 수 있다. 다른 커맨드 구조들이 또한 사용될 수 있다. 모든 액세서리들, 또는 액세서리가 접속될 수 있는 모든 모바일 컴퓨팅 디바이스들이 액세서리 통신 프로토콜 내에 정의된 모든 링고 또는 특정 링고의 모든 커맨드를 지원하도록 요구되지는 않는다(예를 들어, 상이한 디바이스들은 주어진 링고의 상이한 버전들을 사용할 수 있거나, 또는 이들은 해당 링고의 특징들 중 오직 일부를 사용할 수 있다).
일부 실시예들에서, 서로 상호동작하도록 설계된 모든 액세서리(202) 및 모든 모바일 컴퓨팅 디바이스(200)는 모든 이러한 디바이스들에 대해 공통적인 커맨드들을 포함하는 적어도 "일반적" 링고를 지원한다. 일반적 링고는, 모바일 컴퓨팅 디바이스 및 액세서리로 하여금, 서로에 대해 스스로를 식별하고, (만약 존재하는 경우) 다른 링고들이 각각 지원하고, 다른 디바이스의 능력들 각각이 접속되는 동안 사용하도록 의도하는 것을 포함하는, 이들이 개별 능력들에 관한 적어도 일부 정보를 제공하게 하는 커맨드들을 포함할 수 있다.
일반적 링고는 또한 모바일 컴퓨팅 디바이스가 액세서리의 알려진 신원 및 능력들을 검증하기 위해 사용할 수 있는 인증 커맨드들을 포함할 수 있고(또는 그 역도 성립), 액세서리(또는 모바일 컴퓨팅 디바이스)는 인증이 비성공적인 경우 특정 커맨드들 또는 링고들을 작동시키는 것이 차단될 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스(200) 내의 인증 매니저(미도시)는, 예를 들어, 모바일 컴퓨팅 디바이스(200)의 인증 매니저 내에서 유지되는 디지털 인증서들의 스토어 및 공개 키 암호화에 기초하여 인증 프로시져를 수행하기 위해 액세서리(202) 내의 인증 제어기(또한 미도시)와 통신할 수 있다.
액세서리 통신 프로토콜의 일반적 링고 또는 또다른 링고는 액세서리(202) 및 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226) 사이의 임의의 정보의 교환을 허용하는 "터널" 커맨드들을 포함할 수 있다. 예를 들어, TunnelToAcc 커맨드는 액세서리(202)에 모바일 컴퓨팅 디바이스(200)에 의해 송신가능한 것으로서 정의될 수 있다. 이러한 커맨드의 페이로드는 임의의 데이터, 제어 신호, 또는 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226)이 생성하여 액세서리(202)에 송신할 수 있는 다른 정보일 수 있다. 유사하게, TunnelToHost 커맨드는 모바일 컴퓨팅 디바이스(200)에 액세서리(202)에 의해 송신가능한 것으로서 정의될 수 있다. 이러한 커맨드의 페이로드는 임의의 데이터, 제어 신호들, 또는 액세서리(202)가 생성하여 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션(226)에 송신할 수 있는 다른 정보일 수 있다. 이들 터널 커맨드들은, 액세서리 통신 프로토콜이 페이로드 컨텐츠에 대해 불가지론적(agnostic)이도록 정의될 수 있다. 특정 애플리케이션이 데이터, 제어 신호들 또는 다른 정보를 오직 그것을 프로세싱할 수 있는 액세서리에 송신하도록(그 역도 성립) 통신을 관리하기 위한 기법들의 예들이 하기에 기술된다.
일부 실시예들에서, 액세서리는 애플리케이션 통신 프로토콜을 사용하여 모바일 컴퓨팅 디바이스에서 하나 이상의 애플리케이션들과 연관된 API와 통신할 수 있다. 예를 들어, 이러한 통신은 위에서 논의된 "터널" 커맨드를 사용할 수 있다. 일부 실시예들에서, 액세서리는 액세서리 통신 프로토콜을 사용하여 하나 이상의 애플리케이션들과 연관된 API와 통신할 수 있다. 다른 실시예들에서, 액세서리는 또한 액세서리 통신 프로토콜 및/또는 애플리케이션 통신 프로토콜 중 어느 하나 또는 둘 모두를 사용하여 모바일 컴퓨팅 디바이스 운영 체제와 통신할 수 있다. 따라서, 여기서 개시된 실시예들은 애플리케이션 통신 프로토콜 및/또는 액세서리 통신 프로토콜 중 어느 하나 또는 둘 모두를 사용하여 액세서리 및 애플리케이션, API, 및/또는 모바일 컴퓨팅 디바이스에서의 운영 체제 사이의 통신을 용이하게 하기 위해 사용될 수 있다.
모바일 컴퓨팅 디바이스 및 액세서리에 의해 지원되는 액세서리 통신 프로토콜은, 액세서리로 하여금 모바일 컴퓨팅 디바이스의 기능이 작동됨을 표시하는 커맨드를 송신하게 하는 단순 원격 링고, 액세서리 상에서 모바일 컴퓨팅 디바이스의 사용자 인터페이스의 일부 또는 모두의 복제와 관련된 커맨드들 및 데이터를 전달하기 위해 사용될 수 있는(이에 의해 더 개선된 원격 제어를 지원하는) 원격 사용자 인터페이스 링고, 사용자로 하여금 모바일 컴퓨팅 디바이스를 동작시킴으로써 튜너 액세서리를 제어하게 하는 튜너 링고, 액세서리로 하여금 모바일 컴퓨팅 디바이스 상에 데이터를 저장하게 하는 저장 링고 등과 같은 다양한 다른 링고들을 포함할 수 있다. 임의의 링고 또는 링고들의 결합 또는 다른 커맨드들 또는 커맨드들의 그룹들이 여기서 기술된 실시예들과 관련하여 사용될 수 있다.
여기서 기술된 액세서리 통신 프로토콜이 예시적이며, 변경들 및 수정들이 가능하다는 점이 이해될 것이다. 여기서 기술된 특정 커맨드들은 다른 커맨드들 또는 커맨드들의 결합 또는 다른 타입들의 메시지들 및 포맷들로 교체될 수 있다. 추가로, 여기서 기술되는 모든 커맨드들 및 동작들이 임의의 특정 모바일 통신 디바이스 또는 액세서리에 의해 지원되도록 요구되지는 않는다.
모바일 컴퓨팅 디바이스(200) 및 액세서리(202) 상에서 실행하는 애플리케이션(226)은 임의의 데이터, 제어 신호들 및/또는 다른 정보(또한 여기서 "메시지들"로서 지칭됨)를 교환할 수 있다. 이들 메시지들은 광범위한 환경들에 관련될 수 있다. 예를 들어, 사용자 입력 이벤트들과 관련된 메시지들, 검출된 외부 조건들, 수신된 데이터 또는 모바일 컴퓨팅 디바이스(200)에서 발생할 수 있는 임의의 다른 이벤트들 또는 조건들이 액세서리(202)에 전달될 수 있다. 반면, 사용자 입력 이벤트들과 관련된 메시지, 검출된 외부 조건들, 수신된 데이터 또는 액세서리(202)에서 발생할 수 있는 다른 이벤트들 또는 조건들은 모바일 컴퓨팅 디바이스(200)에 전달될 수 있다.
예를 들어, 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 예를 들어, 터치 스크린 이벤트, 버튼 누름, 스크롤 휠 이벤트 등과 같은 사용자 인터페이스(255)를 통한 사용자로부터의 입력 이벤트들을 프로세싱할 수 있다. 모바일 컴퓨팅 디바이스(200)는 모바일 컴퓨팅 디바이스(200) 상에서 실행하는 애플리케이션에, 액세서리(202)에, 또는 둘 모두에 대한 입력 이벤트들을 나타내는 데이터를 제공할 수 있다. 액세서리(202)는 예를 들어, 액세서리 특정 하드웨어(275)를 제어하기 위한 그리고/또는 제어기(260)에서 프로세싱하기 위한 입력으로서 이러한 데이터를 해석할 수 있다. 예를 들어, 터치 스크린 데이터는 애플리케이션, 액세서리(202) 또는 둘 모두에 의한 사용을 위해 모바일 컴퓨팅 디바이스(200)에 의해 수집될 수 있고, 일부 실시예들에서, 터치 스크린 데이터는 스와이프(swipe), 핀치, 드래그 또는 다른 제스쳐들과 같은 움직임들 및/또는 탭들을 나타내는 데이터를 포함할 수 있다. 일부 실시예들에서, 터치 스크린 데이터는 로(raw) 데이터 포맷(예를 드어, 손가락 움직임에 대응하는 압력이 검출되는 곳을 나타내는 좌표들의 시퀀스)으로 송신될 수 있다. 다른 실시예들에서, 터치 스크린 데이터는 액세서리에 송신되기 전에 제스쳐 이벤트(예를 들어, 탭, 한 포인트에서 또다른 포인트로의 스와이프 또는 드래그, 핀치 등)와 같은 프로세싱된 데이터로 변환될 수 있다. 일부 실시예들에서, 로 키보드 데이터가 액세서리에 송신될 수 있고 그리고/또는 프로세싱된 키보드 데이터가 액세서리에 송신될 수 있다. 일부 실시예들에서, 일부 또는 모든 타입의 사용자 입력 데이터가 예를 들어, 하기에 기술된 바와 같이, 애플리케이션 및 애플리케이션 프로토콜을 사용하여 액세서리(202)에 전달될 수 있고, 다른 실시예들에서, 일부 또는 모든 타입의 사용자 입력 데이터가, 액세서리 통신 프로토콜이 특정 타입의 사용자 입력 데이터의 송신을 지원하는 어떤 범위에든 액세서리 통신 프로토콜을 사용하여 전달될 수 있다.
모바일 컴퓨팅 디바이스(200)는 또한 액세서리(202)에 사용자 입력이 아닌 정보를 송신할 수 있다. 예를 들어, 일부 실시예들에서, 모바일 컴퓨팅 디바이스(200)는 사용자 입력 디바이스들에 추가하여 다양한 센서들 및/또는 데이터 수집 디바이스들을 포함할 수 있는데, 그 예들은 가속계, 자이로스코프, 컴퍼스, 위치결정 디바이스(예를 들어, 글로벌 위치측정 시스템 수신기 또는 전화 삼각측량 시스템), 광 센서, 적외선 센서, 카메라, 네트워크 인터페이스(예를 들어, 전화, WiFi, 블루투스) 등을 포함할 수 있다. 모바일 컴퓨팅 디바이스(200)는 예를 들어, 액세서리(202)로부터의 특정 요청에 응답하여, 액세서리(202)에 이러한 데이터 중 임의의 것 또는 모두를 제공할 수 있다. 일부 실시예들에서, 이러한 데이터의 일부 또는 전부는 예를 들어, 하기에 기술되는 바와 같이, 애플리케이션 및 애플리케이션 프로토콜을 사용하여 액세서리(202)에 전달될 수 있고, 다른 실시예들에서, 이러한 데이터의 일부 또는 전부는 액세서리 통신 프로토콜이 특정 타입의 정보의 송신을 지원하는 어떤 범위로든, 액세서리 통신 프로토콜을 사용하여 전달될 수 있다.
메시지들의 교환을 용이하게 하기 위해, 액세서리 및 애플리케이션은 상호 동의한 애플리케이션 프로토콜을 사용할 수 있다. 애플리케이션 프로토콜은 교환될 수 있는 메시지들에 대한 수용되는 포맷들의 범위(universe)를 특정할 수 있다. 특정 애플리케이션 프로토콜에 따르는 디바이스들 또는 프로그램들은 이들이 수용되는 포맷들의 애플리케이션 프로토콜 범위에 따라 송신하는 메시지들을 구성할 수 있고, 이들이 수용되는 포맷들의 애플리케이션 프로토콜 범위에 따라 수신하는 메시지들을 해석할 수 있다. 예를 들어, 이진 디지털 통신의 경우, 애플리케이션 프로토콜은 메시지들을 포함하는 비트들이 수신자에 의해 해석될 방법을 특정할 수 있다. 실제로, 일부 실시예들에서, 액세서리 통신 프로토콜의 일부분들은 특정 액세서리 및/또는 애플리케이션에 대한 애플리케이션 프로토콜의 일부 또는 전부로서 직접 채택될 수 있다.
애플리케이션 통신 프로토콜은, 예를 들어, 애플리케이션 및/또는 액세서리의 개발자에 의해 개발될 수 있다. 일부 실시예들에서, 애플리케이션 통신 프로토콜은 애플리케이션 및/또는 액세서리 특정 커맨드들, 데이터 구조들 등을 포함할 수 있다. 또한, 용어 "애플리케이션 통신 프로토콜" 및 "애플리케이션 프로토콜"은 상호교환가능하게 사용될 수 있다. 용어 "액세서리 통신 프로토콜", "액세서리 프로토콜", "범용 통신 프로토콜" 및 "범용 프로토콜"이 또한 상호교환가능하게 사용될 수 있다.
여기서 기술된 특정 실시예들에서, 애플리케이션 프로토콜 메시지들은, 예를 들어, 전술된 바와 같은 터널링 커맨드들을 사용하여, 액세서리 통신 프로토콜에 따른 패킷들 내에서 메시지들을 캡슐화, 랩핑, 또는 패키지화함으로써 디바이스들 사이에 송신될 수 있다. 따라서, 액세서리 통신 프로토콜에 의해 특정된 전송 링크가 사용될 수 있고, 애플리케이션 프로토콜이 물리적 전송 링크를 특정하는 것이 필요하지 않다.
프로세스들의 개시
본 발명의 일부 실시예들에서, 액세서리는 모바일 컴퓨팅 디바이스가 특정 애플리케이션을 개시하는 것을 요청할 수 있다. 이러한 요청을 수행하기 위한 다양한 기법들이 여기서 기술된다. 도 3은 액세서리가 일부 실시예들에 따라 애플리케이션의 개시를 요청하는 경우 (도면들에서 MCD로서 표시되는) 모바일 컴퓨팅 디바이스에 의해 실행될 수 있는 프로세스(300)의 흐름도를 도시한다.
프로세스(300)는 블록(310)에서 시작한다. 블록(315)에서, 모바일 컴퓨팅 디바이스는 액세서리가 모바일 컴퓨팅 디바이스와 상호동작하기를 원하는 특정 애플리케이션을 표시하는 개시 커맨드를 수신할 수 있다. 일부 실시예들에서, 개시 커맨드는 전술된 일반적 링고의 일부분 또는 특정 링고의 일부분일 수 있다. 개시 커맨드는 특정 애플리케이션을 특정할 수 있는데, 예를 들어, 특정 애플리케이션의 명칭, 특정 애플리케이션을 표시하는 비트 마스크, 특정 애플리케이션에 대응하는 코드, 특정 애플리케이션과 연관된 역 도메인 명칭, 또는 특정 애플리케이션을 식별할 수 있는 임의의 다른 정보를 포함할 수 있는 Launch 커맨드가 사용될 수 있다. 커맨드는 유선 또는 무선 채널을 통해 액세서리로부터 모바일 컴퓨팅 디바이스로 송신될 수 있다.
블록(320)에서, 프로세스(300)는 모바일 컴퓨팅 디바이스가 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정할 수 있다. 블록(320)에서, 모바일 컴퓨팅 디바이스의 다양한 상태들은 특정 애플리케이션이 실행을 제한할 수 있다. 후속하는 예들은 예시적이다. 제1 예로서, 애플리케이션이 모바일 컴퓨팅 디바이스에서 현재 실행중인 경우, 모바일 컴퓨팅 디바이스는 애플리케이션의 개시를 허용하는 상태에 있지 않을 수 있다. 일부 상황들에서, 모바일 컴퓨팅 디바이스의 운영 체제는, 전경에서 또다른 애플리케이션이 실행 중인 동안, 배경 애플리케이션들이 실행하는 것을 허용할 수 있다. 일부 실시예들에서, 사용자는 애플리케이션을 개시하도록 허용할지의 여부를 선택하기 위해 사용자 인터페이스를 통해 질의받을 수 있다. 이러한 상황들에서, 모바일 컴퓨팅 디바이스는 사용자가 그것을 허용하도록 선택하는 경우 특정 애플리케이션의 개시를 허용할 수 있다. 또다른 예로서, 또다른 액세서리가 또다른 애플리케이션의 개시를 요청하고 해당 애플리케이션이 실행 중인 경우, 모바일 컴퓨팅 디바이스는 요청된 애플리케이션의 개시를 허용하지 않을 수 있다. 또다른 특정 예로서, 블록(320)에서, 사용자는 특정 애플리케이션이 개시되도록 허용할지의 여부를 질의받을 수 있다. 이러한 질의는 예를 들어, 도 2의 사용자 인터페이스(235)를 통해 발생할 수 있다. 모바일 컴퓨팅 디바이스는 제한 없이 다양한 다른 이유들로 애플리케이션의 개시를 제한하거나 거절할 수 있다.
모바일 컴퓨팅 디바이스가 애플리케이션의 실행을 허용하는 상태에 있지 않은 경우, 프로세스(300)는 블록(325)으로 진행한다. 그렇지 않은 경우, 프로세스(300)는 블록(330)으로 진행한다.
블록(330)에서, 프로세스(300)는 특정 애플리케이션이 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능한지의 여부를 결정할 수 있다. 예를 들어, 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능한 모든 애플리케이션들의 리스팅을 포함하는 룩업 테이블이 메모리(예를 들어, 저장 디바이스(225)) 내에 유지될 수 있다. 이러한 룩업 테이블은, 예를 들어, 애플리케이션 명칭, 식별자, id 번호, 애플리케이션 프로토콜 식별자, 또는 역 도메인 명칭 컨벤션에 의해 애플리케이션들을 리스팅할 수 있다. 프로세스(300)는, 예를 들어, 애플리케이션 식별 정보(예를 들어, 특정 애플리케이션 명칭)를 룩업 테이블 내의 애플리케이션 정보와 비교할 수 있다. 매치가 존재하는 경우, 애플리케이션은 이용가능하고, 프로세스(300)는 블록(335)으로 진행할 수 있다. 그렇지 않은 경우, 프로세스(300)는 블록(325)으로 진행한다. 일부 실시예들에서, 모든 블록들과 마찬가지로, 블록(320 및 330)은 단일 블록에서 상호교환되고 결합되고/결합되거나 다수의 블록들로 확장될 수 있다.
모바일 컴퓨팅 디바이스가 요청된 애플리케이션을 개시하도록 준비되지 않거나, 또는 이후 블록(325)에서 요청된 애플리케이션이 이용가능하지 않는 경우, 모바일 컴퓨팅 디바이스는 액세서리에 개시 거절 메시지를 송신할 수 있다. 이러한 메시지는 개시 커맨드에 응답하여 송신된 LaunchDenied 커맨드 또는 부정 확인응답(NACK) 메시지일 수 있다. NACK 메시지는 동의된 부정 확인응답 메시지일 수 있고/있거나 범용 링고의 일부분일 수 있다. LaunchDenied 커맨드는, 예를 들어, 페이로드 또는 데이터를 가지는 또는 페이로드 또는 데이터가 없는 커맨드일 수 있다. 어느 방식으로든, 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시될 수 없는 액세서리에 전달될 수 있다. 일부 실시예들에서, 메시지는 애플리케이션이 개시되지 않은 이유를 특정할 수 있다. 블록(325)에 후속하여, 프로세스(300)는 블록(355)에서 종료한다.
모바일 컴퓨팅 디바이스가 요청된 애플리케이션을 개시할 준비가 되고, 애플리케이션이 모바일 컴퓨팅 디바이스에서 이용가능한 경우, 블록(355)에서 컴퓨팅 디바이스는 -- 예를 들어, 액세서리에 확인응답(ACK) 메시지 또는 LaunchPermitted 메시지를 송신함으로써 -- 개시 커맨드에 긍정적으로 확인응답할 수 있다. 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시될 수 있는 액세서리에 전달할 수 있다.
일부 실시예들에서, 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시될 수 있는 동안 전달될 수 있지만, 그것이 반드시 요청에 응답하여 개시하지는 않을 수 있다는 점을 전달할 수 있다. 이러한 실시예들에서, 애플리케이션은 블록(340)에서 모바일 컴퓨팅 디바이스의 식별에서 단독으로 개시할 수 있다. 모바일 컴퓨팅 디바이스는 이후 블록(345)에서 애플리케이션 및 액세서리 사이에 세션을 설정하는 커맨드를 액세서리에 송신할 수 있다. 통신 세션은 모바일 컴퓨팅 디바이스에 의해 생성될 수 있고, 다양한 기능들 및/또는 설정들을 제공할 수 있다. 이들 기능들 및/또는 설정들은 통신 세션을 설정하기 위해 액세서리 및 모바일 컴퓨팅 디바이스 중 어느 하나 또는 둘 모두에 의해 사용될 수 있다. 커맨드는 통신 세션 ID 및/또는 통신 프로토콜 정보를 포함할 수 있다. 예를 들어, 커맨드는 사용될 애플리케이션 프로토콜을 식별하고/식별하거나 메시지들이 전술된 액세서리 프로토콜의 터널링 커맨드들을 사용하여 교환될 수 있음을 표시할 수 있다.
블록(350)에서, 액세서리는 통신 세션을 사용하여 애플리케이션과 상호작용할 수 있다. 예를 들어, 메시지, 데이터, 커맨드 등은 애플리케이션 및 액세서리 사이에서 송신될 수 있다. 일부 실시예들에서, 액세서리로부터의 데이터는 사용자 인터페이스를 통해 사용자에게 제시하기 위해 애플리케이션에 송신될 수 있다. 일부 실시예들에서, 사용자 입력, 구성, 및/또는 제어 정보는 애플리케이션으로부터 액세서리로 송신될 수 있다. 다양한 다른 데이터, 메시지들, 및/또는 커맨드들이 또한 송신될 수 있다. 블록(355)에서, 프로세스(300)가 종료할 수 있다. 예를 들어, 프로세스(300)는 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통신 종료 표시가 애플리케이션 인터페이스를 통해 사용자에 의해 표시되는 경우 그리고/또는 애플리케이션이 폐쇄되는 경우 종료할 수 있다.
도 3은 모바일 컴퓨팅 디바이스 관점으로부터의 개시 프로세스를 기술한다. 도 4는 액세서리 관점으로부터의 개시 프로세스를 도시한다. 즉, 도면은 본 발명의 일부 실시예들에 따라 액세서리(예를 들어, 액세서리(202))가 모바일 컴퓨팅 디바이스(예를 들어, 모바일 컴퓨팅 디바이스(200))에서의 애플리케이션의 개시를 요청하기 위한 프로세스(400)를 도시한다. 프로세스(400)는 블록(410)에서 시작한다. 블록(415)에서, 액세서리는 모바일 컴퓨팅 디바이스에 개시 커맨드를 송신한다. 이러한 커맨드는 도 3에 대해 전술된 Launch 커맨드일 수 있다. 이러한 실시예에서, 개시 커맨드는 특정 애플리케이션을 특정할 수 있다. 액세서리는 이후 모바일 컴퓨팅 디바이스로부터의 응답을 대기할 수 있다. 일부 실시예들에서, 액세서리는 응답이 수신되지 않은 경우 종료 및 타임 아웃 이전에 미리 결정된 시간 기간동안 대기할 수 있다.
일부 실시예들에서, 액세서리가 모바일 컴퓨팅 디바이스와 접속된 직후에 액세서리는 모바일 컴퓨팅 디바이스에 Launch 커맨드를 송신할 수 있다. 일부 실시예들에서, 액세서리는 식별, 핸드쉐이킹, 인증, 능력 식별, 및/또는 초기화 프로세스들이 발생한 이후 Launch 커맨드를 송신할 수 있다. 다른 실시예들에서, Launch 커맨드는 능력 식별 프로세스의 일부로서 송신될 수 있다. 일부 실시예들에서, Launch 커맨드는 액세서리에서 사용자와의 상호작용에 응답하여 액세서리로부터 모바일 컴퓨팅 디바이스로 송신될 수 있다. 또한, 일부 액세서리들은 사용자와의 하나의 상호작용에 응답하여 하나의 애플리케이션의 개시, 및 사용자와의 상이한 상호작용에 대한 응답으로 제2 애플리케이션의 개시를 요청할 수 있다. 따라서, 액세서리는 사용자와의 액세서리 상호작용들, 환경적 상호작용들, 네트워크 상호작용들, 환경 조건들 등과 같은 상이한 조건들에 대한 상이한 애플리케이션들의 개시를 요청할 수 있다.
블록(420)에서, 응답이 수신된다. 이러한 응답은 긍정 확인응답(예를 들어, ACK) 또는 부정 확인응답(예를 들어, NACK)일 수 있다. 부정 확인응답이 수신되는 경우, 프로세스(400)는 블록(440)에서 종료한다. 긍정 확인응답이 수신되는 경우, 프로세스(400)는 블록(425)으로 진행한다. 긍정 확인응답이 수신되었지만, 이러한 확인응답은 애플리케이션이 개시되었음을 반드시 표시하지 않을 수도 있다. 또한, 일부 실시예들에서, 액세서리는 긍정 확인응답의 수신 이후 모바일 컴퓨팅 디바이스와의 통신을 반드시 시작하지는 않는다.
블록(425)에서, 액세서리는 액세서리 및 모바일 컴퓨팅 디바이스에서 실행하는 특정 애플리케이션 사이에 통신 세션을 설정하기 위한 커맨드를 자신이 수신했는지의 여부를 결정할 수 있다. 이러한 커맨드는, 부분적으로, 특정 애플리케이션이 액세서리와 통신할 준비가 됨을 표시할 수 있다. 통신 세션은 액세서리가 모바일 컴퓨팅 디바이스와 통신하기 위해 요구되는 필수 정보 및/또는 다양한 통신 기능들을 제공할 수 있다. 커맨드는 다른 정보 중 특히 통신 프로토콜 정보 및/또는 통신 세션 ID를 포함할 수 있다. 개방 통신 커맨드의 수신 시에, 액세서리는 모바일 컴퓨팅 디바이스와의 통신 세션을 개방할 수 있다.
개방 통신 세션 커맨드가 액세서리에 의해 수신되지 않은 경우, 프로세스(400)는 블록(430)으로 이동할 수 있다. 액세서리가 긍정 확인응답을 수신한 이래로 미리 결정된 시간 기간이 경과된 이후, 프로세스(400)는 타임 아웃되고 블록(440)에서 종료할 수 있다. 그렇지 않은 경우, 프로세스(400)는 블록(425)으로 되돌아가고, 응답이 수신될 때까지 또는 미리 결정된 시간 기간이 경과할 때까지 블록들(430 및 425)이 반복된다.
개방 통신 세션 커맨드가 블록(425)에서 수신된 경우, 프로세스(400)는 블록(435)로 진행한다. 통신 세션은 모바일 컴퓨팅 디바이스로부터 수신되는 파라미터들에 따라 설정될 수 있고, 2개의 디바이스들은 블록(435)에서 상호작용할 수 있다. 블록(440)에서, 프로세스(400)가 종료할 수 있다. 프로세스(400)는, 예를 들어, 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통신 종료 표시가 사용자 인터페이스를 통해 사용자에 의해 표시되는 경우, 그리고/또는 애플리케이션이 폐쇄되는 경우 종료할 수 있다.
도 3 및 도 4에 기술된 프로세스들은 모바일 컴퓨팅 디바이스 및 액세서리의 관점으로부터 특정 애플리케이션의 개시를 기술한다. 도 5 및 도 6은 액세서리가 애플리케이션 타입(또는 종류)의 개시를 요청하는 유사한 프로세스들을 기술한다. 예를 들어, 애플리케이션은 애플리케이션의 자유 버전, 시험 버전, 프로 버전 및/또는 풀 버전을 가질 수 있다. 이들 특정 애플리케이션들 중 하나를 요청한다기 보다는, 액세서리는 모바일 컴퓨팅 디바이스가 이들 애플리케이션들 중 하나를 개시하는 것을 허용하는 애플리케이션 타입, 예를 들어, 이용가능한 가장 높은 우선순위 버전을 특정할 수 있다. 또다른 예로서, 액세서리는 애플리케이션의 생성자, 애플리케이션 상태, 또는 애플리케이션 레벨에 대해 불완전할 수 있다. 예를 들어, 액세서리는 지도, 캘린더, 오디오 출력, 비디오 출력 등과 같은 특정 특성들을 가지는 애플리케이션을 요청할 수 있다. 대신, 액세서리는 다수의 상이한 애플리케이션들 중 임의의 것과 상호작용할 수 있다. 먼저 도 5를 참조하면, 이 도면은 본 발명의 일부 실시예들에 따라 액세서리로부터의 요청에 응답하여 모바일 컴퓨팅 디바이스 상의 애플리케이션을 개시하기 위해 사용될 수 있는 프로세스(500)의 흐름도를 도시한다.
프로세스(500)는 블록(510)에서 시작한다. 블록(515)에서, 모바일 컴퓨팅 디바이스는 애플리케이션 타입에 대한 개시 커맨드를 수신할 수 있다. 개시 커맨드는 특정 링고의 일부분 또는 전술된 일반적 링고의 일부분일 수 있다. 애플리케이션 타입은 모바일 통신 디바이스에 의해 개시될 수 있고 액세서리와 상호작용할 수 있는 애플리케이션들의 그룹을 포함할 수 있다. 예를 들어, Launch 커맨드는 애플리케이션 타입의 명칭, 애플리케이션들의 종류, 룩업 테이블에서 애플리케이션 타입들을 검색하기 위해 사용될 수 있는 액세서리의 명칭, 액세서리에 의해 사용가능한 가용 프로토콜들과 대응하는 통신 프로토콜, 애플리케이션 또는 액세서리의 타입을 표시하는 비트 마스크, 애플리케이션 타입에 대응하는 코드, 또는 애플리케이션 타입을 식별할 수 있는 임의의 다른 정보를 포함할 수 있다. 여기서 기술된 실시예들 중 임의의 실시예에서, 역 도메인 명칭 컨벤션이 특정 애플리케이션 또는 애플리케이션 타입을 표시하기 위해 사용될 수 있다. 이러한 네이밍 컨벤션의 예가 하기에 기술된다.
블록(520)에서, 프로세스(500)는 모바일 컴퓨팅 디바이스가 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정할 수 있다. 모바일 컴퓨팅 디바이스가 애플리케이션의 실행을 허용하는 상태에 있지 않은 경우, 프로세스(500)는 블록(525)으로 진행한다. 그렇지 않은 경우, 프로세스(500)는 블록(530)으로 진행한다. 블록(520)은 블록(320)과 유사할 수 있다.
블록(530)에서, 프로세스(500)는 애플리케이션 타입과 연관된 애플리케이션들이 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능한지의 여부를 결정할 수 있다. 애플리케이션 타입과 연관된 애플리케이션이 이용가능한 경우, 프로세스(500)는 블록(535)으로 진행할 수 있다. 이용가능하지 않은 경우, 프로세스(500)는 블록(525)으로 진행한다. 예를 들어, 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능한 모든 애플리케이션들의 리스팅 및 각각의 애플리케이션의 애플리케이션 타입(들)을 포함하는 룩업 테이블이 메모리(예를 들어, 저장 디바이스(225))에서 유지될 수 있다. 이러한 룩업 테이블은, 예를 들어, 애플리케이션 명칭, 식별자, id 번호, 애플리케이션 타입, 또는 역 도메인 명칭 컨벤션 또는 애플리케이션 프로토콜 명칭에 의해 애플리케이션들을 리스팅할 수 있다. 프로세스(500)는, 예를 들어, 개시 커맨드에서 수신된 애플리케이션 타입 정보를 룩업 테이블에 리스팅되는 애플리케이션 타입(들)과 비교할 수 있다. 매치가 존재하는 경우, 애플리케이션은 이용가능하고, 프로세스(500)는 블록(535)으로 진행할 수 있다. 이용가능하지 않은 경우, 프로세스(500)는 블록(525)으로 진행한다. 일부 실시예들에서, 블록(520 및 530)은 상호교환되고, 단일 블록 내에 결합되고/결합되거나 다수의 블록들로 확장될 수 있다. 일부 실시예들에서, 개시 커맨드에 포함된 애플리케이션 타입과 대응하는 다수의 애플리케이션들이 발견될 수 있다. 일부 실시예들에서, 이들 애플리케이션들은 (예를 들어, 룩업 테이블 내에서) 우선순위화될 수 있고, 가장 높은 우선순위의 애플리케이션은 개시하기 위한 것으로 간주될 수 있다. 일부 실시예들에서, 동일한 애플리케이션 타입을 가지는 다수의 애플리케이션들이 발견되는 경우, 사용자는 애플리케이션들 중 하나를 선택하도록 조장(prompt)될 수 있다.
블록(525)에서, 모바일 컴퓨팅 디바이스는 액세서리에 개시 거절 메시지를 송신할 수 있다. 이러한 메시지는 개시 커맨드에 응답하는 LaunchDenied 커맨드 또는 부정 확인응답(NACK) 메시지일 수 있다. NACK 메시지는 동의된 부정 확인응답 메시지 또는 일반적 링고의 일부분일 수 있다. LaunchDenied 커맨드는, 예를 들어, 페이로드 또는 데이터를 가지는, 또는 페이로드 또는 데이터가 없는 커맨드일 수 있다. 어느 방식으로든, 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시될 수 없는 액세서리에 전달될 수 있다. 일부 실시예들에서, 메시지는 애플리케이션이 개시되지 않은 이유를 특정할 수 있다. 블록(525)에 후속하여, 프로세스(500)는 블록(555)에서 종료한다.
블록(535)에서, 모바일 컴퓨팅 디바이스는, 예를 들어, 액세서리에 확인응답(ACK) 메시지 또는 LaunchPermitted 메시지를 송신함으로써, 개시 커맨드에 긍정적으로 확인응답할 수 있다. 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시될 수 있는 액세서리에 전달될 수 있다.
일부 실시예들에서, 메시지는 애플리케이션이 모바일 컴퓨팅 디바이스에 의해 개시되는 동안 전달될 수 있지만 그것이 반드시 요청에 응답하여 개시하지는 않을 수 있다는 점을 전달할 수 있다. 이러한 실시예들에서, 애플리케이션은 블록(540)에서 모바일 컴퓨팅 디바이스의 식별시 단독으로 개시할 수 있다. 모바일 컴퓨팅 디바이스는 이후 블록(545)에서 액세서리 및 애플리케이션 사이에 통신 세션을 설정하는 커맨드를 액세서리에 송신할 수 있다. 통신 세션은 모바일 컴퓨팅 디바이스에 의해 생성될 수 있고, 액세서리와 통신하기 위해 모바일 컴퓨팅 디바이스에 대한 다양한 통신 기능들을 제공한다. 커맨드는 통신 세션 ID, 통신 프로토콜 정보, 및/또는 (예를 들어, 하기에 기술된 바와 같은 역 도메인 명칭 컨벤션을 사용하여) 개시 커맨드에 응답하여 개시한 특정 애플리케이션의 식별을 포함할 수 있다.
블록(550)에서, 액세서리는 통신 세션을 사용하여 애플리케이션과 상호동작할 수 있다. 블록(555)에서, 프로세스(500)가 종료할 수 있다. 예를 들어, 프로세스(500)는 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통신 종료 표시가 애플리케이션 인터페이스를 통해 사용자에 의해 표시되는 경우, 그리고/또는 애플리케이션이 폐쇄되는 경우 종료될 수 있다.
도 5가 모바일 컴퓨팅 디바이스 관점으로부터의 개시 프로세스를 기술하는 반면, 도 6은 액세서리의 관점으로부터의 개시 프로세스를 도시한다. 즉, 도면은 본 발명의 일부 실시예들에 따라 액세서리(예를 들어, 액세서리(202))가 모바일 컴퓨팅 디바이스(예를 들어, 모바일 컴퓨팅 디바이스(200))에서의 애플리케이션 타입의 개시를 요청하는 프로세스(600)를 도시한다. 프로세스(600)는 도 4에 도시된 프로세스(400)와 유사하고, 블록(610)에서 시작한다. 블록(615)에서, 액세서리는 모바일 컴퓨팅 디바이스에 개시 커맨드를 송신한다. 이러한 커맨드는 도 3, 도 4 또는 도 5에 대해 전술된 Launch 커맨드일 수 있다. 이 실시예에서, 개시 커맨드는 애플리케이션 타입을 특정할 수 있다. 액세서리는 이후 모바일 컴퓨팅 디바이스로부터의 응답을 대기할 수 있다. 일부 실시예들에서, 액세서리는 응답이 수신되지 않는 경우 타임 아웃 및 종료 이전에 미리 결정된 시간 기간 동안 대기할 수 있다.
블록(620)에서, 응답이 수신될 수 있다. 이러한 응답은 긍정 확인응답(예를 들어, ACK) 또는 부정 확인응답(예를 들어, NACK)일 수 있다. 부정 확인응답이 수신된 경우, 프로세스(600)는 블록(640)에서 종료한다. 긍정 확인응답이 수신된 경우, 프로세스(600)는 블록(625)으로 진행한다. 긍정 확인응답이 수신되더라도, 이러한 확인응답은 애플리케이션이 개시되었음을 반드시 표시하지 않을 수도 있다.
블록(625)에서, 액세서리는 자신이 액세서리 및 모바일 컴퓨팅 디바이스에서 실행하는 애플리케이션 사이에 통신 세션을 설정하는 커맨드를 수신했는지의 여부를 결정할 수 있다. 이러한 커맨드는 모바일 컴퓨팅 디바이스에서 개시된 애플리케이션 타입과 연관된 애플리케이션이 액세서리와 통신할 준비가 되었음을 표시할 수 있다. 통신 세션은 액세서리가 모바일 컴퓨팅 디바이스와 통신하기 위해 필요한 다양한 통신 기능들 및/또는 정보를 제공할 수 있다. 커맨드는 다른 정보들 중 특히 통신 세션 ID 및/또는 통신 프로토콜 정보를 포함할 수 있다.
개방 통신 세션 커맨드가 액세서리에 의해 수신되지 않은 경우, 프로세스(600)는 블록(630)으로 이동할 수 있다. 액세서리가 긍정 확인응답을 수신한 이래로 미리 결정된 시간 기간이 경과한 경우, 프로세스(600)는 블록(640)에서 타임 아웃 및 종료할 수 있다. 그렇지 않은 경우, 프로세스(600)는 블록(625)으로 되돌아갈 수 있다.
개방 통신 세션 커맨드가 블록(625)에서 수신된 경우, 프로세스(600)는 블록(635)으로 진행한다. 통신 세션은 모바일 컴퓨팅 디바이스로부터 수신된 파라미터들에 따라 설정될 수 있고, 2개의 디바이스들은 블록(635)에서 상호동작할 수 있다. 블록(640)에서, 프로세스(600)는 종료할 수 있다. 예를 들어, 프로세스는 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통신 종료 표시가 애플리케이션 인터페이스를 통해 사용자에 의해 표시되는 경우, 그리고/또는 애플리케이션이 폐쇄되는 경우 종료할 수 있다.
도 7은 액세서리가 애플리케이션의 개시를 요청하는 경우, 모바일 컴퓨팅 디바이스에서 수행될 수 있는 프로세스(700)를 도시한다. 프로세스(700)는 일부 양상들에서, 도 3에 도시된 프로세스(300) 및 도 5에 도시된 프로세스(500)와 유사하다. 프로세스(700)는 블록(705)에서 시작하고, 애플리케이션 통지 요청이 블록(710)에서 송신될 수 있다. 이러한 요청은 새로운 애플리케이션이 개시되거나 종료되는 경우 액세서리가 모바일 컴퓨팅 디바이스로부터의 통지를 수신하기를 원함을 표시할 수 있다. 이러한 요청은 일반적 링고의 일부분인, 또는 특정 링고의 일부분인 커맨드일 수 있다. 커맨드에 응답하여, 모바일 컴퓨팅 디바이스는 그것이 요청에 따를 것인지 또는 요청에 따르지 않을 것인지를 표시하는 긍정 또는 부정 확인응답을 액세서리에 송신할 수 있다. 일부 실시예들에서, 애플리케이션 통지 요청은 어느 애플리케이션이 현재 실행중인지를 표시하기 위해 사용될 수 있다. 일부 실시예들에서, 모바일 컴퓨팅 디바이스는 애플리케이션이 새롭게 개시되는 시간, 애플리케이션이 전경 프로세싱으로부터 배경 프로세싱으로 이동된 시간, 그리고/또는 애플리케이션이 배경 프로세싱으로부터 전경 프로세싱으로 이동된 시간을 액세서리에 통지할 수 있다.
블록(710)에 후속하여, 프로세스(700)는 블록(745)까지 프로세스(300) 또는 프로세스(500)와 유사한 경로를 따를 수 있다. 즉, 블록(715)은 블록들(315 또는 515)과 유사할 수 있다. 블록(720)은 블록들(320 또는 520)에 대응할 수 있다. 블록(725)은 블록들(325 또는 525)과 유사할 수 있다. 블록(730)은 블록들(330 또는 530)에 대응할 수 있다. 블록(735)은 블록들(335 또는 535)과 유사할 수 있다. 블록(740)은 블록들(340 또는 540)에 대응할 수 있다. 블록(745)에서, 모바일 컴퓨팅 디바이스는 액세서리에 애플리케이션 통지를 송신할 수 있다. 이러한 애플리케이션 통지는 모바일 컴퓨팅 디바이스에서 특정 애플리케이션이 개시되는 것에 응답하여 송신될 수 있고, 개시된 애플리케이션을 특정할 수 있다. 애플리케이션은 애플리케이션 명칭 또는 애플리케이션 식별자를 사용하여(예를 들어, 역 도메인 명칭 컨벤션을 사용하여) 특정될 수 있다. 그 응답으로, 모바일 컴퓨팅 디바이스는 액세서리로부터 통신 세션 요청을 수신할 수 있다. 이러한 요청은 액세서리가 애플리케이션을 이용하여 통신 세션을 개방하기를 원함을 모바일 컴퓨팅 디바이스에 표시할 수 있다. 이에 응답하여, 모바일 컴퓨팅 디바이스는 애플리케이션 및 액세서리에 대한 통신 세션을 개방할 수 있다. 다른 실시예들에서, 블록(745)은 블록(345) 또는 블록(545)과 유사할 수 있고, 여기서, 통신 세션은 애플리케이션 및 액세서리 사이에 개방될 수 있다.
블록(750)에서, 애플리케이션 및 액세서리는 통신 세션을 사용하여 상호동작할 수 있다. 블록(555)에서, 프로세스(500)가 종료할 수 있다. 예를 들어, 프로세스(500)는 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통신 종료 표시가 애플리케이션 인터페이스를 통해 사용자에 의해 표시되는 경우 그리고/또는 애플리케이션이 폐쇄되는 경우 종료할 수 있다.
블록(710)에서 수신된 통지 요청이 "애플리케이션 개시" 통지 요청으로서 전술되었지만, 특정 실시예들에서, 이러한 통지 요청은 애플리케이션 개시 상황(context)이 아닌 다른 상황들에서 사용되는 요청의 타입일 수 있다. 예를 들어, 통지 요청은 애플리케이션이 음악 재생을 시작하는 경우, 또는 애플리케이션이 일부 다른 상태 변경 또는 이벤트를 겪는 경우 통지될 액세서리에 의한 요청일 수 있다. "음악 재생" 예에서, 애플리케이션은 개시 이후 음악 재생을 시작하고, 그것이 현재 음악을 재생 중임을 표시하는 통지를 액세서리에 송신할 수 있다. 통지를 수신하면, 액세서리는 애플리케이션이 개시되었음을 결정하고, 애플리케이션과 상호작용하기 위한 적절한 동작을 취할 수 있다(예를 들어, 통신 세션 요청을 송신하는 등).
도 8은 액세서리가 애플리케이션의 개시를 요청하는 경우 액세서리에 의해 수행될 수 있는 프로세스(800)를 도시한다. 프로세스(800)는 일부 측면들에서 도 4에 도시된 프로세스(400) 및 도 6에 도시된 프로세스(600)와 유사하다. 프로세스(800)는 블록(810)에서 시작한다. 블록(815)에서, 액세서리는 블록(815)에서 애플리케이션 통지 요청을 송신할 수 있다. 이러한 애플리케이션 통지 요청은 도 7의 블록(710)에서 모바일 컴퓨팅 디바이스에 의해 수신되는 애플리케이션 통지 요청일 수 있다. 블록(820)은 블록들(420 또는 620)에 대응할 수 있고, 블록(825)은 블록들(425 또는 625)에 대응할 수 있다. 블록(830)에서, 액세서리는 애플리케이션이 개시되었음을 표시하는 애플리케이션 통지를 수신할 수 있다. 그 응답으로, 모바일 컴퓨팅 디바이스 및 액세서리는 통신 세션을 개방하고, 블록(835)에서 상호동작하기 시작할 수 있다.
블록(840)에서, 프로세스(800)가 종료할 수 있다. 예를 들어, 프로세스(800)는 액세서리가 모바일 컴퓨팅 디바이스로부터 접속해제되는 경우, 모바일 컴퓨팅 디바이스가 비행기 모드에 배치되는 경우, 통지 종료 표시가 애플리케이션 인터페이스를 통해 사용자에 의해 표시되는 경우, 그리고/또는 애플리케이션이 폐쇄되는 경우 종료할 수 있다.
일부 실시예들에서, 프로세스들(300, 500, 및/또는 700)은 도 2에 도시된 모바일 컴퓨팅 디바이스(200)의 프로세서(230)에 의해 실행될 수 있다. 액세서리 및 모바일 컴퓨팅 디바이스 사이의 통신은 액세서리 I/O(205)를 사용하여 발생할 수 있다. 또한, 프로세스들(400, 600, 및/또는 800)은 액세서리(202)의 제어기(260)에 의해 수행될 수 있다. 그리고, 액세서리 및 모바일 컴퓨팅 디바이스 사이의 통신은 모바일 컴퓨팅 디바이스 I/O(250)를 사용하여 발생할 수 있다.
추가적인 실시예들에서, 모바일 컴퓨팅 디바이스는 특정 애플리케이션 또는 애플리케이션의 타입이 실행을 위해 모바일 컴퓨팅 디바이스에서 사용한지의 여부를 결정할 수 있다(예를 들어, 블록들(330, 530 및 730)). 특정 애플리케이션 또는 애플리케이션 타입에 대응하는 애플리케이션이 모바일 컴퓨팅 디바이스에서 이용가능하지 않은 경우, 모바일 컴퓨팅 디바이스는 네트워크 위치로부터 애플리케이션을 다운로드할 수 있다. 예를 들어, 애플리케이션 식별 정보 또는 애플리케이션 타입 식별 정보는 이러한 애플리케이션이 다운로드될 수 있는 경우 애플리케이션 스토어에 송신될 수 있다. 일부 실시예들에서, 애플리케이션이 자동으로 다운로드될 수 있다. 다른 실시예들에서, 사용자는 자신이 애플리케이션을 다운로드하기를 원하는 지의 여부를 질의받을 수 있다. 사용자가 승인하는 경우, 애플리케이션은 모바일 컴퓨팅 디바이스에서 다운로드 및 실행될 수 있다.
추가적인 실시예들에서, 액세서리는 개시 커맨드를 송신하기 전에 모바일 컴퓨팅 디바이스에서 실행될 수 있는 실행가능한 애플리케이션들에 관한 정보를 요청할 수 있다. 예를 들어, AvailableApplicationRequest 커맨드는 액세서리로부터 모바일 컴퓨팅 디바이스로 송신될 수 있다. 그 응답으로, 모바일 컴퓨팅 디바이스는 액세서리에 AvailableApplication 메시지를 송신할 수 있다. 이러한 메시지는 액세서리에 의해 액세스될 수 있는 모바일 컴퓨팅 디바이스에서 이용가능한 모든 애플리케이션들을 리스팅하는 페이로드를 포함할 수 있다. 페이로드는 또한 애플리케이션 아이콘들 등과 같은 이용가능한 애플리케이션들과 연관된 다른 정보를 포함할 수 있다. 이러한 리스트는 모바일 컴퓨팅 디바이스에서 룩업 테이블 내의 애플리케이션들의 순서와 일치하는 방식으로 정렬될 수 있다. 일부 실시에들에서, 이러한 리스트는 모든 애플리케이션들의 완전한 리스트가 아닐 수 있는데, 왜냐하면, 일부 애플리케이션들이 액세서리와의 통신에 대해 이용가능하거나 호환가능하지 않을 수 있기 때문이다. 이러한 리스트를 사용하여, 액세서리는 이후 애플리케이션이 존재하며 모바일 컴퓨팅 디바이스에 대해 이용가능함을 알고 있는 애플리케이션들 중 하나의 개시를 요청할 수 있다. 그렇게 수행함으로써, 개시 요청은 이후 애플리케이션들의 리스트 내의 애플리케이션들과 대응하는 어써트된 비트를 포함하는 비트 마스크를 포함할 수 있다. 모바일 컴퓨팅 디바이스는 애플리케이션들의 리스트와 관련한 어써트된 비트의 배치를 통지함으로써 애플리케이션을 간단하게 식별할 수 있다.
추가적인 실시예들에서, 모바일 컴퓨팅 디바이스는, 액세서리로부터 명시적인 개시 커맨드를 수신하지 않고, 액세서리와의 접속을 설정할 시에 애플리케이션을 자동으로 개시할 수 있다. 예를 들어, 액세서리에 접속하면, 모바일 컴퓨팅 디바이스는 액세서리와 호환가능한 하나 이상의 애플리케이션들을 결정하기 위해 룩업 테이블에 액세스할 수 있다. 모바일 컴퓨팅 디바이스는 이후 호환가능한 애플리케이션들 중 하나를 자동으로 개시할 수 있다. 다수의 애플리케이션들이 액세서리와 호환가능한 것으로 간주되는 경우들에서, 모바일 컴퓨팅 디바이스는 우선순위 랭킹에 기초하여 개시될 애플리케이션을 선택할 수 있거나, 또는 호환가능한 애플리케이션의 세트로부터 특정 애플리케이션을 선택하도록 사용자에게 요청할 수 있다.
추가적인 실시예들에서, 액세서리로부터 모바일 컴퓨팅 디바이스로 송신된 개시 커맨드는 애플리케이션이 전경에서 명시적으로 개시될지 또는 배경에서 명시적으로 개시될 지의 여부를 표시하는 정보를 포함할 수 있다. 예를 들어, 액세서리는 그것이 오직 배경에서 애플리케이션과 통신하기를 원하는 저전력 모드로 설정될 수 있다. 본 기술분야의 당업자는 다른 변경들, 수정들 또는 대안들을 인지할 것이다.
역 도메인 명칭 컨벤션
일부 실시예들에서, 역 도메인 명칭 컨벤션이 애플리케이션 명칭 공간(namespace)을 관리하기 위해 채택될 수 있다. 통상적인 도메인 명칭들은, 좌에서 우로, 더 낮은 레벨의 도메인들로부터 최상 레벨의 도메인들로 제공한다. 예를 들어, 도메인 명칭 "help.example.com"에서, 용어 "com"은 최상 레벨의 도메인이고, 용어 "example"은 더 낮은 레벨의 도메인이고, 용어 "help"는 최저 레벨의 도메인이다. 또다른 예로서, 도메인 명칭 "mac.apple.com"은 좌에서 우로, 최저 레벨의 도메인 "mac", 중간 도메인 "apple", 및 최상 레벨의 도메인 "com"을 특정한다. 반면, 역 도메인 명칭들은 "com.apple.mac"을 제공할 것이다.
역 도메인 명칭 컨벤션은 특정 회사에 의해 사용되는 애플리케이션들을 특정하기 위해 사용될 수 있다. 즉, 역 도메인 명칭 "com.company 1.application 1"은 "application1" 애플리케이션이 회사(또는 다른 개발자) "company 1"와 연관됨을 특정한다. 따라서, 일반적으로, 회사는 역 도메인 명칭 컨벤션을 사용하여 애플리케이션을 구현할 수 있고, 여기서, 역 도메인 명칭의 제1 부분은 회사를 참조하고("com.company1"), 회사(또는 다른 개발자)의 인터넷 도메인 명칭과 연관된다. 역 도메인 명칭의 제2 부분("application1")은 특정 애플리케이션을 지칭한다. 액세서리들 및/또는 애플리케이션들의 상이한 개발자가 상이한 인터넷 도메인 명칭들과 연관되는 범위에 대해, 역 도메인 명칭 컨벤션은 개발자들로 하여금 자신의 인터넷 도메인 명칭의 역에 기초하여 이들의 프로토콜들을 네이밍함으로써 애플리케이션들 및/또는 액세서리들을 다른 것들과 구별하게 한다. 이러한 컨벤션은 개발자들로 하여금 다른 개발자들의 네이밍 컨벤션들과는 무관하게 독립적으로 이들의 애플리케이션들을 네이밍하도록 한다. 또한, 동일한 명칭들을 사용하는 2명의 개발자들 사이의 충돌이 존재하는 경우, 누가 대응하는 인터넷 도메인 명칭을 소유하는지에 대한 단순한 체크는 어느 개발자가 특정 역 도메인 명칭에 대한 권한을 가지는지를 결정해야 한다.
일부 실시예들에서, 역 도메인 명칭들은 디바이스들의 클래스 내의 모든 디바이스들에 특정적이거나 또는 애플리케이션의 클래스 내의 모든 애플리케이션들에 대해 특정적인 전체 식별자를 포함하도록 첨부될 수 있다. 예를 들어, 모든 스피커 액세서리들은 역 도메인 명칭에 첨부된 식별자를 포함할 수 있다. 예를 들어, 이러한 역 도메인 명칭은 다음 포맷을 가질 수 있다: "com.company1.accessory1.speaker" 또는 "speaker.com.company1.accessory1". 이러한 컨벤션을 가지고, 상이한 회사들이 스피커를 생산할 수 있지만, 모바일 컴퓨팅 디바이스는 제조사 차이점들에도 불구하고 이러한 디바이스들을 스피커로서 인지할 수 있다. 또다른 예로서, 역 도메인 명칭은 다음 포맷을 가질 수 있다:"com.company1.accessory1.application1". 이러한 역 도메인 명칭은 특정 애플리케이션의 자동 개시를 요청하기 위해 액세서리에 의해 사용될 수 있는 특정 애플리케이션을 특정한다(도 3 및 도 4 참조). 또다른 예로서, 역 도메인 명칭은 다음 포맷을 가질 수 있다: "com.company1.accessory1". 이러한 역 도메인 명칭은 단일 애플리케이션 또는 애플리케이션들의 세트와 함께 사용될 수 있는 특정 액세서리를 특정한다. 그리고, 이는 액세서리 1과 연관된 특정 애플리케이션(도 3 및 도 4 참조) 또는 액세서리 1과 연관된 애플리케이션 타입들 중 임의의 것(도 5 및 도 6 참조)의 개시를 요청하기 위해 액세서리에 의해 사용될 수 있다. 또다른 예로서, 역 도메인 명칭은 다음 포맷을 가질 수 있다: "com.company1.applicationtype1". 이러한 역 도메인 명칭은 액세서리와 상호동작할 수 있는 애플리케이션들의 종류(도 5 및 도 6 참조)를 지칭할 수 있는 특정 애플리케이션 타입을 특정한다. 모바일 컴퓨팅 디바이스는 이후, 애플리케이션 타입과 연관된 애플리케이션들 중 임의의 것을 개시할 수 있다. 이들 예들의 다양한 다른 결합들 및 변경들이 사용될 수 있다.
역 도메인 명칭 컨벤션은 애플리케이션 프로토콜들이 식별될 수 있는 방법의 단지 일 예이다. 임의의 타입의 컨벤션이 사용될 수 있다.
본 발명의 실시예들은 전용 컴포넌트들 및/또는 프로그램가능한 프로세서들 및/또는 다른 프로그램가능 디바이스들의 임의의 결합을 사용하여 구현될 수 있다. 여기서 기술된 다양한 프로세스들은 동일한 프로세서 상에서 또는 임의로 결합된 상이한 프로세서들 상에서 구현될 수 있다. 따라서, 컴포넌트들이 특정 동작들을 수행하도록 구성되는 것으로서 기술되는 경우, 이러한 구성은, 예를 들어, 동작을 수행하도록 전자 회로들을 설계함으로써, 동작을 수행하도록 프로그램가능 전자 회로(예를 들어, 마이크로프로세서)들을 프로그래밍함으로써, 또는 이들의 임의의 결합에 의해 달성될 수 있다. 프로세스들은 프로세스간 통신을 위한 종래의 기법들을 포함하지만 이에 제한되지 않는 다양한 기법들을 사용하여 통신할 수 있고, 상이한 프로세스 쌍들이 상이한 기법들을 사용할 수 있거나, 동일한 프로세스 쌍이 상이한 시간들에서 상이한 기법들을 사용할 수 있다. 또한, 전술된 실시예들이 특정 하드웨어 및 소프트웨어 컴포넌트들에 대해 참조할 수 있지만, 본 기술분야의 당업자는 하드웨어 및/또는 소프트웨어 컴포넌트들의 상이한 결합들이 또한 사용될 수 있으며, 하드웨어에서 구현되는 것으로서 기술된 특정 동작들이 또한 소프트웨어에서 구현될 수 있거나 또는 그 역도 성립할 수 있음을 이해할 것이다.
본 발명의 다양한 특징들을 포함하는 컴퓨터 프로그램들은 다양한 컴퓨터 판독가능한 저장 매체 상에서 인코딩될 수 있으며, 적절한 매체는 자기 디스크 또는 테이프, 컴팩트 디스크(CD) 또는 DVD(디지털 다목적 디스크)와 같은 광학 저장 매체, 플래시 메모리 등을 포함한다. 프로그램 코드를 이용하여 인코딩된 컴퓨터 판독가능한 매체는 호환가능한 전자 디바이스와 함께 패키지화될 수 있거나, 또는 프로그램 코드는 전자 디바이스들과는 별도로 (예를 들어, 인터넷 다운로드를 통해) 제공될 수 있다.
따라서, 본 발명이 특정 실시예들에 대해 기술되었지만, 본 발명이 후속하는 청구항들의 범위 내의 모든 수정들 및 등가물들을 커버하도록 의도된다는 점이 이해될 것이다.

Claims (18)

  1. 액세서리로부터 모바일 컴퓨팅 디바이스로, 상기 모바일 컴퓨팅 디바이스 상에서 애플리케이션을 개시(launching)하기 위한 개시 커맨드(launch command)를 송신하는 단계 - 상기 개시 커맨드는 상기 액세서리와 호환가능한 애플리케이션들의 그룹을 식별하는 애플리케이션 타입 정보를 포함함 - ;
    상기 액세서리에 의해, 상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션이 상기 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능함을 표시하는 확인응답 메시지(acknowledgement message)를 상기 모바일 컴퓨팅 디바이스로부터 수신하는 단계; 및
    상기 액세서리에 의해, 통신 세션이 상기 액세서리와 상기 적어도 하나의 애플리케이션 사이의 통신을 위해 개방되어 있음을 표시하는 개방 세션 메시지를, 상기 확인응답 메시지와는 별도로 상기 모바일 컴퓨팅 디바이스로부터 수신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 액세서리에 의해, 상기 적어도 하나의 애플리케이션과 통신하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서,
    상기 액세서리가 부정확인응답 커맨드(negative acknowledgement command)를 수신하는 경우, 이후 상기 모바일 컴퓨팅 디바이스와의 통신을 중단하는 방법.
  4. 제2항에 있어서,
    상기 애플리케이션 타입 정보는 상기 애플리케이션들의 그룹에 의해 지원되는 통신 프로토콜을 특정하고, 상기 확인응답 메시지는 상기 모바일 컴퓨팅 디바이스에서의 실행을 위해 이용가능한 적어도 하나의 애플리케이션이 상기 통신 프로토콜과 호환가능함을 표시하고, 상기 개방 세션 메시지는 상기 통신 세션이 상기 통신 프로토콜을 사용하여 상기 모바일 컴퓨팅 디바이스에서 실행하는 상기 적어도 하나의 애플리케이션과의 통신을 위해 개방되어 있음을 표시하고, 상기 적어도 하나의 애플리케이션과의 통신은 상기 통신 프로토콜을 사용하여 수행되는 방법.
  5. 모바일 컴퓨팅 디바이스와 함께 사용하기 위한 액세서리로서,
    상기 모바일 컴퓨팅 디바이스와 커맨드들 및 데이터를 교환하도록 구성되는 입력/출력 인터페이스; 및
    상기 입력/출력 인터페이스와 커플링되는 제어기
    를 포함하고, 상기 제어기는:
    상기 입력/출력 인터페이스를 이용하여 상기 모바일 컴퓨팅 디바이스의 접속을 검출하고;
    상기 모바일 컴퓨팅 디바이스 상에서 애플리케이션을 개시하기 위한 개시 커맨드를, 상기 입력/출력 인터페이스를 통해 상기 모바일 컴퓨팅 디바이스에 송신하고 - 상기 개시 커맨드는 상기 액세서리와 호환가능한 애플리케이션들의 그룹을 식별하는 애플리케이션 타입 정보를 포함함 - ;
    통신 세션이 상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션과의 통신을 위해 개방되어 있음을 표시하는 개방 통신 메시지를 상기 입력/출력 인터페이스를 통해 상기 모바일 컴퓨팅 디바이스로부터 수신하도록 구성되는 액세서리.
  6. 제5항에 있어서,
    상기 제어기는 또한, 상기 모바일 컴퓨팅 디바이스에서 실행하는 적어도 하나의 애플리케이션과 상호동작하도록 구성되는 액세서리.
  7. 제5항에 있어서,
    상기 제어기는 또한, 상기 개방 통신 메시지를 수신하기 전에, 상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션을 개시할 수 있음을 표시하는 확인응답을 상기 모바일 컴퓨팅 디바이스로부터 수신하도록 구성되는 액세서리.
  8. 제5항에 있어서,
    상기 애플리케이션 타입 정보는 상기 애플리케이션들의 그룹에 의해 지원되는 하나 이상의 통신 프로토콜들을 특정하는 액세서리.
  9. 제5항에 있어서,
    상기 개방 통신 메시지는 상기 적어도 하나의 애플리케이션과 호환가능한 통신 프로토콜의 표시를 포함하는 액세서리.
  10. 모바일 컴퓨팅 디바이스에서의 사용을 위한 방법으로서,
    상기 모바일 컴퓨팅 디바이스와 커플링되는 액세서리로부터 개시 커맨드를 수신하는 단계 - 상기 개시 커맨드는 상기 액세서리와 호환가능한 애플리케이션들의 그룹을 식별하는 애플리케이션 타입 정보를 포함함 - ;
    상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션이 상기 모바일 컴퓨팅 디바이스에서 이용가능한지의 여부를 결정하는 단계;
    상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션이 상기 모바일 컴퓨팅 디바이스에서 이용가능하지 않은 경우, 상기 개시 커맨드를 거절하는 메시지를 상기 액세서리에 송신하는 단계; 및
    상기 애플리케이션들의 그룹 내의 적어도 하나의 애플리케이션이 상기 모바일 컴퓨팅 디바이스에서 이용가능한 경우, 그후:
    상기 적어도 하나의 애플리케이션이 이용가능하다는 확인응답을 송신하는 단계;
    상기 적어도 하나의 애플리케이션을 개시하는 단계;
    상기 적어도 하나의 애플리케이션과 상기 액세서리 사이에 통신 채널을 개방하는 단계; 및
    상기 통신 채널이 개방되어 있음을 표시하는 메시지를 상기 액세서리에 송신하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 통신 채널이 개방되어 있음을 표시하는 상기 액세서리에 송신된 메시지는 통신 프로토콜의 표시를 포함하는 방법.
  12. 제10항에 있어서,
    상기 애플리케이션 타입 정보는 상기 애플리케이션들의 그룹에 의해 지원되는 통신 프로토콜을 특정하는 방법.
  13. 제10항에 있어서,
    상기 모바일 컴퓨팅 디바이스가 상기 적어도 하나의 애플리케이션을 개시할 수 있는지의 여부를 결정하는 단계를 더 포함하는 방법.
  14. 모바일 컴퓨팅 디바이스의 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금 동작들을 수행하게 하는 명령(instruction)들이 저장되어 있는 비-일시적 컴퓨터-판독가능한 매체로서, 상기 동작들은:
    애플리케이션을 개시하기 위해 액세서리로부터 표시를 수신하는 동작 - 상기 표시는 상기 액세서리와 호환가능한 애플리케이션들의 그룹을 식별하는 애플리케이션 타입 정보를 포함함 - ;
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션들의 그룹 내의 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정하는 동작;
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있지 않는 경우, 상기 애플리케이션의 개시가 가능하지 않음을 표시하는 메시지를 상기 액세서리에 송신하는 동작; 및
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있는 경우,
    상기 애플리케이션을 실행하는 동작;
    상기 애플리케이션과 상기 액세서리 사이에 통신 채널을 개방하는 동작; 및
    상기 통신 채널이 개방되었다는 표시를 가지는 메시지를 상기 액세서리에 송신하는 동작
    을 포함하는 컴퓨터-판독가능한 매체.
  15. 제14항에 있어서,
    상기 동작들은 상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있는 경우, 상기 액세서리에 확인응답을 송신하는 동작을 더 포함하는 컴퓨터-판독가능한 매체.
  16. 제14항에 있어서,
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정하는 것은 상기 애플리케이션이 실행을 위해 상기 모바일 컴퓨팅 디바이스에서 이용가능한지의 여부를 결정하는 것을 포함하는 컴퓨터-판독가능한 매체.
  17. 제14항에 있어서,
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정하는 것은 상기 모바일 컴퓨팅 디바이스가 호환불가능한 애플리케이션을 현재 실행하고 있는지의 여부를 결정하는 것을 포함하는 컴퓨터-판독가능한 매체.
  18. 제14항에 있어서,
    상기 모바일 컴퓨팅 디바이스가 상기 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정하는 것은 상기 모바일 컴퓨팅 디바이스가 배경 프로세스로서 상기 애플리케이션을 개시하기 위한 상태에 있는지의 여부를 결정하는 것을 포함하는 컴퓨터-판독가능한 매체.
KR1020137011004A 2010-09-30 2011-09-22 액세서리와 공조하는 애플리케이션 개시 KR101522801B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US38856010P 2010-09-30 2010-09-30
US61/388,560 2010-09-30
US13/085,952 US20120081207A1 (en) 2010-09-30 2011-04-13 Application launching in conjunction with an accessory
US13/085,952 2011-04-13
PCT/US2011/052827 WO2012044519A1 (en) 2010-09-30 2011-09-22 Application launching in conjunction with an accessory

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147036687A Division KR101787185B1 (ko) 2010-09-30 2011-09-22 액세서리와 공조하는 애플리케이션 개시

Publications (2)

Publication Number Publication Date
KR20130094329A true KR20130094329A (ko) 2013-08-23
KR101522801B1 KR101522801B1 (ko) 2015-05-26

Family

ID=44764219

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137011004A KR101522801B1 (ko) 2010-09-30 2011-09-22 액세서리와 공조하는 애플리케이션 개시
KR1020147036687A KR101787185B1 (ko) 2010-09-30 2011-09-22 액세서리와 공조하는 애플리케이션 개시

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147036687A KR101787185B1 (ko) 2010-09-30 2011-09-22 액세서리와 공조하는 애플리케이션 개시

Country Status (5)

Country Link
US (1) US20120081207A1 (ko)
EP (1) EP2622472A1 (ko)
KR (2) KR101522801B1 (ko)
CN (1) CN103189841A (ko)
WO (1) WO2012044519A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101600386B1 (ko) * 2014-09-01 2016-03-07 박종성 애플리케이션의 사용자 인증 방법
KR20160026812A (ko) * 2015-10-16 2016-03-09 박종성 애플리케이션의 사용자 인증 방법
US10063681B2 (en) 2014-04-07 2018-08-28 Samsung Electronics Co., Ltd. Wearable device paired with mobile terminal and operating method thereof

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970870B2 (en) 2005-06-24 2011-06-28 Microsoft Corporation Extending digital artifacts through an interactive surface
US8639733B2 (en) 2009-03-16 2014-01-28 Apple Inc. Automatic identification of compatible applications and accessories
TWI468943B (zh) * 2010-11-03 2015-01-11 Apple Inc 用於從故障裝置之存取資料復原的方法及設備
US9032413B2 (en) * 2011-09-01 2015-05-12 Microsoft Technology Licensing, Llc Decoupling background work and foreground work
US8892792B2 (en) * 2011-09-12 2014-11-18 Intheairnet, Llc Distributed media system
KR20130035603A (ko) * 2011-09-30 2013-04-09 삼성전자주식회사 적어도 하나의 어플리케이션 데이터를 동기화하기 위한 장치 및 방법
US9182965B2 (en) 2011-10-31 2015-11-10 Nokia Technologies Oy Method and apparatus for developing socially suitable applications and devices
US9164803B2 (en) 2012-01-20 2015-10-20 Microsoft Technology Licensing, Llc Background task resource control
US9094489B1 (en) * 2012-05-29 2015-07-28 West Corporation Controlling a crowd of multiple mobile station devices
CN102779540A (zh) * 2012-08-08 2012-11-14 深圳乐投卡尔科技有限公司 基于Android平台控制iPod播放的方法
US8984655B2 (en) * 2012-10-15 2015-03-17 Microsoft Technology Licensing, Llc License information access based on developer profiles
KR101447926B1 (ko) * 2013-01-25 2014-10-15 신정용 모바일 기기용 런처 시스템 및 그 런처 설치 방법
US9491223B2 (en) * 2013-02-17 2016-11-08 Onavo Mobile Ltd. Techniques for determining a mobile application download attribution
KR101503770B1 (ko) * 2013-03-04 2015-03-18 주식회사 코런 개방형 스마트 앱세서리
KR102163357B1 (ko) 2013-05-21 2020-10-08 삼성전자주식회사 애플리케이션 관리 방법 및 장치
US20150127529A1 (en) * 2013-11-05 2015-05-07 Oleg Makhotin Methods and systems for mobile payment application selection and management using an application linker
US9596098B1 (en) * 2014-07-31 2017-03-14 iDevices, LLC Systems and methods for communication between devices and remote systems with a power cord
US9742977B2 (en) 2014-09-02 2017-08-22 Apple Inc. Camera remote control
US9420087B2 (en) 2014-09-02 2016-08-16 Apple Inc. Notifications with custom user interface
US9769301B2 (en) * 2014-09-02 2017-09-19 Apple Inc. Accessory device application bundling
US10592187B2 (en) 2014-09-02 2020-03-17 Apple Inc. Accessory device operation with user mobile device over network connection
CN107111687A (zh) 2015-01-20 2017-08-29 诺华股份有限公司 使用连接的物理设备以及其间的数据传输进行应用解锁

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158952A1 (en) * 2000-12-29 2003-08-21 Kris Fleming Method and apparatus for associating virtual communications ports with applications and services on bluetooth enabled devices
US20030149874A1 (en) 2002-02-06 2003-08-07 Xerox Corporation Systems and methods for authenticating communications in a network medium
US7062261B2 (en) * 2003-01-31 2006-06-13 Motorola, Inc. Method and apparatus for automatic detection and installation of Java-enabled accessories
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
US20090024757A1 (en) * 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US20060098238A1 (en) * 2004-11-05 2006-05-11 Nokia Corporation, Doing Business In Espoo, Finlan On-demand activation of bluetooth sap
US8073984B2 (en) * 2006-05-22 2011-12-06 Apple Inc. Communication protocol for use with portable electronic devices
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
US9083686B2 (en) * 2008-11-12 2015-07-14 Qualcomm Incorporated Protocol for program during startup sequence
US20100138914A1 (en) * 2008-12-01 2010-06-03 Research In Motion Limited System and method of providing biometric quick launch
US8639733B2 (en) * 2009-03-16 2014-01-28 Apple Inc. Automatic identification of compatible applications and accessories
US8452903B2 (en) * 2009-03-16 2013-05-28 Apple Inc. Mobile computing device capabilities for accessories
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10063681B2 (en) 2014-04-07 2018-08-28 Samsung Electronics Co., Ltd. Wearable device paired with mobile terminal and operating method thereof
US10341480B2 (en) 2014-04-07 2019-07-02 Samsung Electronics Co., Ltd. Wearable device paired with mobile terminal and operating method thereof
KR101600386B1 (ko) * 2014-09-01 2016-03-07 박종성 애플리케이션의 사용자 인증 방법
KR20160026812A (ko) * 2015-10-16 2016-03-09 박종성 애플리케이션의 사용자 인증 방법

Also Published As

Publication number Publication date
US20120081207A1 (en) 2012-04-05
KR101787185B1 (ko) 2017-10-18
KR101522801B1 (ko) 2015-05-26
WO2012044519A1 (en) 2012-04-05
CN103189841A (zh) 2013-07-03
EP2622472A1 (en) 2013-08-07
KR20150013910A (ko) 2015-02-05

Similar Documents

Publication Publication Date Title
KR101522801B1 (ko) 액세서리와 공조하는 애플리케이션 개시
US20170013066A1 (en) Application launching in conjunction with an accessory
EP2230605B1 (en) Accessory and mobile computing device communication using an application communication protocol
WO2013184290A1 (en) Protocol translating adapter
AU2011101205B4 (en) Accessory and mobile computing device communication using an application communication protocol
AU2013205261B2 (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
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 5