KR20140143793A - 유니버셜 직렬 버스 디바이스들에 대한 데이터 재지향 - Google Patents

유니버셜 직렬 버스 디바이스들에 대한 데이터 재지향 Download PDF

Info

Publication number
KR20140143793A
KR20140143793A KR1020147028544A KR20147028544A KR20140143793A KR 20140143793 A KR20140143793 A KR 20140143793A KR 1020147028544 A KR1020147028544 A KR 1020147028544A KR 20147028544 A KR20147028544 A KR 20147028544A KR 20140143793 A KR20140143793 A KR 20140143793A
Authority
KR
South Korea
Prior art keywords
usb
data
usb device
host
connection
Prior art date
Application number
KR1020147028544A
Other languages
English (en)
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 KR20140143793A publication Critical patent/KR20140143793A/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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/40Bus coupling
    • G06F2213/4002Universal serial bus hub with a single upstream port
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)

Abstract

본 개시물의 양상들은 데이터 트랜스퍼에 관한 것이다. 일례에서, 본 개시물의 양상들은, 호스트 디바이스에서, 유니버셜 직렬 버스(USB; Universal Serial Bus) 허브에 접속된 제 1 USB 디바이스와 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키는 단계 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ― 를 포함하는 방법을 포함한다. 이 방법은 또한, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속이 확립된 후, USB 허브를 통해서 제 1 USB 디바이스로부터 제 2 USB 디바이스로 라우팅될 데이터를 요청하는 단계를 포함한다.

Description

유니버셜 직렬 버스 디바이스들에 대한 데이터 재지향{DATA REDIRECTION FOR UNIVERSAL SERIAL BUS DEVICES}
본 개시물은, 2012년 3월 13일자로 출원된 미국 가출원 번호 제61/610,247호, 및 2012년 3월 15일자로 출원된 미국 가출원 번호 제61/611,314호를 우선권으로 주장하며, 그 전체 내용은 인용에 의해 본원에 포함된다.
본 개시물은 무선 통신 기법들에 관한 것이다.
모바일 디바이스들은, 모바일 전화기들, 태블릿 컴퓨터들, 랩탑 컴퓨터들, 무선 통신 카드들을 갖춘 휴대용 컴퓨터들, 개인 휴대 정보 단말기들(PDA들), 디지털 카메라들, 비디오 게이밍 디바이스들, 휴대용 미디어 플레이어들, 무선 통신 성능들을 갖춘 플래시 메모리 디바이스들, 소위 "스마트" 폰들 및 "스마트" 패드들 또는 태블릿들을 포함하는 무선 통신 디바이스들, e-판독기들, 또는 다른 광범위한 다른 유형들의 휴대용 디바이스들의 형태를 취할 수 있다. 모바일 디바이스들은, 고-전력 프로세서들의 부가, 미디어 컨텐츠를 프로세싱하기 위한 성능, 및 클라우드 내에서 네트워크들과 상호작용하기 위한 능력으로 점점 더 강력해지고 있다. 이러한 개선책들은, 더 나은 사용자 경함을 제공하고 생산성을 개선시키는, 모바일 디바이스들에 대한 새로운 사용 모델들을 개발하는 것을 가능하게 한다.
이에 더해, 모바일 디바이스들 및 다른 컴퓨팅 디바이스들(예를 들어, 개인용 컴퓨터들, 모바일 전화기들, 전자 핸드헬드 디바이스들, 게이밍 콘솔들, 또는 다른 유사 디바이스들)이 통신 표준을 이용하여 다양한 주변 디바이스들과 통신할 수 있다. 하나의 이러한 통신 표준은 유니버셜 직렬 버스(USB; Universal Serial Bus) 접속을 포함한다. USB 접속을 이용할 수 있는 주변 디바이스들의 일부 예시들은, 마우스들, 키보드들, 디지털 카메라들, 프린터들, 개인용 미디어 플레이어들, 플래시 드라이브들과 같은 대용량 스토리지 디바이스들, 네트워크 어댑터들, 및 외부 하드 드라이브들을 포함한다. 수많은 이러한 디바이스들의 경우, USB는 주변 디바이스 접속을 용이하게 하는 매우 흔한 통신 표준이 되어 왔다.
본 개시물의 기법들은 일반적으로 전자 디바이스들 사이에서 데이터를 트랜스퍼(transfer)하기 위한 기법들에 관한 것이다. 예를 들어, 본 개시물의 기법들은, 교환되는 데이터의 양 및/또는 호스트 디바이스와 허브를 통해 그 호스트 디바이스에 접속된 하나 또는 그 초과의 다른 디바이스들 사이에서 데이터가 교환되는데 이용되는 주파수를 제한할 수 있다. 일부 양상들에 따르면, 디바이스들은 유니버셜 직렬 버스(USB; Universal Serial Bus) 접속을 통해서 통신할 수 있다. 이에 따라, 디바이스들은 일반적으로 USB 호스트, USB 허브, 및 USB 디바이스로서 지칭될 수 있다. 이 개시물의 양상들은, USB 호스트 디바이스와의 상호작용들을 제한하는 방식으로 USB 허브에 접속된 USB 디바이스들 사이에서의 통신을 스트림라이닝(streamlining)하기 위한 기법들에 관한 것이다. 예를 들어, 호스트 디바이스가 USB 허브에 접속된 USB 디바이스들 사이에서의 데이터의 모든 통신을 용이하게 하는 것 이외에, 본 개시물의 기법들은, USB 허브에 접속된 USB 디바이스들 사이에서의 데이터의 더욱 직접적인 교환을 제공하기 위해 데이터가 재지향되도록 허용한다.
일례에서, 본 개시물의 양상들은, 호스트 디바이스에서, 유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키는 단계 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 및 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속이 확립된 후, USB 허브를 통해서 제 1 USB 디바이스로부터 제 2 USB 디바이스로 라우팅될 데이터를 요청하는 단계를 포함하는, 데이터를 트랜스퍼하기 위한 방법에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은 데이터를 트랜스퍼하기 위한 장치에 관한 것이고, 이 장치는, 유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키고 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 그리고 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속이 확립된 후, USB 허브를 통해서 제 1 USB 디바이스로부터 제 2 USB 디바이스로 라우팅될 데이터를 요청하도록 구성된 하나 또는 그 초과의 프로세서들을 포함한다.
다른 예시에서, 본 개시물의 양상들은, 유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키기 위한 수단 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 및 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속이 확립된 후, USB 허브를 통해서 제 1 USB 디바이스로부터 제 2 USB 디바이스로 라우팅될 데이터를 요청하기 위한 수단을 포함하는, 데이터를 트랜스퍼하기 위한 장치에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은, 실행될 때, 하나 또는 그 초과의 프로세서들로 하여금, 유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키게 하고 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 그리고 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속이 확립된 후, USB 허브를 통해서 제 1 USB 디바이스로부터 제 2 USB 디바이스로 라우팅될 데이터를 요청하게 하는 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키는 단계 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 USB 호스트를 포함하지 않음 ―, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하는 단계; 요청을 수신한 후, 데이터의 적어도 일부를 상기 USB 호스트에 트랜스퍼하지 않고 접속을 이용하여 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 송신하는 단계를 포함하는, 데이터를 트랜스퍼하기 위한 방법에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키고 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 USB 호스트를 포함하지 않음 ―, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하고, 요청을 수신한 후 데이터의 적어도 일부를 USB 호스트에 트랜스퍼하지 않고 접속을 이용하여 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 송신하도록 구성된 하나 또는 그 초과의 프로세서들을 포함하는, 데이터를 트랜스퍼하기 위한 장치에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키기 위한 수단 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 USB 호스트를 포함하지 않음 ―, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하기 위한 수단, 요청을 수신한 후 데이터의 적어도 일부를 USB 호스트에 트랜스퍼하지 않고 접속을 이용하여 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 송신하기 위한 수단을 포함하는, 데이터를 트랜스퍼하기 위한 장치에 관한 것이다.
다른 예시에서, 본 개시물의 양상들은, 실행될 때, 하나 또는 그 초과의 프로세서들로 하여금, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키게 하고 ― 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서의 접속은 USB 호스트를 포함하지 않음 ―, 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하게 하고, 요청을 수신한 후 데이터의 적어도 일부를 USB 호스트에 트랜스퍼하지 않고 접속을 이용하여 제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 데이터를 송신하게 하는 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체에 관한 것이다.
본 개시물의 하나 또는 그 초과의 양상들의 세부사항들은, 이하의 상세한 설명 및 첨부 도면들에서 설명된다. 본 개시물에 설명된 기법들의 다른 특징들, 오브젝트들, 및 이점들은, 상세한 설명 및 도면들로부터, 그리고 청구범위로부터 명백해질 것이다.
도 1은, 본 개시물의 기법들을 구현할 수 있는 호스트, 허브, 및 디바이스들을 갖는 예시의 시스템을 예시하는 블록도이다.
도 2는, 도 1의 시스템을 예시하는 다른 블록도이다.
도 3은, USB 디바이스와 통신하는 USB 호스트를 예시하는 블록도이다.
도 4는, 무선 직렬 버스 프로토콜 스택의 블록도이다.
도 5는, 본 개시물의 기법들을 구현할 수 있는 다른 무선 직렬 버스 프로토콜 스택의 블록도이다.
도 6은, 본 개시물의 기법들을 구현할 수 있는 허브를 포함하는 무선 통신을 위한 시스템을 예시하는 개념적인 블록도이다.
도 7은, 본 개시물의 기법들을 구현할 수 있는 허브를 포함하는 무선 통신을 위한 다른 시스템을 예시하는 개념적인 블록도이다.
도 8은, 본 개시물의 기법들을 구현하는 무선 시스템에서의 메시지들의 예시의 플로우를 예시하는 개념적인 메시지 통신 도면이다.
도 9는, 본 개시물의 기법들을 구현하는 무선 시스템에서의 메시지들의 다른 예시의 플로우를 예시하는 개념적인 메시지 통신 도면이다.
도 10은, 본 개시물의 양상들에 따라서 예시의 통신 재지향(redirect)을 예시하는 플로우차트이다.
도 11은, 본 개시물의 양상들에 따라서 다른 예시의 통신 재지향을 예시하는 플로우차트이다.
컴퓨팅 디바이스들(예를 들어, 개인용 컴퓨터들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 소위 "스마트폰들"로 지칭되는 것과 같은 모바일 전화기들, 전자 핸드헬드 디바이스들, e-판독기들, 디지털 비디오 카메라들, 디지털 카메라들, 핸드-헬드 게이밍 디바이스들, 게이밍 콘솔들, 또는 다른 유사 디바이스들)은, 통신 표준을 이용하여 다양한 주변 디바이스들과 통신할 수 있다. 하나의 이러한 통신 표준은 유니버셜 직렬 버스(USB) 접속을 포함한다. USB 접속을 이용할 수 있는 주변 디바이스들의 일부 예시들은, 마우스들, 키보드들, 디스플레이들, 디지털 카메라들, 프린터들, 개인용 미디어 플레이어들, 플래시 드라이브들과 같은 대용량 저장 디바이스들, 네트워크 어댑터들, 및 외부 하드 드라이브들을 포함한다. 수많은 이러한 디바이스들에 대해, USB는 주변 디바이스 접속을 용이하게 하는 매우 흔한 통신 표준이 되어 왔다.
이에 따라, 본 개시물은, 호스트 컴퓨팅 디바이스와 통신할 수 있는 USB 접속을 갖는 주변 디바이스로서 "USB 디바이스"를 지칭할 수 있다. 일부 예시들에서, USB 디바이스는 통상적인 USB 통신 사양에 따라서 호스트 디바이스와 통신할 수 있다. 즉, 일례에서, USB 디바이스는, 2010년 7월 26일자로 개정된, http://www.usb.org/developers/docs/usb_20_021411.zip에서 공개적으로 이용가능한 USB 2.0 사양에 따라서 호스트 디바이스와 통신할 수 있다. 다른 예시에서, USB 디바이스와 호스트 디바이스는, 11월 12일, 28일자로 릴리즈되고 http://www.usb.org/developers/docs/usb_30_spec_02411d.zip에서 공개적으로 이용가능한 USB 3.0, 2010년 9월 9일자로 릴리즈되고 http://www.usb.org/developers/wusb/wusbl_l_20100910.zip에서 공개적으로 이용가능한 무선 USB, 또는 현재 이용가능하거나 또는 미래에 부상할 수 있는 다른 표준들 또는 독점 통신 사양들과 같은 다른 USB 사양에 따라 통신하도록 구성될 수 있다.
본 개시물은 허브로서 1개 초과의 다른 디바이스의 접속을 지원하는 디바이스에 관한 것일 수 있다. 예를 들어, 이 개시물은, 1개 초과의 USB 디바이스의 접속을 지원하는 디바이스로서 USB 허브에 관한 것일 수 있다. 즉, USB 허브는 호스트 디바이스에 접속하기 위한 단일 "업스트림" 접속, 및 다수의 다양한 UBS 디바이스들에 접속하기 위한 다수의 "다운스트림" 접속을 가질 수 있다. 일부 예시들에서, USB 허브는 다른 디바이스(예를 들어, USB 허브를 통합하는 텔레비전) 또는 주변 디바이스(예를 들어, USB 허브를 통합하는 키보드)에 집적될 수 있다. 이러한 USB 디바이스들은 복합 USB 디바이스들로 지칭될 수 있다.
일부 실시예들에서, 호스트 디바이스는 WiFi, 블루투스 등과 유사한 단거리 통신 채널과 같은 무선 통신 채널을 이용하여 허브와 통신하고 있을 수 있다. 그러나, 통신 채널은 이러한 점에 있어서 반드시 제한되지는 않으며, 라디오 주파수(RF) 스펙트럼 또는 하나 또는 그 초과의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체, 또는 무선 매체와 유선 매체의 임의의 조합을 포함할 수 있다. 다른 예시들에서, 통신 채널은 심지어 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수 있다.
일부 예시들에서, 호스트 디바이스는, 태블릿 컴퓨터, 스마트폰, 또는 다른 휴대용 전자 디바이스와 같은 모바일 디바이스일 수 있다. 따라서, 이하 더욱 상세하게 설명된 바와 같이, 호스트 모바일 디바이스는, USB 허브에 접속된 디바이스들을 포함하는 다수의 USB 디바이스들 사이에서의 통신을 용이하게 할 수 있다.
본 개시물의 특정 양상들은, 교환되는 데이터의 양 및/또는 하나 또는 그 초과의 접속된 USB 디바이스들을 갖는 USB 허브와 호스트 디바이스(예를 들어, 호스트 모바일 디바이스) 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하기 위한 기법들에 관한 것이다. 즉, 본 개시물의 양상들은, 호스트 디바이스와의 상호작용을 제한하는 방식으로 USB 허브에 접속된 USB 디바이스들 사이에서의 통신을 스트림라이닝하기 위한 기법들에 관한 것이다. 이에 따라, 호스트 디바이스가 USB 허브에 접속된 USB 디바이스들 사이에서의 데이터의 모든 통신을 용이하게 하는 것 이외에, 본 개시물의 기법들은, USB 허브에 접속된 USB 디바이스들 사이에서의 데이터의 더욱 직접적인 교환을 허용하는 방식으로 데이터가 재지향되도록 허용한다.
예시의 목적을 위한 일례에서, 호스트 디바이스는 통상적으로, USB 디바이스들의 부착(attachment) 및 제거(removal)를 검출하고, 호스트 디바이스와 USB 디바이스들 사이에서의 제어 정보 및 데이터의 데이터 플로우를 관리하고, 그리고 데이터 트랜스퍼와 연관된 상태 액티비티 및 통계치들을 수집하는데 책임이 있을 수 있다. 이러한 기능들을 수행하기 위해, 데이터는 통상적으로 호스트 디바이스를 통해서 라우팅되어야만 한다. 예시의 목적을 위한 일례에서, 호스트 디바이스는 2개 또는 그 초과의 다른 USB 디바이스들을 접속하는 USB 허브에 접속되고, 사용자는 USB 디바이스들 사이에서 데이터를 트랜스퍼하기 희망하는 것으로 가정한다. 이러한 예시에서, 제어 정보 및 데이터는 전송중인 USB 디바이스로부터 USB 허브로, 호스트로, 다시 USB 허브로, 그리고 수신중인 USB 디바이스로 트랜스퍼된다.
전술한 예시와 관련하여, 본 개시물의 양상들은 일반적으로 데이터 트랜스퍼 동안 호스트 디바이스를 통해서 라우팅된 데이터의 양을 감소시키거나 또는 제거하기 위해 USB 허브에서 정보를 리라우팅(rerouting)하는 것에 관한 것이다. 이에 따라, 전송중인 USB 디바이스는 USB 허브에 데이터를 전송할 수 있고, 상기 USB 허브는 그 데이터를 직접 트랜스퍼를 위해 수신중인 USB 디바이스에 (그리고 호스트 디바이스와 데이터를 교환하지 않고) 리라우팅한다. 교환되는 데이터의 양 및/또는 (USB 허브를 통해서) 접속된 USB 디바이스들과 호스트 디바이스 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, 데이터 트랜스퍼와 관련된 딜레이를 최소화할 수 있다. 즉, USB 허브에 접속된 USB 디바이스들 사이에 더욱 직접적인 접속을 제공하는 것은, 호스트 디바이스를 통해 데이터를 트랜스퍼하는 것과 연관된 딜레이를 제거할 수 있다.
더욱이, 데이터의 양 및/또는 호스트 디바이스와 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, 데이터의 이러한 교환으로 인해 소모되는 대역폭의 양을 감소시키는데 도움을 줄 수 있다. 예를 들어, USB 허브를 통해 데이터를 재지향시킴으로써, 데이터는 호스트 디바이스와 USB 허브 사이의 접속 상에서 트랜스퍼될 필요가 없다. 이에 따라, 기법들은 호스트 디바이스와 USB 허브 사이에서의 접속에 대해 소모되는 대역폭의 양을 감소시킨다.
이에 더해, 호스트 디바이스가 모바일 디바이스인 예시들에서, 데이터의 양 및/또는 호스트 디바이스와 USB 허브 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, 데이터 트랜스퍼와 연관된 전력 소모를 최소화하는데 도움을 줄 수 있다. 예를 들어, 호스트 디바이스와 허브 사이에서 트랜스퍼된 데이터의 양을 제한하는 것은 또한, 제한하지 않았다면 데이터 트랜스퍼를 수행하기 위해 필요했을 호스트 디바이스에서의 컴포넌트들(예를 들어, 하나 또는 그 초과의 프로세서들, 통신 인터페이스들(예를 들어, WiFi 라디오) 등)의 수를 제한한다. 일부 경우들에서, 호스트 디바이스는 배터리 전력공급된(또는 일부 다른 방식들로 전력 제한된) 모바일 디바이스일 수 있다. 이에 따라, 본 개시물의 기법들은 전력 제한된 호스트 디바이스의 배터리 수명을 최대화하는데 도움을 줄 수 있다.
따라서, 본 개시물의 기법들은, 또한 호스트 디바이스의 용인가능한 전력 사용을 유지하면서, 유선 접속과 동등한 품질로 호스트 디바이스에 주변 디바이스들을 무선으로 접속하는데 이용될 수 있다. 즉, 이 개시물의 기법들은, 데이터 트랜스퍼가 이를 통해서 제어될 수 있는 추상화 계층(abstraction layer)(예를 들어, 이하 설명되는 바와 같이, 프로토콜 추상화 계층)을 정의함으로써 무선 링크를 통해서, USB 트랜스퍼 유형들의 효율적인 트랜스퍼에 대한 지원, 예를 들어, 인터럽트, 등시성(isochronous), 벌크, 및 제어를 제공할 수 있다. 이 개시물의 기법들은, 개인용 컴퓨터들(PC들), 가전 제품들, 핸드헬드 디바이스들, 및 HID 디바이스들, 저장 디바이스들, 미디어 디바이스들, 및 프린터들과 같은 기존의 USB 주변기기들의 유비쿼터스 세트를 포함하는(그러나, 이에 한정되지 않음) 수많은 디바이스들에 적용가능할 수 있다.
본 개시물의 특정 기법들이 USB 표준들과 관련하여 설명되지만, USB 표준들이 이 개시물과 일치할 수 있는 통신 표준의 오직 몇몇의 예시들임을 이해해야 한다. 따라서, 기법들이 USB 표준들의 맥락에서 설명되지만, 다른 유사한 통신 표준들(예를 들어, IEEE 1394 표준, 이더넷 표준, SATA(Serial Advanced Technology Attachment) 표준, HDMI(high-definition multimedia interface) 표준, 및 Thunderbolt 표준) 또는 심지어는 미래의 통신 표준들 또는 기법들이 본 개시물의 교시로부터 유사하게 혜택을 받을 수 있다.
도 1은, 이 개시물의 교시들을 구현할 수 있는, 호스트, 허브, 및 디바이스들을 갖는 예시의 시스템을 예시하는 블록도이다. 예를 들어, 도 1에 도시된 시스템은 일반적으로 디스플레이(24)와 무선으로 통신하는 무선 직렬 버스(WSB) 호스트(20), 휴먼 인터페이스 디바이스(HID)(28) 및 (WSB 허브가 USB 접속들을 지원하는 경우들에서 USB 허브로 지칭될 수 있는) WSB 허브(32)를 포함한다. WSB 허브(32)는 또한 3개의 USB 디바이스들(36A, 36B, 및 36C)(집합적으로, USB 디바이스들(36))에 접속된다. 도 1의 컴포넌트들은 통신 채널들(38)을 통해서 통신할 수 있다.
일반적으로, WSB 호스트(20)는 WSB 허브(32) 및 USB 디바이스들(36)과 같은 하나 또는 그 초과의 다른 디바이스들과 호스팅(예를 들어, 통신)할 수 있는 전자 디바이스를 포함한다. 일부 예시들에서, WSB 호스트(20)는 스마트폰, 태블릿, 또는 다른 모바일 디바이스를 포함할 수 있다. 스마트폰들 및 태블릿들과 같은 모바일 디바이스들과 관련하여 주로 설명되지만, WSB 호스트(20)는 하나 또는 그 초과의 다른 디바이스들을 호스팅할 수 있는 임의의 전자 디바이스를 포함할 수 있고, 예를 들어, 가전제품들, 자동차들, 항공기, 선박 또는 본원에 설명된 기법들과 일치하는 데이터 트랜스퍼 성능들을 수행할 수 있는 임의의 다른 디바이스에 집적될 수 있다.
일부 실시예들에서, WSB 호스트(20)는 하나 또는 그 초과의 마이크로프로세서들, 디지털 신호 프로세서들(DSP들), 주문형 집적 회로(ASIC들), 필드 프로그래머블 게이트 어레이들(FPGA들), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합들로서 구현될 수 있다. 명료함을 목적으로 도시되지 않지만, WSB 호스트(20)는 SDRAM(synchronous dynamic random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), MRAM(magnetic random access memory), FLASH 메모리 등과 같은 RAM(random access memory)을 포함하는(그러나, 이에 한정되지 않음) 광범위한 휘발성 또는 비-휘발성 메모리 중 임의의 것으로 구성된 메모리를 포함할 수 있다. 메모리는, 오디오 데이터, 비디오 데이터뿐만 아니라 다른 종류들의 데이터를 저장하기 위한 컴퓨터-판독가능 저장 매체를 포함할 수 있다. WSB 호스트(20)는 또한 다양한 혼합기들, 필터들, 증폭기들 및 신호 변조를 위해 설계된 다른 컴포넌트들뿐만 아니라 데이터를 송신 및 수신하기 위해 설계된 하나 또는 그 초과의 안테나들 및 다른 컴포넌트들을 포함하는 송신기/수신기 유닛을 포함할 수 있다.
디스플레이(24)는, CRT(cathode ray tube), LCD(liquid crystal display), 플라즈마 디스플레이, LED(light emitting diode) 디스플레이, OLED(organic light emitting diode) 디스플레이, 또는 다른 유형의 디스플레이 디바이스와 같은 다양한 비디오 출력 디스플레이들 중 임의의 것을 포함할 수 있다. 이러한 또는 다른 예시들에서, 디스플레이는 발광 디스플레이 또는 투광 디스플레이일 수 있다. 일부 경우들에서, 디스플레이(24)는 WiFi 인에이블된 텔레비전 또는 하나 또는 그 초과의 무선 접속들로부터 미디어 데이터를 수신할 수 있는 다른 디바이스를 포함할 수 있다.
HID(28)는 다양한 입력 디바이스들을 포함할 수 있다. 예를 들어, HID(28)는 사용자가 WSB 호스트(20)와 상호작용하도록 허용하는 디바이스를 포함할 수 있다. HID는 일반적으로 마우스, 키보드, 트랙패드, 카메라 등을 포함할 수 있다. HID(28)는 유선 또는 무선 접속들을 통해서 WSB 호스트(20)와 통신할 수 있다. 예를 들어, HID(28)는 WSB 호스트(20)와의 무선 통신을 위해 인에이블된 WiFi 또는 블루투스일 수 있다.
WSB 허브(32)는 USB 디바이스들(36)과 같은 하나 초과의 다른 디바이스의 접속을 지원할 수 있고, USB 디바이스들(36)과 USB 호스트(20) 사이에서의 통신을 인에이블할 수 있다. WSB 허브(32)가 USB 표준들의 맥락에서 설명되지만, USB 허브는 오직 본 개시물과 일치하는 통신 허브의 일례이다. 도 1에 구체적으로 도시되지 않지만, WSB 허브(32)는 (앞서 WSB 호스트(20)와 관련하여 설명된 것들과 같이) 하나 또는 그 초과의 프로세서들 및 적어도 하나의 메모리를 포함할 수 있다.
도 1에 나타낸 예시에서, WSB 허브(32)는 WSB 호스트(20)를 접속하기 위한 단일의 "업스트림" 접속 및 USB 디바이스들(36)에 접속하기 위한 다수의 "다운스트림" 접속들을 갖는다. WSB 허브(32)는 컴퓨팅 디바이스(예를 들어, 스마트폰, 태블릿 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터, WiFi 인에이블 텔레비전, 등) 또는 주변 디바이스(예를 들어, 통합된 WSB 허브를 포함하는 USB 키보드 디바이스)와 같은 다른 디바이스에 집적될 수 있다.
통신 채널들(38)은 일반적으로, 도 1에 나타낸 디바이스들 사이에서 데이터를 송신하기 위한 임의의 적합한 통신 매체, 또는 상이한 통신 매체들의 집합을 나타낸다. 통신 채널들(38)은, WiFi, 블루투스 등과 유사한 비교적 단거리 통신 채널들을 포함할 수 있다. 그러나, 통신 채널들(38)은 이러한 점에 있어서 반드시 제한되는 것은 아니며, 라디오 주파수(RF) 스펙트럼 또는 하나 또는 그 초과의 물리적 송신 라인들과 같은 임의의 무선 또는 유선 통신 매체 또는 무선 매체와 유선 매체들의 임의의 조합을 포함할 수 있다.
다른 예시들에서, 통신 채널들(38)은 심지어 로컬 영역 네트워크, 광역 네트워크, 또는 인터넷과 같은 글로벌 네트워크와 같은 패킷-기반 네트워크의 일부를 형성할 수 있다. 도 1의 디바이스들은 표준들의 IEEE 1402.11 패밀리로부터의 표준과 같은 통신 프로토콜, 또는 임의의 다른 통신 프로토콜 또는 포맷을 이용하여 통신 채널들(38)을 통해 통신할 수 있다. 도 1의 디바이스들 중 임의의 것은, 디바이스들이 무선 액세스 포인트들 또는 소위 핫스팟들로 지칭되는 매개체를 이용하지 않고 서로 직접 통신하도록, 예를 들어, Wi-Fi 다이렉트 또는 Wi-Fi 디스플레이(WFD) 표준들에 따라서 통신할 수 있다. 디바이스들은 또한 네트워크 혼잡을 회피하거나 또는 감소시키기 위해 TDLS(tunneled direct link setup)을 확립할 수 있다. WFD 및 TDLS는 비교적 단거리 통신 세션들을 셋업하도록 의도된다. 잡음이 많은 또는 차단된(obstructed) 환경에서 디바이스들 사이의 거리가 심지어는 대략적으로 35 미터 미만, 또는 대략적으로 20 미터 미만과 같이 더 짧을 수 있지만, 이 맥락에서 비교적 짧은 거리는, 예를 들어, 대략적으로 70 미터 미만을 지칭할 수 있다. 통신 채널들(38)은 인프라스트럭쳐 지원될 수 있거나, 또는 피어-투-피어일 수 있다.
일부 실시예들에서, 도 1의 디바이스들 중 하나 또는 그 초과는, USB 표준 또는 WiFi와 같은 다른 무선 통신 표준에 따르는 유선 또는 무선 접속들을 통해서 통신한다. 예를 들어, 앞서 언급된 바와 같이, 도 1의 디바이스들은, USB 2.0 사양, USB 3.0 사양, (2010년 9월 9일자로 릴리즈되고, http://www.usb.org/developers/wusb/docs/에서 공개적으로 이용가능한) Wireless Universal Serial Bus Specification Revision 1.1, 또는 현재 이용가능하거나 또는 미래에 부상할 수 있는 다른 표준들 또는 독점 통신 사양들에 따라서 통신할 수 있다.
WSB 호스트(20)는 통상적으로 WSB 허브(32)를 통해서 USB 디바이스들(36) 사이에서의 통신을 용이하게 할 수 있다. 예를 들어, WSB 호스트(20)는 WSB 허브(32)를 통해서 USB 디바이스(36A)와 USB 디바이스(36B) 사이에서의 데이터 트랜스퍼를 용이하게 할 수 있다. 예를 들어, 도 1은 일반적으로 USB 디바이스(36A)와 USB 디바이스(36C) 사이에서 (점선 화살표들로 표현된) 데이터 플로우를 예시하고, 여기서 WSB 호스트(20)는 데이터 트랜스퍼를 용이하게 한다. 이 예시에서, (모바일 또는 다른 컴퓨팅 디바이스일 수 있는) WSB 호스트(20)의 사용자는 WSB 호스트(20)를 이용하여 USB 디바이스(36A)로부터 USB 디바이스(36C)로의 데이터 트랜스퍼를 개시할 수 있다.
예시의 목적을 위한 비-제한적인 예시에서, 이하 더욱 상세하게 설명되는 바와 같이, USB 디바이스(36A)는 카메라 또는 다른 미디어 디바이스일 수 있지만, USB 디바이스(36C)는 USB 디바이스(36A)에 의해 발생된 미디어를 저장하기 위한 저장 디바이스일 수 있다. 이러한 예시에서, 사용자는 WSB 호스트(20)를 이용하여 USB 디바이스(36A)로부터 USB 디바이스(36C)로 미디어 데이터의 트랜스퍼를 개시할 수 있다.
도 1에 도시된 바와 같이, WSB 호스트는 디바이스들 사이에서 데이터 트랜스퍼를 용이하게 한다. 즉, USB 디바이스(36A)는 WSB 허브(32)를 통해서 WSB 호스트(20)에 데이터를 송신한다. 다음으로, WSB 호스트(20)는 그 데이터를 WSB 허브(32)를 통해서 USB 디바이스(36C)로 라우팅한다. 이에 따라, 일부 예시들에서, 데이터는 USB 디바이스들(36A 및 36C) 사이에서의 단일 데이터 트랜스퍼를 위해서 WSB 허브(32)와 WSB 호스트(20) 사이에서의 (하나 또는 그 초과의 무선 링크들을 포함할 수 있는) 통신 채널들(38)을 따라 두 배로 트랜스퍼되어야만 한다.
앞서 설명된 예시에서, WSB 호스트(20)는, 오직 데이터 트랜스퍼를 용이하게 하고, 데이터의 의도된 수신인은 아니다. 이에 따라, WSB 허브(32)와 WSB 호스트(20) 사이에서 데이터를 트랜스퍼하는 것은, 딜레이, 전력 소모 및 대역폭 소모를 도입할 수 있다. 이러한 팩터들은 성능 및 사용자 경험을 저해할 수 있다.
본 개시물의 양상들은 일반적으로, 교환되는 데이터의 양 및/또는 WSB 호스트(20)와 WSB 허브(32) 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하거나 또는 제거하는 것에 관한 것이다. 즉, 도 1의 예시와 관련하여, 본 개시물의 양상들은 WSB 호스트(20)와의 상호작용을 제한하는 방식으로 WSB 허브(32)를 통해 USB 디바이스(36A 및 36C) 사이에서의 통신을 스트림라이닝하기 위한 기법들에 관한 것이다. 일부 예시들에서, WSB 호스트(20)가 USB 디바이스(36A)와 USB 디바이스(36C) 사이에서의 데이터의 모든 통신을 용이하게 하는 것 이외에, 본 개시물의 기법들은 이하에서 도 2와 관련하여 더욱 상세하게 설명되는 바와 같이 USB 디바이스(36A)와 USB 디바이스(36C) 사이에서의 데이터의 더욱 직접적인 교환을 제공하기 위해 WSB 허브(32)에 데이터가 재지향되도록 허용한다.
도 2는 도 1의 시스템을 예시하는 다른 블록도이다. 본 개시물의 양상들에 따르면, WSB 호스트(20)를 통해서 데이터를 라우팅하는 것 이외에, 데이터는 WSB 허브(32)에서 재지향될 수 있다. 즉, 도 2의 예시에서, WSB 호스트(20)는 USB 디바이스(36A)와 USB 디바이스(36C) 사이에서의 데이터 트랜스퍼를 개시할 수 있다. 그러나, WSB 호스트(20)를 통해서 데이터를 라우팅하는 것 이외에, 데이터가 WSB 허브(32)를 통해서 USB 디바이스(36A)와 USB 디바이스(36C) 사이에서 직접 트랜스퍼될 수 있도록, WSB 호스트(20)는 WSB 허브(32)에 데이터가 재지향되도록 야기할 수 있다.
교환되는 데이터의 양 및/또는 (WSB 허브(32)를 통해서) WSB 호스트(20)와 USB 디바이스들(36) 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, 데이터 트랜스퍼와 연관된 딜레이를 최소화시킬 수 있다. 예를 들어, WSB 호스트(20) 와 WSB 허브(32) 사이에서 데이터를 트랜스퍼하는 것을 회피하기 위해 또한 이러한 데이터 트랜스퍼와 연관된 딜레이를 회피한다. 더욱이, 데이터의 양 및/또는 WSB 호스트(20)와 USB 디바이스들(36) 사이에서 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, 데이터의 이러한 교환으로 인해 소모되는 대역폭의 양을 감소시키는데 도움을 줄 수 있다. 이에 더해, WSB 호스트(20)가 모바일 디바이스인 예시들에서, 데이터의 양 및/또는 USB 디바이스들(36)과 데이터가 교환되는데 이용되는 주파수를 제한하는 것은, (WSB 호스트(20)가 배터리 전력공급되는 예시들에서) WSB 호스트(20)의 배터리 수명을 최대화하는데 도움을 줄 수 있다.
일부 예시들에서, 본 개시물의 기법들은 이하의 도 3 내지 도 5와 관련하여 설명된 바와 같이 프로토콜 추상화 계층을 이용하여 달성될 수 있다.
도 3은, USB 디바이스와 통신하는 USB 호스트를 예시하는 블록도이다. 즉, 도 3의 예시는, 허브(56)를 통해서 USB 버스 인터페이스(50), USB 논리적 디바이스(52), 및 기능(54)(간략화를 위해 디바이스(48B)에서는 도시되지 않음)을 각각 갖는 물리적 디바이스들(USB 디바이스)(48A 및 48B)(집합적으로, 물리적 디바이스들(48))과 통신하는 관련 USB 호스트 컨트롤러(42), USB 시스템(44), 및 클라이언트(46)를 갖는 호스트 디바이스(USB 호스트)(40)를 포함한다.
호스트(40)는 일반적으로 USB 디바이스들의 부착 및 제거를 검출하고, 호스트 디바이스와 USB 디바이스들 사이에서의 제어 정보 및 데이터의 데이터 플로우를 관리하고, 그리고 데이터 트랜스퍼와 연관된 상태 액티비티 및 통계치들을 수집하는데 책임이 있다. 이에 따라, 호스트(40)는 통상적으로 USB에 대한 조정 엔티티(coordinating entity)로서 동작한다. 즉, 호스트(40)는 통상적으로 USB로의 액세스를 제어하고, 디바이스(48)는 오직 호스트(40)에 의해 액세스를 승인받음으로써 버스로의 액세스를 획득할 수 있다. 호스트(40)는 또한 통상적으로 USB의 토폴로지를 모니터링하는데 책임이 있다.
호스트(40)의 호스트 컨트롤러(42)는 USB 와이어에 부착 지점들을 제공하는 통합된 루트 허브(integrated root hub)를 포함할 수 있다. USB 시스템(44)은 호스트(40)와 디바이스(48) 사이에서 데이터 트랜스퍼들을 관리하기 위해 호스트 컨트롤러(44)를 이용한다. USB 시스템(44)과 호스트 컨트롤러(42) 사이의 인터페이스는 호스트 컨트롤러(42)의 하드웨어 정의에 의존할 수 있다. 호스트 컨트롤러(42)와 협력하는 USB 시스템(44)은, 호스트(40)와 디바이스(48) 사이의 접속 상에서 나타내는 USB 트랜잭션들과 데이터 트랜스퍼들의 클라이언트들의 뷰 사이에서의 번역(translation)을 수행할 수 있다. USB 시스템(44)은 또한 통상적으로, USB로의 클라이언트 액세스가 가능하게 되도록, 대역폭 및 버스 전력과 같은 USB 리소스들을 관리하는데 책임이 있다.
USB 시스템(44)은 일반적으로 호스트 컨트롤러 드라이버(HCD), USB 드라이버, 또는 호스트 소프트웨어를 포함하는 3개의 기본 컴포넌트들을 통합한다. HCD는, 디바이스(48)가 어떤 호스트 컨트롤러(42)에 접속되는지 인지하지 않고 호스트(40)가 디바이스(48)와 상호작용할 수 있도록, 다양한 호스트 컨트롤러 구현들을 USB 시스템(44)으로 맵핑한다. USB 드라이버(USBD)는 호스트(40)에 대한 기본 호스트 인터페이스(USBDI)를 디바이스(48)에 제공한다. HCD와 USBD 사이에서의 인터페이스는 호스트 컨트롤러 드라이버 인터페이스(HCDI)로 지칭될 수 있다. 특정 HCDI는 통상적으로, 다양한 호스트 컨트롤러 구현들을 지원하는 각각의 오퍼레이팅 시스템에 의해 정의된다. USBD는, 특정 파이프(예를 들어, 통신 채널(38))에 걸쳐 데이터를 이송하기 위한 요청으로 구성된 I/O 요청 패킷들(IRP들)의 형태로 데이터 트랜스퍼 메커니즘들을 제공한다. 데이터 트랜스퍼 메커니즘들을 제공하는 것에 더해, USBD는 구성 및 상태 관리를 위해 조작될 수 있는 디바이스(48)의 추상화를 호스트(40)에 제시하는데 책임이 있다.
클라이언트(46)는 USB 디바이스(48)와 직접 상호작용하는데 책임이 있는 소프트웨어 엔티티들을 포함한다. 디바이스(48)가 시스템에 부착될 때, 이 클라이언트(46)는 주변 하드웨어, 즉, 디바이스(48)와 직접 상호작용할 수 있다. USB의 공유 특징들은 호스트(40)와 디바이스(48) 사이에 USB 시스템(44)을 위치시킨다; 즉, 클라이언트는 통상적으로 디바이스의 하드웨어에 직접 액세스할 수 없다. 그 대신에, 클라이언트(46)는 요청들을 생성하고, 프로세싱을 위해 USB 드라이버 스택에 그 요청들을 제출하는 드라이버를 포함할 수 있다. 각각의 요청 내에서, 클라이언트 드라이버는 USB 요청 블록(URB; USB Request Block)으로 지칭된 가변-길이 데이터 구조를 제공한다. URB 구조는, 요청의 세부사항들을 설명하고, 또한 완료된 요청의 상태에 관한 정보를 포함한다. 예를 들어, 구성 요청과 같은 디바이스 특정 요청에 대해, 클라이언트(46)는 IRP와 연관된 URB를 이용하여 요청을 행한다. URB를 IRP와 연관시키는 것, 및 그 요청을 USB 드라이버 스택에 전송하는 것의 프로세스는 URB를 제출하는 것으로 지칭된다. URB를 제출하기 위해, 클라이언트 드라이버는 특정 디바이스 제어 코드를 이용할 수 있다. 제어 코드는, 클라이언트 드라이버가 자신의 디바이스 및 그 디바이스가 접속되는 포트를 관리하기 위해 이용하는 I/O 인터페이스를 제공할 수 있다.
이에 따라, 클라이언트(46)의 클아이언트 드라이버는 URB들을 통해서 데이터 트랜스퍼들을 포함하는 모든 디바이스-특정 동작들을 수행한다. 클라이언트 드라이버는, USB 드라이버 스택에 요청을 제출하기 전에 그 요청에 관한 정보를 이용하여 URB를 개시한다. 특정 유형들의 요청들의 경우, 클라이언트(46)에 의해 실행된 오퍼레이팅 시스템은 할당하는 헬퍼 루틴들 및 매크로들 및 URB 구조를 제공할 수 있고, 클라이언트 드라이버에 의해 제공된 세부사항들을 URB 구조의 필수적인 부재들에 채울 수 있다.
USB 디바이스(48)와 관련하여, 일반적으로, 디바이스(48)는 호스트(40)에 추가적인 기능을 제공할 수 있다. 디바이스(48)에 의해 제공되는 기능의 유형은, 디바이스(48)의 특정 구성 및 성능에 따라, 광범위하게 변화할 수 있다. 그러나, 모든 USB 디바이스들은 통상적으로 호스트(40)에게 동일한 기본 인터페이스를 제시한다. 이는, 호스트(40)가 동일한 방식으로 상이한 USB 디바이스들(48)의 USB-관련 양상들을 관리하도록 허용한다.
디바이스(48)는 디바이스(48)의 버스 인터페이스(50)를 통해서 호스트(40)와 통신한다. 디바이스(48)는 통상적으로, 자신의 기능(54)이 이용될 수 있기 전에, 구성되어야만 한다. 호스트(40)는 일반적으로 디바이스(48)를 구성하는데 책임이 있다. 호스트(40)는 통상적으로 디바이스의 성능들을 결정하기 위해 디바이스(48)로부터 구성 정보를 요청한다. 리포팅된 정보 중 일부는, 모든 논리적 디바이스들(52) 사이에서 공통이다. 다른 정보는 디바이스(48)에 의해 제공된 기능(54)에 특정된다. 이러한 정보의 상세화된 포맷은, 디바이스의 디바이스 클래스에 따라 변화할 수 있다.
도 3에 나타낸 예시에서, 허브(56)는 호스트(40)와 디바이스들(48) 사이에 접속된다. 허브(56)는 일반적으로 호스트(40)와 디바이스들(48) 사이에 인터페이스를 제공한다. 허브(56)는 통상적으로, 접속성 거동(connectivity behavior), 전력 관리, 디바이스 접속/접속해제 검출, 및 버스 결함 검출 및 복원을 지원할 수 있다. 일부 경우들에서, 허브(56)는 허브 리피터(hub repeater), 허브 컨트롤러, 및 트랜잭션 번역기를 포함할 수 있다. 허브 리피터는 접속성 셋업 및 해체(tear-down)에 대한 책임이 있을 수 있다. 허브 리피터는 또한 버스 결함 검출 및 복원 및 디바이스 접속/접속해제 검출과 같은 예외 처리(exception handling)를 지원할 수 있다. 허브 컨트롤러는, 호스트-투-허브 통신에 대한 메커니즘을 제공할 수 있다. 허브-특정 상태 및 제어 커맨드들은 호스트(40)가 허브를 구성하고 그리고 허브의 개별적인 다운스트림 페이싱 포트들(individual downstream facing ports)을 모니터링하고 제어하도록 허용한다. 트랜잭션 번역기는, 고속 분할 트랜잭션들에 응답하고, 이들을 다운스트림 페이싱 포트들에 부착된 전속력/저속 디바이스들을 통해 전속력/저속 트랜잭션들로 번역한다.
본 개시물의 양상들은 일반적으로 호스트(40)를 통해서 데이터를 라우팅하지 않고 디바이스들(48) 사이에 데이터 트랜스퍼를 제공하는 것에 관한 것이다. 그러나, 기법들은 이러한 데이터 트랜스퍼를 수행하기 위해 허브(56)에서 호스트(40)의 기능들을 에뮬레이팅하는 것을 포함하지 않는다. 즉, 디바이스(48)와의 트랜잭션들을 제어하기 위해 허브(56)에서 클라이언트(46) 및/또는 USB 시스템(44) 기능들이 미러링되지 않는다. 오히려, 일부 양상들에 따르면, 이하 더욱 상세하게 설명된 바와 같이, 프로토콜 스택은 호스트(40) 및/또는 허브(56)에서 구현될 수 있고, 이는 데이터를 호스트(40)를 통해 라우팅하지 않고 이러한 데이터를 하나의 디바이스(48)에서 다른 디바이스로 재지향되게 하는 것을 가능하게 한다.
도 4는, 호스트 및 허브에 의해 유지될 수 있는 무선 직렬 버스(WSB) 프로토콜 스택의 블록도이다. 예를 들어, 도 4는 WSB 호스트(80)(예를 들어, WSB 접속을 구현하는 모바일 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스) 및 WSB 허브(96)(예를 들어, 하나 또는 그 초과의 WSB 접속들을 구현하는 허브)에 대한 예시의 프로토콜 스택들을 예시한다. 일부 예시들에서, WSB 호스트 및 WSB 허브는 WiFi 접속을 통해서 통신할 수 있다. 이러한 예시들에서, 메시지들은 전송 제어 프로토콜(TCP)/인터넷 프로토콜(IP) 페이로드들로 캡슐화될 수 있고 그리고 디바이스들 사이에서 교환될 수 있다.
도 4에 도시된 예시에서, WSB 호스트(80)에 대한 스택은, 애플리케이션들 및 디바이스 드라이버들(82), 디바이스 드라이버들 마다의 USB(84), USB 코어 드라이버(86), VHCI(Virtual Host Controller Interface) 드라이버(88), 및 WSB 이송 계층(90)을 포함한다. WSB 허브(96)에 대한 스택은, 이송 계층(98), VHCI 드라이버(100), USB 코어 드라이버(102), USB 호스트 컨트롤러 드라이버(104), USB 호스트 컨트롤러(106)를 포함한다. 도 4는 또한 USB 디바이스들(110A 및 110B)(집합적으로 USB 디바이스(110))에 접속된 USB 허브(108)를 예시한다.
WSB 호스트(80)와 관련하여, 애플리케이션들 및 디바이스 드라이버들(82)은, 통상적으로 WSB 호스트(80)에 상주하고, 호스트에서 오퍼레이팅 시스템에 의해 실행될 수 있다. 디바이스 드라이버들 마다의 USB(84)는 특정 디바이스들에 드라이버들을 바인딩할 수 있고, 그 특정 디바이스들 각각은 고유 ID를 갖는다. USB 코어 드라이버(86)는, USB의 코어를 형성하는 하나 또는 그 초과의 드라이버들을 포함할 수 있고, USB 버스를 관리하는데 수반될 수 있다.
VHCI(88)는 (예를 들어, 도 3에 도시된 바와 같은) USB 호스트 컨트롤러 드라이버로서 구현될 수 있다. VHCI(88)는 원격 USB 디바이스들의 가상 부착/분리, 열거(enumeration) 및 초기화를 위해 실제 USB 호스트 컨트롤러 인터페이스를 에뮬레이팅할 수 있다. VHCI(88)는, USB 요청 블록들(URB 메시지들)을 캡슐화할 수 있고, 그후 요청들을 WSB 허브(96)와 같은 원격 서버 호스트들에 송신할 수 있다. 이송 계층(90)은 이송을 위해 WSB 호스트(80)로부터 메시지들을 캡슐화하는데 책임이 있을 수 있다. 예를 들어, 이송 계층(90)은 WSB 허브(98)로의 송신 이전에 USB I/O 메시지들을 TCP/IP 페이로드들로 캡슐화할 수 있다.
WSB 허브(96)에 관련하여, 이송(98)은 WSB 호스트(80)로부터 수신된 메시지들을 디캡슐화할 수 있다. 이에 더해, VHCI(98)는 URB 메시지들을 USB 요청들로 디캡슐화할 수 있고, 그 요청들을 WUB 허브(98)의 드라이버들에 제출할 수 있다. USB 코어 드라이버(102)는, WSB 허브(96)에서 USB의 코어를 형성하는 하나 또는 그 초과의 드라이버들을 포함할 수 있고, USB 버스를 관리하는데 수반될 수 있다. 도 3과 관련하여 앞서 설명된 바와 같이, USB HCD(104)는 WSB 호스트(80)에서 호스트 컨트롤러의 구성을 인지하지 않고 WSB 호스트(80)가 WSB 허브(96)와 상호작용하도록 허용하기 위해 다양한 호스트 컨트롤러 구현들을 맵핑할 수 있다. USB 호스트 컨트롤러(106)는 USB 허브(108)로의 데이터의 이송을 제어하고, 그 후 그 데이터를 USB 디바이스들(110)에 제공하는데 책임이 있을 수 있다.
데이터는, 도 4에 도시된 시스템을 이용하여 USB 디바이스(110A)로부터 USB 디바이스(110B)로 트랜스퍼될 수 있다. 예를 들어, 애플리케이션들 및 디바이스 드라이버들(82)은 데이터 트랜스퍼를 개시할 수 있다. USB 디바이스(110A)는 데이터를 USB 허브(108)에 트랜스퍼할 수 있고, 그후 그 데이터를 WSB 허브(96)에 있는 스택을 통해서 통과시킨다. 그후, 데이터는 WSB 허브(96)로부터 WSB 호스트(80)로 트랜스퍼되고, WSB 호스트(80)에 있는 스택을 통해 통과한다. 그후, 데이터는 WSB 호스트(80)로부터 WSB 허브(96) 및 USB 허브(108)를 통해서 USB 디바이스(110B)로 다시 통과된다. 이러한 방식으로, 데이터는 USB 디바이스(110A)로부터 USB 디바이스(110B)로 전체 버스를 가로지른다. 이하에 설명된 바와 같이, 본 개시물의 양상들은 일반적으로 더욱 효율적인 데이터 트랜스퍼를 제공하기 위해 USB 디바이스(110A)와 USB 디바이스(110B) 사이의 데이터 경로를 단축시키는 것에 관한 것이다. 즉, 본 개시물의 양상들에 따르면, 데이터는 WSB 허브(96)에 재지향될 수 있고, 이는 WSB 호스트(80)와 교환되는 데이터의 양을 감소시키거나 또는 제거한다.
도 5는 본 개시물의 특정 기법들을 구현하기 위해 이용될 수 있는 무선 직렬 버스 프로토콜 스택의 다른 블록도이다. 도 4에 도시된 컴포넌트들에 더해, 도 5의 예시는 또한 USB 재지향 애플리케이션(120), WSB 재지향 클라이언트(124), 및 WSB 재지향 서버(128)를 포함한다. 본 개시물의 일부 양상들에 따르면, USB 재지향 애플리케이션(124), WSB 재지향 클라이언트(124), 및 WSB 재지향 서버(128)는, WSB 호스트(80)를 통해서 데이터를 라우팅하지 않고 USB 디바이스들(110) 사이에서 데이터를 재지향하는데 이용될 수 있다.
예를 들어, WSB 호스트(80)에 상주하는 USB 재지향 애플리케이션(120)은, WSB 허브(96)에서 데이터 재지향을 개시하고 유지하는데 책임이 있을 수 있다. USB 재지향 애플리케이션은, 일부 경우들에서, 데이터 재지향에 적합한 디바이스들의 리스트(또는 디바이스들의 클래스들)를 유지할 수 있다. 다른 경우들에서, USB 재지향 애플리케이션(120)은 사용자 선택 디바이스들 사이에서 통신을 재지향하도록 구성가능한 사용자일 수 있다. 임의의 경우, 재지향에 적합한 디바이스들은 광범위한 USB 디바이스들을 포함할 수 있다. 예시들은, 미디어 디바이스들, 저장 디바이스들, 및/또는 디스플레이들을 포함한다. USB 재지향 애플리케이션(120)은, (WSB 호스트(80)에 의해 열거된 후) WSB 허브(96)에 하나 초과의 자격을 갖춘(qualified) USB 디바이스가 접속될 때 자동으로 재지향을 개시할 수 있다.
WSB 재지향 클라이언트(124) 및 WSB 재지향 서버(128)는 재지향 접속을 유지할 수 있다. 예를 들어, WSB 재지향 클라이언트(124) 및 WSB 재지향 서버(128)는, 사실상 데이터가 WSB 허브(96)에 재지향되고 있을 때 (도 4와 관련하여 앞서 설명된 바와 같이, WSB 호스트(80)를 수반하는) 정상 데이터 트랜스퍼가 마치 발생하는 것처럼 애플리케이션들 및 디바이스 드라이버들(82)에 보이게 하는데 책임이 있을 수 있다. 일부 실시예들에서, WSB 재지향 클라이언트(124) 및 WSB 재지향 서버(128)는 WSB 재지향 클라이언트(124)와 WSB 재지향 서버(128) 사이에서의 일련의 URB 메시지들을 이용하여 이 임무를 달성할 수 있다. 예를 들어, 이하의 도 8 및 도 9와 관련하여 더욱 상세하게 설명된 바와 같이, WSB 재지향 클라이언트(124)는 트랜스퍼될 데이터에 대한 URB 요청들을 행할 수 있다. WSB 재지향 서버(128)는, 데이터가 트랜스퍼된 후 확인응답들을 전송하고, 이에 의해 애플리케이션들 및 디바이스 드라이버들(82)을 이용하여 정확한 운영 상태를 유지한다.
이러한 방식으로, WSB 재지향 클라이언트(124) 및 WSB 재지향 서버(128)는, WSB 호스트(80)의 드라이버들 및 기능들이 미러링되거나 또는 그렇지 않으면 WSB 허브(96)에 의해 수행되지 않고, USB 디바이스(110A)와 USB 디바이스(110B) 사이에서 트랜스퍼되는 데이터를 재지향할 수 있다. 예시의 목적을 위한 예시에서, 이 기법들은 WiFi 디스플레이(WFD) 애플리케이션에 이용될 수 있다. 예를 들어, WFD는 실시간 비디오 데이터 트랜스퍼에 대해 1-홉 무선 링크를 제공하기 위해 (예를 들어, 독립적인 기본 서비스 세트(IBSS) 무선 로컬 영역 네트워크(WLAN) 대신에) 피어-투-피어(P2P) 상에서 설계될 수 있다. 멀티-홉 무선 시스템을 통한 비디오 트래픽은, 실시간 애플리케이션들에 요구되는 성능을 제한할 수 있다. 본 개시물의 양상들에 따르면, USB 디바이스(110A)는 앞서 설명된 재지향 기법들 및 WFD를 이용하여 USB 디바이스(110B)로부터 미디어 데이터를 수신하는 디스플레이 디바이스를 포함할 수 있다. 일부 경우들에서, WSB에 대한 등시성(isochronous) 모드 USB 데이터 트랜스퍼에 대한 성능은 유선 USB의 성능과 일치할 수 있다.
도 4 및 도 5는 일반적으로 WiFi 접속을 통해서 수행되고 있는 것으로서 본원에서 설명되지만, 기법들이 다른 무선 통신 기술들과 함께 이용될 수 있다는 것을 이해해야 한다. 예를 들어, 이 개시물의 기법들은, 일례에서, 무선 USB(WUSB) 통신 표준을 구현하는 시스템들에서 구현될 수 있다.
도 6은, 본 개시물의 기법들을 구현할 수 있는 허브를 포함하는 무선 통신을 위한 시스템을 예시하는 개념도이다. 도 6의 예시는, 호스트(모바일 디바이스로서 도 6에 도시됨)(140), WSB 허브(144), 카메라(148), 저장 디바이스(152), 및 디스플레이(156)를 포함한다. 도 6에 도시된 컴포넌트들은 오직 예시의 목적으로 제공되고, 본 개시물의 기법들은 도 6에 도시된 컴포넌트들 이외의 컴포넌트들을 이용하여 수행될 수 있다는 것을 이해해야 한다.
모바일 디바이스(140)는, 예를 들어, 태블릿 컴퓨터 또는 스마트폰을 포함하는 다양한 전자 디바이스들을 포함할 수 있다. 도 6에 도시된 예시에서, 모바일 디바이스(140)는 WSB 호스트로서 동작할 수 있고, 본 개시물의 다른 곳에서 WSB 호스트와 관련하여 설명된 동작들을 수행할 수 있다. 예를 들어, 모바일 디바이스(140)는, 직렬 버스를 통해서 접속된 하나 또는 그 초과의 USB 디바이스들과 같은, 버스를 통해서 접속된 하나 또는 그 초과의 다른 디바이스들을 무선으로 호스팅할 수 있다. 도 6에 도시된 예시에서, 모바일 디바이스(140)는 무선 접속(예를 들어, 다른 무선 표준들이 이용될 수 있지만, WiFi 접속으로서 도 4c에 도시됨)을 통해서 WSB 허브(144)와 통신한다.
모바일 디바이스(140)로의 접속에 더해, WSB 허브(144)는 카메라(148), 저장 디바이스(152), 및 디스플레이(156)로의 접속을 지원한다. 예를 들어, WSB 허브는 모바일 디바이스(140)가 카메라(148), 저장 디바이스(152), 및 디스플레이(156) 각각과 통신하도록 허용한다. 일부 실시예들에서, WSB 허브(144)는 USB 표준과 같은 하나 또는 그 초과의 표준들에 따라서 접속들을 지원할 수 있다. 이에 더해, 본 개시물의 양상들에 따르면, WSB 허브(144)는 또한 카메라(148), 저장 디바이스(152), 및 디스플레이(156) 사이에서의 데이터의 직접 트랜스퍼를 지원할 수 있다.
카메라(148)는 정지(still) 이미지들 또는 비디오를 캡쳐할 수 있다. 일부 예시들에서, 카메라(148)는, 컴퓨팅 디바이스(예를 들어, 모바일 디바이스, 태블릿 컴퓨터 등)와 같은 다른 디바이스에 통합될 수 있다. 저장 디바이스(152)는 컴퓨터-판독가능, 머신-판독가능, 또는 프로세서-판독가능 저장 매체를 포함할 수 있다. 일부 실시예들에서, 저장 디바이스(152)는, 카메라(148)에 의해 캡쳐된 정지 이미지들 또는 비디오와 같은 미디어 데이터를 저장할 수 있다. 디스플레이(156)는 비디오 데이터, 이미지들, 텍스트 또는 뷰어에 의해 소모하기 위한 임의의 다른 유형의 데이터를 디스플레이할 수 있는 컴포넌트를 나타낸다. 디스플레이(156)의 예시들은, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 LED(OLED), 액티브-매트릭스 OLED(AMOLED) 디스플레이, 등을 포함한다.
예시의 사용 시나리오에서, 사용자는 WSB 허브(144)를 통해서 모바일 디바이스(140)를 이용하여 카메라(148), 저장 디바이스(152), 및 디스플레이(156)에 액세스할 수 있다. 즉, 예를 들어, 사용자는 카메라(148)로부터의 이미지 데이터를 디스플레이(156) 상에 프리뷰되도록 야기하기 위해 모바일 디바이스(140)를 이용할 수 있다. 이에 더해, 카메라로부터 이미지 데이터를 프리뷰한 후, 사용자는 카메라(148)로부터의 이미지 데이터가 저장 디바이스(152) 상에 저장되도록 야기하기 위해 모바일 디바이스(140)를 이용할 수 있다. 이러한 시나리오에서, 모바일 디바이스(140)는, 카메라(148), 저장 디바이스(152), 및 디스플레이(156)를 호스팅하고, 디바이스들 사이에서 데이터의 트랜스퍼를 개시한다.
본 개시물의 양상들에 따르면, 모바일 디바이스(140)는 데이터가 모바일 디바이스(140)를 통해서 라우팅되지 않고 카메라(148), 저장 디바이스(152), 및/또는 디스플레이(156) 사이에서 트랜스퍼되도록 야기할 수 있다. 예를 들어, 앞서 언급된 바와 같이, 모바일 디바이스(140)를 통해서 데이터를 라우팅하는 것 대신에, 데이터는 WSB 허브(144)에 재지향될 수 있고, 이에 의해 카메라(148)와 저장 디바이스(152) 또는 디스플레이(156) 사이에서 데이터를 직접 트랜스퍼할 수 있다.
일부 예시들에서, 일부 데이터는 모바일 디바이스(140)와 카메라(148), 저장 디바이스(152), 및/또는 디스플레이(156) 사이에서 여전히 라우팅될 수 있다. 예를 들어, 부착된 디바이스들 또는 다른 메타데이터를 식별하는 일정 데이터는 모바일 디바이스(140)에 계속해서 라우팅될 수 있다. 이하 더욱 상세하게 설명되는 바와 같이, 모바일 디바이스(140)는 부착된 디바이스들과의 접속들을 유지하기 위해 이러한 데이터를 이용할 수 있다. 그러나, 본 개시물의 양상들에 따르면, 다른 데이터(예를 들어, 페이로드 데이터)는 부착된 디바이스들 사이에서 직접 트랜스퍼될 수 있다.
이러한 방식으로, 모바일 디바이스(140)에 의한 전력 소모는 감소될 수 있다. 이에 더해, 부착된 디바이스들 사이에서의 데이터 트랜스퍼는, 무선 채널을 통해서 더 적은 데이터가 통신되기 때문에, (모바일 디바이스(140)와 WSB 허브(144) 사이에서의 접속에 있어서의 변동들과 같은) 무선 채널 변동들에는 덜 민감할 수 있다.
도 7은, 본 개시물의 기법들을 구현할 수 있는 허브를 포함하는 무선 통신을위한 다른 시스템을 예시하는 개념도이다. 예를 들어, 도 7에 도시된 시스템은 일반적으로 디스플레이(184)와 무선으로 통신하는 (스마트폰과 같은 도 7에 도시된) 무선 직렬 버스(WSB) 호스트(180)를 포함한다. 디스플레이(184)는 휴먼 인터페이스 디바이스(HID)(188), 카메라(190), 및 저장 디바이스(192)와의 USB 접속들을 제공하는 WSB 허브를 포함한다. 디스플레이(184)와 디바이스들(188-192) 사이에서의 접속들은 유선 또는 무선 접속들일 수 있다. 도 7의 디바이스들은 오직 예시의 목적으로 제공되고, 다른 컴퓨넌트들이 본 개시물의 기법들을 수행하기 위해 이용될 수 있다는 것을 이해해야 한다.
이 예시에서, 사용자는 디스플레이(184)를 통해서 호스트(180)를 이용하여 카메라(190) 및 저장 디바이스(192)에 액세스할 수 있다. 즉, 예를 들어, 사용자는 카메라(190)로부터의 이미지 데이터가 디스플레이(184) 상에 프리뷰되도록 야기하기 위해 호스트(180)를 이용할 수 있다. 이에 더해, 카메라(90)로부터 이미지 데이터를 프리뷰한 후, 사용자는 카메라(190)로부터의 이미지 데이터가 저장 디바이스(192) 상에 저장되도록 야기하기 위해 호스트(180)를 이용할 수 있다. 이 시나리오에서, 호스트(180)는 카메라(190), 저장 디바이스(192), 및 디스플레이(184)를 호스팅하고, 디바이스들 사이에서 데이터의 트랜스퍼를 개시한다. 일부 예시에서, 호스트(180)는 WiFi(예를 들어, WiFi 디스플레이) 또는 다른 무선 매체를 통해서 디스플레이(184)와 통신할 수 있다.
도 6과 관련하여 앞서 언급된 바와 같이, 본 개시물의 양상들에 따르면, 호스트(180)는 데이터가 호스트(180)를 통해서 라우팅되지 않고 카메라(190), 저장 디바이스(192), 및/또는 디스플레이(184) 사이에서 트랜스퍼되도록 야기할 수 있다. 예를 들어, 호스트(180)를 통해서 데이터를 라우팅하는 것 대신에, 데이터는 디스플레이(184)(WSB 허브를 포함)에 재지향될 수 있고, 이에 의해 카메라(190)와 저장 디바이스(192) 사이에서 데이터를 직접 트랜스퍼할 수 있다. 이러한 방식으로, 디바이스들 사이에서의 데이터 트랜스퍼와 연관된 레이턴시들이 감소될 수 있다. 이에 더해, 호스트(180)에 의한 전력 소모도 또한 감소될 수 있다. 더욱이, 디바이스들 사이에서의 데이터 트랜스퍼는 무선 채널 변동들에 덜 민감할 수 있다.
도 8은 본 개시물의 기법들을 구현하는 무선 시스템에서 메시지들의 예시의 플로우를 예시하는 개념적인 메시지 통신 도면이다. 예를 들어, 도 8은, 도 5에 도시된 USB 재지향 애플리케이션, WSB 재지향 클라이언트, 및 WSB 재지향 서버를 이용하여 컴포넌트들 사이에서 송신될 수 있는 메시지들의 예시의 플로우를 예시한다. 도 8의 예시가 "USB 카메라" 및 "USB 저장소"를 지칭하지만, 본 개시물의 기법들은 이러한 방식으로 제한되는 것은 아님을 이해해야 한다. 예를 들어, WSB 허브에 접속된 다른 UBS 디바이스들은 데이터를 교환하기 위해 본 개시물의 기법들을 구현할 수 있다.
일부 실시예들에서, 재지향되고 있는 데이터는 지연에 민감한 데이터일 수 있다. 예를 들어, 카메라 및/또는 저장 디바이스와 디스플레이 디바이스 사이에서 통신되고 있는 미디어 데이터는, 데이터가 일정 시간 기간 내에 전달되어야만 하거나 또는 일정 결함들(예를 들어, 셔터, 블록화현상(blockiness) 등)이 디스플레이된 데이터에 보여질 수 있는 의미로 지연에 민감할 수 있다.
어느 경우든, 본 개시물의 양상들에 따르면, 데이터 재지향은 URB 트랜잭션 계층, 즉, URB 메시지들을 처리하는데 책임이 있는 계층에서 (도 5에 도시된 WSB 호스트(80)와 같은) 호스트 및 (WSB 허브(96)와 같은) 허브를 이용하여 수행될 수 있다. 일반적으로, 앞서 언급된 바와 같이, URB는 USB 트랜잭션을 실행하고 데이터 및/또는 상태 블록을 전달하기 위해 관련 정보로 구성될 수 있다. 각각의 URB는, 그 액션이 성공적으로 완료되거나 또는 취소된 후에 호출될 수 있는 완료 핸들러(completion handler)를 가질 수 있다. URB는 또한 완료 핸들러로 정보를 통과시키기 위한 콘텍스트 포인터를 포함할 수 있다. 디바이스에 대한 각각의 종점은 논리적으로 요청들의 큐를 지원할 수 있다. 드라이버가 다른 액션의 완료를 핸들링하면서 USB 하드웨어가 종점에 데이터를 여전히 트랜스퍼할 수 있도록, 큐가 채워질 수 있다. 이는, USB 대역폭의 이용을 최대화할 수 있다.
본 개시물의 양상들에 따르면, WSB 호스트 디바이스 상에 상주하는 애플리케이션은 (도 5에 도시된 애플리케이션(120)과 같은) 메시지 재지향을 개시할 수 있다. 예를 들어, 애플리케이션은 데이터 재지향에 적합한 디바이스들(또는 디바이스들의 클래스들)의 리스트를 유지할 수 있다. 일부 실시예들에서, 앞서 설명된 바와 같이, 이러한 디바이스들은 미디어 디바이스들, 저장 디바이스들, 및/또는 디스플레이들을 포함할 수 있다. 애플리케이션은, 하나 초과의 자격을 갖춘 USB 디바이스가 WSB 허브에 접속될 때 재지향을 자동으로 개시할 수 있다.
도 8의 예시는 일반적으로 USB 카메라와 USB 저장 디바이스 사이에서 트랜스퍼되는 데이터를 예시한다. 이하의 도 8의 설명은 도 8의 상단부로부터 도 8의 하단부로 발생 순서대로(chronological order) 진행할 것이다. 도 8의 상단부에 있는 점선은, 호스트 디바이스 드라이버들을 통해서 트랜스퍼하는 데이터를 포함하는, USB 카메라와 USB 저장 디바이스 사이에서의 통상적인 데이터 플로우를 예시한다. 도 8에 도시된 각각의 화살표는 직렬 버스 상에서 정지를 나타낸다. 즉, 이하 설명된 바와 같이, 각각의 화살표에 위치된 컴포넌트는 메시지들과 상호작용한다(예를 들어, 메시지를 캡슐화하고, 메시지를 디캡슐화하고, 메시지를 판독/해석하는 식이다).
본 개시물의 양상들에 따르면, 카메라 및 저장 디바이스가 허브에 접속될 때, (WSB 호스트에 있는) WSB 재지향 클라이언트는 재지향 접속을 확립하기 위해 재지향 구성 요청을 (WSB 허브에 있는) WSB 서버에 전송할 수 있다("재지향 구성 요청"). WSB 서버는 구성 요청에 동일하게(in kind) 응답할 수 있다("재지향 구성 응답"). 일반적으로, 재구성 요청 및 응답은, 호스트 디바이스를 포함하지 않는, (USB 허브를 통한) USB 카메라와 USB 저장 디바이스 사이에서의 접속을 셋업할 수 있다. 예를 들어, 구성 요청 및/또는 응답은, WSB 허브에 접속된 디바이스들, 디바이스들이 접속되는 WSB 허브의 포트들 등을 식별하는 데이터를 포함할 수 있다. 이에 따라, 재구성 요청 및 응답은 재지향 접속을 이용하여 이들 사이에서 데이터가 트랜스퍼될 포트들을 식별하는데 이용될 수 있다. 즉, 일부 예시들에서, 재지향 구성 요청 및 응답은 이들 사이에서 데이터가 라우팅될 USB 어드레스들을 확립한다.
재지향 접속을 셋업한 후, USB 저장 디바이스에 대한 디바이스 드라이버는 트랜스퍼를 위한 데이터의 특징들을 설명하는 데이터(예를 들어, 메타데이터)를 전송할 수 있다. 이 데이터는, 예를 들어, 데이터의 양, 데이터에 대한 파일명, 데이터를 저장할 디렉토리, 데이터를 저장할 USB 저장 디바이스의 하드 드라이브 상의 섹터, 데이터를 저장하는 어드레스 등을 포함할 수 있다.
재지향 접속을 확립하고 메타데이터를 교환한 후, WSB 호스트는 재지향 세션을 시작(commence)할 수 있다. 예를 들어, WSB 호스트는, WSB 허브가 특정한 데이터(예를 들어, 미디어 데이터, 또는 다른 사전정의된 데이터)를 구성된 재지향 접속에 따라 재지향시켜야하는 것으로 나타내는 트리거를 WSB 허브에 전송할 수 있다("재지향 트리거"). 일부 예시들에서, WSB 호스트는, 앞서 설명된 데이터가 교환된 후, 자동으로 트리거를 전송할 수 있다.
임의의 경우, 트리거를 수신한 후, WSB 호스트는 WSB 허브에 접속된 디바이스들 사이에서의 데이터 트랜스퍼를 개시하기 위해 WSB 서버에 URB 요청을 전송할 수 있다("WSB 재지향 클라이언트에 의한 URB 요청"). 즉, WSB 호스트에 (카메라 또는 저장소에 대한 디바이스 드라이버들과 같은) 디바이스 드라이버에 의해 발행되는 디바이스 트랜스퍼의 요청 이외에, WSB 서버는 이러한 요청을 행할 수 있다. 그러나, 본 개시물의 양상들에 따르면, WSB 호스트에서 디바이스 드라이버들에 대한 어떠한 변화들도 요구되지 않는다. 즉, WSB 호스트는, 마치 데이터가 WSB 호스트를 통해서 라우팅되고 있었던 것처럼, 디바이스 드라이버들과의 통신을 유지할 수 있다. URB 요청은 USB 카메라와 USB 저장소 사이에서 트랜스퍼될 데이터의 양(또는 "크기")를 나타낼 수 있다. 즉, URB 요청은, 얼마나 많은 데이터가 USB 카메라와 USB 저장소 사이에서 트랜스퍼되어야 하는지 나타낼 수 있다.
URB 요청을 수신한 후, WSB 재지향 서버는 카메라와 저장소 사이에서 데이터 트랜스퍼를 수행할 수 있다. 즉, USB 카메라는 WSB 재지향 서버에 데이터를 전송할 수 있다("카메라 데이터"). WSB 재지향 서버는 그후, 데이터가 호스트 디바이스를 통해서 라우팅되도록 허용하지 않고, 데이터를 저장소에 재지향시킬 수 있다("저장 데이터").
본 개시물의 양상들에 따르면, 미리결정된 데이터 트랜스퍼가 발생한 후, WSB 서버는 확인응답 또는 다른 메시지를 WSB 클라이언트에 전송할 수 있다("재지향 ack"). 확인응답은 얼마나 많은 데이터가 트랜스퍼되었는지 나타낼 수 있다. WSB 서버는 WSB 호스트에서 디바이스 드라이버들을 이용하여 적절한 상태를 유지하기 위해 확인응답을 이용할 수 있다. 이러한 방식으로, WSB 호스트는 모든 각각의 성공적인 데이터 재지향에 대해 통지받는다.
WSB 재지향 클라이언트 및 WSB 재지향 서버는, 모든 요청된 데이터가 트랜스퍼될 때까지 이러한 방식으로 계속해서 통신할 수 있다. 예를 들어, WSB 재지향 클라이언트는, 요청을 전송하고("WSB 재지향 클라이언트에 의한 URB 요청"), 그후 디바이스들 사이에서 교환되는 데이터를 전송하고("카메라 데이터" 및 "저장소 데이터"), 그후 확인응답을 전송할 수 있다("재지향 ack"). 다른 예시들은 도 8에 도시된 것보다 더 많이 또는 더 적게 가질 수 있지만, 이 프로세스는 도 8의 예시에서 3번 완료되는 것으로 도시된다.
일부 예시들에서, WSB 재지향 클라이언트는, WSB 재지향 클라이언트가 반응으로(in return) 확인응답을 수신하는 것으로 가정하면, URB 요청을 계속해서 전송할 수 있다. (디바이스들 또는 타임아웃으로부터 수신된 표시들에 기초하여 WSB 재지향 서버에 의해 결정된 바와 같이) 모든 데이터가 트랜스퍼된 후, WSB 재지향 서버는 재지향 세션을 종료하기 위해 WSB 재지향 클라이언트에 메시지를 전송할 수 있다. 예를 들어, 확인응답을 전송하는 것 이외에, WSB 재지향 서버는 WSB 재지향 클라이언트에 부정 확인응답 또는 다른 메시지를 전송할 수 있다("재지향 nack").
부정 확인응답(또는 일부 다른 경우, 예를 들어, 데이터 트랜스퍼에서 딜레이로 인한 타임아웃)을 수신하면, WSB 재지향 클라이언트는 지시받은(directed) 세션을 종결하기 위한 요청을 전송할 수 있다("재지향 철회 요청"). 재지향 접속을 종결하기 위한 요청을 수신하면, WSB 재지향 서버는 확인을 통해 응답할 수 있다("재지향 철회 응답").
앞서 언급된 바와 같이, 도 8의 예시는 "USB 카메라" 및 "USB 저장소"를 지칭하지만, 본 개시물의 기법들이 이러한 방식으로 제한되지 않는다는 것을 이해해야 한다. 예를 들어, WSB 허브에 접속된 다른 USB 디바이스들은 데이터를 교환하기 위해 본 개시물의 기법들을 구현할 수 있다. 더욱이, 도 8에 도시된 메시지들의 시퀀스는 예시이며, 기법들은 도 8에 도시된 순서로 반드시 수행될 필요는 없으며, 더 적은, 추가적인, 또는 대안적인 단계들이 수행될 수 있다.
도 9는, 본 개시물의 기법들을 구현하는 무선 시스템에서 메시지들의 다른 예시의 플로우를 예시하는 개념적인 메시지 통신 도면이다. 도 9는 도 8과 동일한 컴포넌트들의 배열을 예시한다. 그러나, 도 9의 예시에서, "더미 데이터"는 USB 디바이스 드라이버들 사이에서의 트랜스퍼를 위해 WSB 재지향 클라이언트에서 이용된다. 즉, 데이터 그 자체를 송신하는 것 이외에, 더미 데이터는, WSB 호스트에서 디바이스 드라이버들을 이용하여 적절한 상태를 유지하도록 이용될 수 있고, WSB 서버에 전송하지 않고 폐기될 수 있다.
도 8에서와 같이, 도 9에 도시된 각각의 화살표는 직렬 버스 상에서의 정지를 나타낸다. 즉, 이하 설명된 바와 같이, 각각의 화살표에 위치된 컴포넌트는 메시지와 상호작용한다(예를 들어, 메시지를 캡슐화하고, 메시지를 디캡슐화하고, 메시지를 판독/해석하는 식이다).
도 9의 예시에서, 본 개시물의 양상들에 따르면, 카메라 및 저장 디바이스가 허브에 접속되면, (WSB 호스트에 있는) WSB 재지향 클라이언트는 재지향 접속을 확립하기 위해 재지향 구성 요청을 (WSB 허브에 있는) WSB 서버에 전송할 수 있다("재지향 구성 요청"). WSB 서버는 구성 요청에 동일하게 응답할 수 있다("재지향 구성 응답"). 일반적으로, 재구성 요청 및 응답은, 호스트 디바이스를 포함하지 않는, (USB 허브를 통해) USB 카메라와 USB 저장 디바이스 사이에 접속을 셋업할 수 있다. 예를 들어, 구성 요청 및/또는 응답은, WSB 허브에 접속된 디바이스들, 디바이스들이 접속되는 WSB 허브의 포트들 등을 식별하는 데이터를 포함할 수 있다. 이에 따라, 재구성 요청 및 응답은, 이들 사이에서 어떤 데이터가 재지향 접속을 이용하여 트랜스퍼될 포트들을 식별하는데 이용될 수 있다. 즉, 일부 예시들에서, 재지향 구성 요청 및 응답은, 이들 사이에서 데이터가 라우팅될 USB 어드레스들을 확립한다.
다음으로, 카메라에 대한 디바이스 드라이버는, 카메라로부터의 데이터 트랜스퍼를 요청하는 URB 요청을 WSB 재지향 서버에 전송한다("URB 요청"). WSB 재지향 서버는, 카메라로부터 데이터를 수신하고("카메라 데이터"), WSB 재지향 클라이언트에 확인응답 메시지를 전송한다("재지향 ACK(크기 정보)"). 확인응답 메시지는, 일부 경우들에서, (카메라로부터) WSB 재지향 서버에 의해 수신된 데이터에 관한 정보를 포함할 수 있다. 즉, WSB 재지향 서버는 재지향될 카메라로부터 전송된 카메라 데이터의 양에 관한 정보를 제공할 수 있다.
WSB 재지시 클라이언트는 드라이버의 적절한 동작 상태를 유지하기 위해 USB 카메라에 대한 드라이버에 이러한 정보를 통과시킬 수 있다("URB ACK(더미)"). 즉, WSB 재지향 서버는 얼마나 많은 데이터가 트랜스퍼되고 있는지 WSB 재지향 클라이언트에 통지할 수 있다. 일부 예시들에서, WSB 재지향 클라이언트는 USB 카메라에 대한 디바이스 드라이버에 통과시키기 위해 적절한 크기의 데이터(더미 데이터)를 발생시킬 수 있다("URB ACK(더미)"). 일부 실시예들에서, 이러한 더미 데이터는 URB 메시지의 형태로 제공될 수 있다. 더미 데이터는, 이 더미 데이터가 적절한 크기인 한, 비트들의 임의의 스트링을 나타낼 수 있다.
다음으로, USB 저장소에 대한 드라이버는, USB 저장소에 트랜스퍼될 데이터의 특징들에 관한 데이터를 통과시킬 수 있다("저장소 메타데이터"). 데이터는, 예를 들어, 데이터의 파일명, 데이터를 저장할 디렉토리, 데이터를 저장할 USB 저장 디바이스의 하드 드라이브 상의 섹터, 데이터를 저장하는 어드레스 등을 포함할 수 있다.
저장 메타데이터가 트랜스퍼된 후, USB 저장소에 대한 드라이버는 데이터 트랜스퍼를 개시할 수 있다. 예를 들어, USB 저장소에 대한 드라이버는, 마치 USB 저장소 디바이스 드라이버가 USB 저장소에 실제 카메라 데이터를 트랜스퍼하고 있었던 것처럼, 이전에 발생된 더미 데이터를 WSB 재지향 클라이언트에 제출할 수 있다("저장 데이터(더미)"). 앞서 언급된 바와 같이, 더미 데이터는 트랜스퍼되고 있는 데이터의 크기의 표시를 제공한다. 더미 데이터가 호스트와 허브 사이에서 트랜스퍼되지 않기 때문에, WSB 재지향 클라이언트는 더미 데이터를 폐기할 수 있다.
그 대신에, WSB 재지향 클라이언트는 재지향 트리거를 WSB 재지향 서버에 전송하고("재지향 트리거(크기 정보)"), 이에 의해 WSB 재지향 서버로부터 USB 저장소로의 데이터 트랜스퍼를 개시한다. 얼마나 많은 데이터가 트랜스퍼될지에 관한 표시를 수신하면, WSB 재지향 서버는 데이터 트랜스퍼를 수행한다("저장소 데이터").
이 프로세스는, URB 요청과 연관된 모든 데이터가 USB 저장소로 트랜스퍼될 때까지 반복될 수 있다. 즉, USB 저장소에 대한 디바이스 드라이버는 데이터("저장소 데이터")의 트랜스퍼를 완료하는 트리거("재지향 트리거(크기 정보)")를 WSB 재지향 서버에 전송하는 메시지("저장소 데이터(더미)")를 통해 WSB 재지향 클라이언트로의 데이터 트랜스퍼를 개시할 수 있다. 도 9에 도시된 예시에서, 2개의 데이터 트랜스퍼들은 URB 요청 메시지와 연관된다. 다른 예시들에서, 더 많은 또는 더 적은 데이터 트랜스퍼들이 URB 요청 메시지와 연관될 수 있다.
일부 예시들에서, 호스트에 있는 USB 카메라에 대한 디바이스 드라이버는, USB 카메라에 대한 디바이스 드라이버가 반응으로(in return) 확인응답을 수신하는 것으로 가정하여, USB 요청을 계속하여 전송할 수 있다. 모든 데이터가 트랜스퍼된 후(디바이스들로부터 수신된 표시들 또는 타임아웃에 기초하여 WSB 재지향 서버에 의해 결정된 바와 같이), WSB 재지향 서버는 재지향 세션을 종료하기 위해 WSB 재지향 클라이언트에 메시지를 전송할 수 있다. 예를 들어, 확인응답을 전송하는 것 이외에, WSB 재지향 서버는 부정 확인응답 또는 다른 메시지를 WSB 재지향 클라이언트에 전송할 수 있다("재지향 nack"). WSB 재지향 클라이언트는 URB 메시지의 형태로 USB 카메라에 대한 디바이스 드라이버 상으로 이 메시지를 통과시킬 수 있다("URB NACK").
부정 확인응답(또는 데이터 트랜스퍼에서 딜레이로 인한 타임아웃과 같은 몇몇 다른 이벤트)을 수신하면, WSB 재지향 클라이언트는 지시받은 세션을 종결하기 위한 요청을 전송한다("재지향 철회 요청"). 재지향 접속을 종결하기 위해 요청을 수신하면, WSB 재지향 서버는 확인에 응답할 수 있다("재지향 철회 응답").
이에 따라, 도 8 및 도 9와 관련하여 설명된 기법들은, USB 디바이스 드라이버들에 대한 변화들을 요구하지 않는 URB 트랜잭션 계층에서의 USB 세션들 사이에 데이터 감소 프로토콜을 제공한다. 즉, WSB 재지향 클라이언트 및 서버는, 다양한 디바이스 드라이버들의 적절한 동작 상태들을 또한 유지하면서 메시지들을 재지향시킬 수 있다.
앞서 언급된 바와 같이, 도 9의 예시는 "USB 카메라" 및 "USB 저장소"를 지칭하지만, 본 개시물의 기법들은 이러한 방식으로 제한되지 않는다는 것을 이해해야 한다. 예를 들어, WSB 허브에 접속된 다른 USB 디바이스들은 데이터를 교환하기 위해 이러한 개시물의 기법들을 구현할 수 있다. 더욱이, 도 9에 도시된 메시지들의 시퀀스는 예시이며, 기법들은 도 9에 나타난 순서로 반드시 수행될 필요는 없고, 더 적은, 추가적인, 또는 대안적인 단계들이 수행될 수 있다.
도 10은, 본 개시물의 양상들에 따른 예시의 통신 재지향을 예시하는 플로우차트이다. 예를 들어, 도 10은 일반적으로 본 개시물의 양상에 따라서, 호스트 디바이스를 통해서 데이터를 트랜스퍼하지 않고 허브에 접속된 디바이스들 사이에서 데이터 트랜스퍼를 재지향시키기 위해 재지향 세션을 수행하는 호스트 디바이스를 예시한다. 일부 예시들에서, 호스트 디바이스는 도 5의 예시에 도시된 WSB 호스트(80)와 관련하여 설명된 것과 유사한 방식으로 구성될 수 있다.
도 10의 예시에서, 호스트 디바이스는, 데이터가 허브에 접속된 디바이스들 사이에서 트랜스퍼되고 있는지 여부를 결정한다(200). 예를 들어, 본 개시물에 설명된 바와 같이, 호스트 디바이스는, 디바이스들이 허브에 접속되어 있기 때문에 디바이스들을 인식할 수 있고, 디바이스들이 재지향 세션에 적합한지 여부를 (예를 들어, 승인된 디바이스들의 리스트를 유지함으로써) 결정할 수 있다. 접속된 어떠한 디바이스들도 존재하지 않으면(또는 디바이스들이 데이터 재지시에 대해 승인되지 않으면), 호스트 디바이스는 이러한 디바이스가 접속될 때까지 계속해서 대기할 수 있다(202).
호환가능한 디바이스들이 접속되면, 호스트 디바이스는 허브에서 재지향 접속을 확립할 수 있다(204). 예를 들어, 호스트 디바이스에서 애플리케이션 및 재지향 클라이언트는 재지향 접속을 확립하기 위해 허브에서 재지향 서버와 통신할 수 있다. 일부 예시들에서, 호스트 디바이스는 또한 허브(예를 들어, 허브에서의 재지향 서버)로부터 재지향 정보를 수신할 수 있고, 이에 의해 허브에 접속된 디바이스들 사이의 링크를 확립한다.
다음으로, 호스트 디바이스는 URB 메시지를 이용하여 디바이스들 사이에서 트랜스퍼되기 위한 데이터를 요청할 수 있다(208). 예를 들어, 호스트 디바이스에서 재지시 클라이언트는, 마치 URB 메시지가 호스트 디바이스에서 디바이스 드라이버로부터 나왔던 것처럼, URB 메시지를 발생시킬 수 있다. 호스트 디바이스는 또한 확인응답 메시지에 대해 대기할 수 있고, 이는 데이터가 허브에 접속된 디바이스들 사이에서 성공적으로 트랜스퍼되었음을 나타낼 수 있다(212). 호스트 디바이스는, 확인응답 메시지들이 수신되는 한, 데이터를 계속해서 요청할 수 있다(단계(216)의 "예" 브랜치).
확인응답 메시지가 수신되지 않는 경우(단계(216)의 "아니오" 브랜치), 호스트 디바이스는 재지향 세션을 종결할 수 있다(218). 예를 들어, 재지향 클라이언트는, 재지향 세션이 끝났음을 나타내는 메시지를 허브에 있는 재지향 서버에 전송할 수 있다. 또한, 도 10과 관련하여 나타낸 그리고 설명된 단계들이 단지 하나의 예시로서 제공된다는 것을 이해해야 한다. 즉, 도 10의 방법의 단계들은 도 10에 나타난 순서로 반드시 수행될 필요는 없고, 더 적은, 추가적인, 또는 대안적인 단계들이 수행될 수 있다.
도 11은, 본 개시물의 양상들에 따라서 다른 예시의 통신 재지향을 예시하는 흐름도이다. 예를 들어, 도 11은, 일반적으로, 본 개시물의 양상들에 따라서, 호스트 디바이스를 통해서 데이터를 트랜스퍼하지 않고 허브에 접속된 디바이스들 사이에서 데이터 트랜스퍼를 재지향시키기 위해 재지향 세션을 수행하는 재지향 서버를 예시한다. 일부 예시들에서, 재지향 서버는 도 5의 예시에 도시된 WSB 호스트(96)와 관련하여 설명된 방식과 유사한 방식으로 구성될 수 있다. 재지향 서버는, 허브에 통합될 수 있거나, 또는 허브를 통신하는 독립형(standalone) 디바이스일 수 있다.
어느 경우든, 도 11의 예시에서, 재지향 서버는 재지향 세션을 수행하기 위한 요청을 수신한다(230). 재지향 서버는 호스트 디바이스(예를 들어, 호스트 디바이스에 있는 재지향 클라이언트)로부터 그 요청을 수신할 수 있다. 재지향 서버는 그후 허브에 접속된 디바이스들 사이에서 재지향 접속을 확립하기 위해 재지향 응답을 전송할 수 있다(234). 일부 경우들에서 응답은, 디바이스들이 허브에 접속되는 방식(예를 들어, 디바이스들이 접속되는 포트들의 포트 어드레스들 등)을 나타낼 수 있다.
재지향 서버는 또한 허브에 접속된 디바이스들 사이에서 데이터를 트랜스퍼하기 위한 URB 요청을 수신할 수 있다(238). URB 메시지를 수신할 때, 재지향 서버는 허브에 접속된 디바이스들 사이에서 이전에 확립된 재지향 접속을 이용하여 데이터 트랜스퍼를 수행할 수 있다(242). 데이터 트랜스퍼가 완료된 후, 재지향 서버는 데이터가 트랜스퍼되었음을 나타내는 확인응답 메시지를 전송할 수 있다(246).
일부 실시예들에서, 재지향 서버는 또한 데이터 트랜스처가 완료된 것으로 결정할 수 있다(250). 예를 들어, 재지향 서버는 트랜스퍼되고 있는 데이터의 양(또는 데이터 트랜스퍼와 관련된 일부 다른 메트릭)을 나타내는 허브에 접속된 디바이스들(및/또는 호스트 디바이스에 있는 디바이스 드라이버들)로부터 데이터를 수신할 수 있다. 이 예시에서, 재지향 서버는, 허브에 접속된 디바이스들 사이에서의 데이터의 트랜스퍼가 완료되는 시기를 식별할 수 있다. 데이터 트랜스퍼가 완료되지 않으면(단계(250)의 "아니오" 브랜치), 재지향 서버는 다른 URB 요청을 수신하기 위해 대기할 것이다(238). 그러나, 데이터 트랜스퍼가 완료되면(단계(250)의 "예" 브랜치), 재지향 서버는 재지향 접속의 종결을 개시할 수 있다(254). 예를 들어, 재지향 서버는, 디바이스들 사이에서 트랜스퍼될 어떠한 데이터도 존재하지 않음을 나타내는 부정 확인응답 메시지를 호스트 디바이스에 전송할 수 있다. 일부 경우들에서, 재지향 서버는 또한, 재지향 서버가 완료될 때 확인을 전송할 수 있다(258).
도 11과 관련하여 도시되고 설명된 단계들은 단지 일례로서 제공된다는 것을 이해해야 한다. 즉, 도 11의 방법의 단계들은 도 11에 도시된 순서로 반드시 수행될 필요는 없고, 더 적은, 추가적인, 또는 대안적인 단계들이 수행될 수 있다.
앞서 언급된 바와 같이, 본 개시물의 특정한 기법들은 일반적으로 USB 표준들과 관련하여 설명되지만, USB 표준들은 본 개시물과 일치할 수 있는 통신 표준의 오직 예시들임을 이해해야 한다. 따라서, 기법들이 USB 표준들의 맥락에서 설명되지만, 다른 유사한 통신 표준들(예를 들어, IEEE 1394 표준("Fire Wire"로 알려짐), 이더넷 표준, SATA(Serial Advanced Technology Attachment) 표준, HDMI(high-definition multimedia interface) 표준, 및 Thunderbolt 표준) 또는 심지어는 미래의 통신 표준들 또는 기법들이 마찬가지로 본 개시물의 교시로부터 혜택을 받을 수 있다.
하나 또는 그 초과의 예시들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어로, 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터-판독가능 매체 상에 하나 또는 그 초과의 명령들 또는 코드로서 저장되거나 또는 이들을 통해 송신될 수 있고 하드웨어-기반 프로세싱 유닛에 의해 실행될 수 있다. 컴퓨터-판독가능 매체는, 데이터 저장 매체와 같은 유형의 매체에 대응하는 컴퓨터-판독가능 저장 매체, 또는 예를 들어, 통신 프로토콜에 따라서 한 장소에서 다른 장소로 컴퓨터 프로그램의 전달을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함할 수 있다. 이러한 방식으로, 컴퓨터-판독가능 매체는 일반적으로 (1) 비-일시적인 유형의 컴퓨터-판독가능 저장 매체 또는 (2) 신호 또는 캐리어 파형과 같은 통신 매체에 대응할 수 있다. 데이터 저장 매체는, 본 개시물에 설명된 기법들의 구현을 위해 명령들, 코드 및/또는 데이터 구조들을 리트리브하기 위해 하나 또는 그 초과의 컴퓨터들 또는 하나 또는 그 초과의 프로세서들에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 프로그램 물건은 컴퓨터-판독가능 매체를 포함할 수 있다.
한정이 아닌 예로서, 이러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 플래시 메모리, 또는 컴퓨터에 의해 액세스될 수 있고 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 이용될 수 있는 임의의 다른 매체를 포함할 수 있다. 또한, 임의의 접속수단(connection)이 컴퓨터-판독가능 매체로 적절하게 명명된다. 예를 들어, 명령들이 동축 케이블, 광섬유 케이블, 트위스트 페어, 디지털 가입자 라인(DSL), 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들을 이용하여 웹사이트, 서버 또는 다른 원격 소스로부터 송신되면, 동축 케이블, 광섬유 케이블, 트위스트 페어, DSL, 또는 적외선, 라디오 및 마이크로파와 같은 무선 기술들이 매체의 정의 내에 포함된다. 그러나, 컴퓨터-판독가능 저장 매체 및 데이터 저장 매체는 접속 수단들, 캐리어 파형들, 신호들, 또는 다른 일시적 매체(transient media)를 포함하지 않지만, 그 대신에 비-일시적, 유형의 저장 매체에 관련된다는 것을 이해해야 한다. 본원에 이용되는 것과 같은, 디스크(disk) 및 디스크(disc)는 콤팩트 디스크(CD; compact disc), 레이저 디스크(laser disc), 광학 디스크(optical disc), 디지털 다기능 디스크(DVD: digital versatile disc), 플로피 디스크(floppy disk) 및 블루-레이 디스크(Blu-ray® disc)를 포함하며, 여기서 디스크(disk)들은 통상적으로 자기적으로 데이터를 재생하는 반면에 디스크(disc)들은 레이저들을 통해 데이터를 광학적으로 재생한다. 전술한 것들의 조합들이 또한 컴퓨터-판독가능 매체의 범위 내에 포함되어야 할 것이다.
명령들은, 하나 또는 그 초과의 디지털 신호 프로세서들(DSP들), 범용 마이크로프로세서들, 주문형 집적 회로들(ASIC들), 필드 프로그래머블 게이트 어레이들(FPGA들), 또는 다른 등가 집적 또는 이산 로직 회로들과 같은 하나 또는 그 초과의 프로세서들에 의해 실행될 수 있다. 이에 따라, 본원에 이용된 것과 같은 용어 "프로세서"는 본원에 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 임의의 전술한 구조를 지칭할 수 있다. 이에 더해, 일부 양상들에서, 본원에 설명된 기능은, 인코딩 및 디코딩을 위해 구성되거나 또는 조합된 코덱에 통합되는 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수 있다. 또한, 기법들은 하나 또는 그 초과의 회로들 또는 로직 엘리먼트들에 전체적으로 구현될 수 있다.
본 개시물의 기법들은, 무선 핸드셋, 집적 회로(IC) 또는 일 세트의 IC들(예를 들어, 칩 셋)을 포함하는 광범위한 디바이스들 또는 장치들로 구현될 수 있다. 다양한 컴포넌트들, 모듈들, 또는 유닛들이, 개시된 기법들을 수행하도록 구성된 디바이스들의 기능적 양상들을 강조하기 위해 본 개시물에 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 요구하지는 않는다. 오히려, 앞서 설명된 바와 같이, 다양한 유닛들은, 코덱 하드웨어 유닛으로 조합될 수 있거나, 또는 적합한 소프트웨어 및/또는 펌웨어와 관련하여 앞서 설명된 하나 또는 그 초과의 프로세서들을 포함하는 상호작용적 하드웨어 유닛들의 집합에 의해 제공될 수 있다.
다양한 예시들이 설명되었다. 이러한 예시들 그리고 다른 예시들은 이하의 청구범위 내에 있다.

Claims (58)

  1. 데이터를 트랜스퍼하기 위한 방법으로서,
    호스트 디바이스에서, 유니버셜 직렬 버스(USB; Universal Serial Bus) 허브에 접속된 제 1 USB 디바이스와 상기 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키는 단계 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 호스트 디바이스를 포함하지 않음 ―; 및
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속이 확립된 후, 상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터를 요청하는 단계를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 데이터의 특징들을 포함하는, 라우팅될 데이터와 연관된 메타데이터를 상기 제 1 USB 디바이스에서 상기 제 2 USB 디바이스로 송신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 특징들은, 데이터의 양, 상기 데이터와 연관된 파일명, 상기 데이터를 저장할 디렉토리, 및 상기 데이터를 저장할 위치 중 적어도 하나를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터의 크기의 표시를 포함하는 확인응답을 수신하는 단계;
    상기 크기를 갖는 더미 데이터를 발생시키는 단계; 및
    상기 제 1 디바이스에 대한 디바이스 드라이버에 상기 더미 데이터를 전송하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 제 1 디바이스에 대한 상기 디바이스 드라이버로부터 상기 더미 데이터를 수신하는 단계를 더 포함하고,
    상기 제 1 디바이스로부터 상기 제 2 디바이스로 라우팅될 데이터를 요청하는 단계는, 상기 더미 데이터를 수신할 때 개시되는,
    데이터를 트랜스퍼하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 요청하는 단계는, 상기 제 1 USB 디바이스와 상기 제 1 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 하나 또는 그 초과의 USB 요청 블록(URB; USB Request Block) 메시지들을 발생시키는 단계를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  7. 제 1 항에 있어서,
    확립된 접속을 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 데이터가 트랜스퍼될 때 확인응답을 수신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 관련된 데이터를 수신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  9. 제 1 항에 있어서,
    상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 데이터 트랜스퍼를 위해 상기 제 1 디바이스와 상기 제 2 디바이스가 접속되기에 적합한 것으로 결정하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  10. 제 1 항에 있어서,
    상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 접속의 종결을 요청하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  11. 데이터를 트랜스퍼하기 위한 장치로서,
    상기 장치는 하나 또는 그 초과의 프로세서들을 포함하고,
    상기 하나 또는 그 초과의 프로세서들은:
    유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 상기 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키고 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 그리고
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속이 확립된 후, 상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터를 요청하도록 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  12. 제 11 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 데이터의 특징들을 포함하는, 라우팅될 데이터와 연관된 메타데이터를 상기 제 1 USB 디바이스에서 상기 제 2 USB 디바이스로 송신하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  13. 제 11 항에 있어서,
    상기 특징들은, 데이터의 양, 상기 데이터와 연관된 파일명, 상기 데이터를 저장할 디렉토리, 및 상기 데이터를 저장할 위치 중 적어도 하나를 포함하는,
    데이터를 트랜스퍼하기 위한 장치
  14. 제 11 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은:
    상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터의 크기의 표시를 포함하는 확인응답을 수신하고;
    상기 크기를 갖는 더미 데이터를 발생시키고; 그리고
    상기 제 1 디바이스에 대한 디바이스 드라이버에 상기 더미 데이터를 전송하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  15. 제 14 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은:
    상기 제 1 디바이스에 대한 상기 디바이스 드라이버로부터 상기 더미 데이터를 수신하도록 더 구성되고,
    상기 하나 또는 그 초과의 프로세서들은, 상기 더미 데이터를 수신할 때 상기 제 1 디바이스로부터 상기 제 2 디바이스로 라우팅될 데이터에 대한 요청을 개시하는,
    데이터를 트랜스퍼하기 위한 장치
  16. 제 11 항에 있어서,
    라우팅될 데이터를 요청하기 위해, 상기 하나 또는 그 초과의 프로세서들은,
    상기 제 1 USB 디바이스와 상기 제 1 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 하나 또는 그 초과의 USB 요청 블록(URB; USB Request Block) 메시지들을 발생시키도록 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  17. 제 11 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 확립된 접속을 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 데이터가 트랜스퍼될 때 확인응답을 수신하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  18. 제 11 항에 있어서,
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 관련된 데이터를 수신하는 것을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치
  19. 제 11 항에 있어서,
    상기 하나 또는 그 초과의 프로세스들은, 상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 데이터 트랜스퍼를 위해 상기 제 1 디바이스와 상기 제 2 디바이스가 접속되기에 적합한 것으로 결정하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  20. 제 11 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 접속의 종결을 요청하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치
  21. 데이터를 트랜스퍼하기 위한 장치로서,
    유니버셜 직렬 버스(USB) 허브에 접속된 제 1 USB 디바이스와 상기 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키기 위한 수단 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 호스트 디바이스를 포함하지 않음 ―; 및
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속이 확립된 후, 상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터를 요청하기 위한 수단을 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  22. 제 21 항에 있어서,
    상기 데이터의 특징들을 포함하는, 라우팅될 데이터와 연관된 메타데이터를 상기 제 1 USB 디바이스에서 상기 제 2 USB 디바이스로 송신하기 위한 수단을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  23. 제 21 항에 있어서,
    상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터의 크기의 표시를 포함하는 확인응답을 수신하기 위한 수단;
    상기 크기를 갖는 더미 데이터를 발생시키기 위한 수단; 및
    상기 제 1 디바이스에 대한 디바이스 드라이버에 상기 더미 데이터를 전송하기 위한 수단을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  24. 제 23 항에 있어서,
    상기 제 1 디바이스에 대한 상기 디바이스 드라이버로부터 상기 더미 데이터를 수신하기 위한 수단을 더 포함하고,
    상기 제 1 디바이스로부터 상기 제 2 디바이스로 라우팅될 데이터를 요청하기 위한 수단은, 상기 더미 데이터를 수신할 때 개시되는,
    데이터를 트랜스퍼하기 위한 장치.
  25. 제 21 항에 있어서,
    상기 요청하기 위한 수단은, 상기 제 1 USB 디바이스와 상기 제 1 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 하나 또는 그 초과의 USB 요청 블록(URB; USB Request Block) 메시지들을 발생시키기 위한 수단을 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  26. 제 21 항에 있어서,
    상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 데이터 트랜스퍼를 위해 상기 제 1 디바이스와 상기 제 2 디바이스가 접속되기에 적합한 것으로 결정하기 위한 수단을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  27. 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체로서,
    상기 명령들은, 실행될 때, 하나 또는 그 초과의 프로세서들로 하여금,
    유니버셜 직렬 버스(USB; Universal Serial Bus) 허브에 접속된 제 1 USB 디바이스와 상기 USB 허브에 접속된 제 2 USB 디바이스 사이에서 접속을 확립하기 위한 USB 재지향 구성 요청을 발생시키게 하고 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 호스트 디바이스를 포함하지 않음 ―; 및
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속이 확립된 후, 상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터를 요청하게 하는,
    비-일시적 컴퓨터-판독가능 매체.
  28. 제 27 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금, 상기 데이터의 특징들을 포함하는, 라우팅될 데이터와 연관된 메타데이터를 상기 제 1 USB 디바이스에서 상기 제 2 USB 디바이스로 송신하게 하는 명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  29. 제 27 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금:
    상기 USB 허브를 통해서 상기 제 1 USB 디바이스로부터 상기 제 2 USB 디바이스로 라우팅될 데이터의 크기의 표시를 포함하는 확인응답을 수신하게 하고;
    상기 크기를 갖는 더미 데이터를 발생시키게 하고; 그리고
    상기 제 1 디바이스에 대한 디바이스 드라이버에 상기 더미 데이터를 전송하게 하는
    명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  30. 제 29 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금,
    상기 제 1 디바이스에 대한 상기 디바이스 드라이버로부터 상기 더미 데이터를 수신하게 하는 명령들을 더 포함하고,
    상기 제 1 디바이스로부터 상기 제 2 디바이스로 라우팅될 데이터에 대한 요청은 상기 더미 데이터를 수신할 때 개시되는,
    비-일시적 컴퓨터-판독가능 매체.
  31. 제 27 항에 있어서,
    라우팅될 데이터를 요청하기 위해, 상기 하나 또는 그 초과의 프로세서들로 하여금 상기 상기 제 1 USB 디바이스와 상기 제 1 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 하나 또는 그 초과의 USB 요청 블록(URB; USB Request Block) 메시지들을 발생시키게 하는 명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  32. 제 27 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금 상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 데이터 트랜스퍼를 위해 상기 제 1 디바이스와 상기 제 2 디바이스가 접속되기에 적합한 것으로 결정하게 하는 명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  33. 데이터를 트랜스퍼하기 위한 방법으로서,
    제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키는 단계 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 USB 호스트를 포함하지 않음 ―;
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하는 단계;
    상기 요청을 수신한 후, 상기 데이터의 적어도 일부를 상기 USB 호스트에 트랜스퍼하지 않고 상기 접속을 이용하여 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 송신하는 단계를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  34. 제 33 항에 있어서,
    상기 데이터의 특징들을 포함하는, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터와 연관된 메타데이터를 수신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  35. 제 34 항에 있어서,
    상기 특징들은, 데이터의 양, 상기 데이터와 연관된 파일명, 상기 데이터를 저장할 디렉토리, 및 상기 데이터를 저장할 위치 중 적어도 하나를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  36. 제 33 항에 있어서,
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 송신될 데이터의 크기의 표시를 포함하는 확인응답을 상기 USB 호스트에 송신하는 단계를 더 포함하고,
    상기 트랜스퍼하기 위한 요청을 수신하는 단계는, 상기 확인응답에 기초하는,
    데이터를 트랜스퍼하기 위한 방법.
  37. 제 33 항에 있어서,
    상기 데이터를 송신한 후에 확인응답 메시지를 상기 USB 호스트로 송신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  38. 제 33 항에 있어서,
    상기 요청을 수신하는 단계는, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 USB 요청 블록(URB) 메시지를 수신하는 단계를 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  39. 제 33 항에 있어서,
    상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 연관된 데이터를 상기 USB 호스트에 송신하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  40. 제 33 항에 있어서,
    상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 접속을 종결하는 단계를 더 포함하는,
    데이터를 트랜스퍼하기 위한 방법.
  41. 데이터를 트랜스퍼하기 위한 장치로서,
    하나 또는 그 초과의 프로세서들을 포함하고,
    상기 하나 또는 그 초과의 프로세서들은:
    제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키고 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 USB 호스트를 포함하지 않음 ―;
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하고;
    상기 요청을 수신한 후, 상기 데이터의 적어도 일부를 상기 USB 호스트에 트랜스퍼하지 않고 상기 접속을 이용하여 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 송신하도록 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  42. 제 41 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 데이터의 특징들을 포함하는, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터와 연관된 메타데이터를 수신하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  43. 제 42 항에 있어서,
    상기 특징들은, 데이터의 양, 상기 데이터와 연관된 파일명, 상기 데이터를 저장할 디렉토리, 및 상기 데이터를 저장할 위치 중 적어도 하나를 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  44. 제 41 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은:
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 송신될 데이터의 크기의 표시를 포함하는 확인응답을 상기 USB 호스트에 송신하도록 더 구성되고,
    상기 트랜스퍼하기 위한 요청을 수신하는 것은, 상기 확인응답에 기초하는,
    데이터를 트랜스퍼하기 위한 장치.
  45. 제 41 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 데이터를 송신한 후에 확인응답 메시지를 상기 USB 호스트로 송신하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  46. 제 41 항에 있어서,
    상기 요청을 수신하기 위해, 상기 하나 또는 그 초과의 프로세서들은, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 USB 요청 블록(URB) 메시지를 수신하도록 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  47. 제 41 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 연관된 데이터를 상기 USB 호스트에 송신하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  48. 제 41 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들은, 상기 제 1 디바이스와 상기 제 2 디바이스 사이에서의 접속을 종결하도록 더 구성되는,
    데이터를 트랜스퍼하기 위한 장치.
  49. 데이터를 트랜스퍼하기 위한 장치로서,
    제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키기 위한 수단 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 USB 호스트를 포함하지 않음 ―;
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하기 위한 수단;
    상기 요청을 수신한 후, 상기 데이터의 적어도 일부를 상기 USB 호스트에 트랜스퍼하지 않고 상기 접속을 이용하여 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 송신하기 위한 수단을 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  50. 제 49 항에 있어서,
    상기 데이터의 특징들을 포함하는, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터와 연관된 메타데이터를 수신하기 위한 수단을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  51. 제 49 항에 있어서,
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 송신될 데이터의 크기의 표시를 포함하는 확인응답을 상기 USB 호스트에 송신하기 위한 수단을 더 포함하고,
    상기 트랜스퍼하기 위한 요청을 수신하는 것은, 상기 확인응답에 기초하는,
    데이터를 트랜스퍼하기 위한 장치.
  52. 제 49 항에 있어서,
    상기 요청을 수신하기 위한 수단은, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 USB 요청 블록(URB) 메시지를 수신하기 위한 수단을 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  53. 제 49 항에 있어서,
    상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 연관된 데이터를 상기 USB 호스트에 송신하기 위한 수단을 더 포함하는,
    데이터를 트랜스퍼하기 위한 장치.
  54. 명령들을 저장하는 비-일시적 컴퓨터-판독가능 매체로서,
    상기 명령들은, 실행될 때, 하나 또는 그 초과의 프로세서들로 하여금:
    제 1 USB 디바이스와 제 2 USB 디바이스 사이에서 접속을 확립하기 위해 USB 호스트에 송신하기 위한 유니버셜 직렬 버스(USB) 재지향 구성 메시지를 발생시키게 하고 ― 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서의 접속은 상기 USB 호스트를 포함하지 않음 ―;
    상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 트랜스퍼하기 위한 요청을 수신하게 하고;
    상기 요청을 수신한 후, 상기 데이터의 적어도 일부를 상기 USB 호스트에 트랜스퍼하지 않고 상기 접속을 이용하여 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 데이터를 송신하게 하는,
    비-일시적 컴퓨터-판독가능 매체.
  55. 제 54 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금, 상기 데이터의 특징들을 포함하는, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터와 연관된 메타데이터를 수신하게 하는 명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  56. 제 54 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금, 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 송신될 데이터의 크기의 표시를 포함하는 확인응답을 상기 USB 호스트에 송신하게 하는 명령들을 더 포함하고,
    상기 트랜스퍼하기 위한 요청을 수신하는 것은, 상기 확인응답에 기초하는,
    비-일시적 컴퓨터-판독가능 매체.
  57. 제 54 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금 상기 요청을 수신하게 하는 명령들은, 상기 하나 또는 그 초과의 프로세서들로 하여금 상기 제 1 USB 디바이스와 상기 제 2 USB 디바이스 사이에서 트랜스퍼될 데이터의 양의 표시를 포함하는 USB 요청 블록(URB) 메시지를 수신하게 하는 명령들을 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
  58. 제 54 항에 있어서,
    상기 하나 또는 그 초과의 프로세서들로 하여금, 상기 제 1 USB 디바이스의 어드레스 및 상기 제 2 USB 디바이스의 어드레스를 식별하는, 상기 제 1 USB 디바이스 및 상기 제 2 USB 디바이스와 연관된 데이터를 상기 USB 호스트에 송신하게 하는 명령들을 더 포함하는,
    비-일시적 컴퓨터-판독가능 매체.
KR1020147028544A 2012-03-13 2013-03-13 유니버셜 직렬 버스 디바이스들에 대한 데이터 재지향 KR20140143793A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261610247P 2012-03-13 2012-03-13
US61/610,247 2012-03-13
US201261611314P 2012-03-15 2012-03-15
US61/611,314 2012-03-15
US13/709,823 US8832328B2 (en) 2012-03-13 2012-12-10 Data redirection for universal serial bus devices
US13/709,823 2012-12-10
PCT/US2013/030877 WO2013138464A1 (en) 2012-03-13 2013-03-13 Data redirection for universal serial bus devices

Publications (1)

Publication Number Publication Date
KR20140143793A true KR20140143793A (ko) 2014-12-17

Family

ID=49158758

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147028544A KR20140143793A (ko) 2012-03-13 2013-03-13 유니버셜 직렬 버스 디바이스들에 대한 데이터 재지향

Country Status (7)

Country Link
US (1) US8832328B2 (ko)
EP (1) EP2825969B1 (ko)
KR (1) KR20140143793A (ko)
CN (1) CN104246733B (ko)
ES (1) ES2641327T3 (ko)
HU (1) HUE035735T2 (ko)
WO (1) WO2013138464A1 (ko)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9106651B2 (en) * 2011-09-19 2015-08-11 Qualcomm Incorporated Sending human input device commands over internet protocol
US9778829B2 (en) 2012-02-17 2017-10-03 Lenovo (Singapore) Pte. Ltd. Magnification based on eye input
US9075923B2 (en) * 2012-12-27 2015-07-07 Intel Corporation Discovery mechanisms for universal serial bus (USB) protocol adaptation layer
IN2013CH05264A (ko) * 2013-05-01 2015-05-29 Wyse Technology Llc
US9037763B2 (en) * 2013-05-08 2015-05-19 Qualcomm Incorporated Transport mode for a media agnostic USB protocol using a wireless serial bus (WSB) session of a WSB service
US9471781B2 (en) * 2013-08-23 2016-10-18 Cisco Technology, Inc. Method and apparatus for monitoring and filtering universal serial bus network traffic
US20150089086A1 (en) * 2013-09-26 2015-03-26 Chao-Chi Yang A/v information updating control system, control device and control method
US10163455B2 (en) 2013-12-03 2018-12-25 Lenovo (Singapore) Pte. Ltd. Detecting pause in audible input to device
US9110635B2 (en) 2013-12-03 2015-08-18 Lenova (Singapore) Pte. Ltd. Initiating personal assistant application based on eye tracking and gestures
US9213659B2 (en) 2013-12-03 2015-12-15 Lenovo (Singapore) Pte. Ltd. Devices and methods to receive input at a first device and present output in response on a second device different from the first device
US9709708B2 (en) 2013-12-09 2017-07-18 Lenovo (Singapore) Pte. Ltd. Adjustable display optics
US9633252B2 (en) 2013-12-20 2017-04-25 Lenovo (Singapore) Pte. Ltd. Real-time detection of user intention based on kinematics analysis of movement-oriented biometric data
US10180716B2 (en) 2013-12-20 2019-01-15 Lenovo (Singapore) Pte Ltd Providing last known browsing location cue using movement-oriented biometric data
US10073671B2 (en) 2014-01-20 2018-09-11 Lenovo (Singapore) Pte. Ltd. Detecting noise or object interruption in audio video viewing and altering presentation based thereon
US9420536B2 (en) * 2014-06-10 2016-08-16 Qualcomm Incorporated Controlling power consumption in peer-to-peer communications
US9811095B2 (en) 2014-08-06 2017-11-07 Lenovo (Singapore) Pte. Ltd. Glasses with fluid-fillable membrane for adjusting focal length of one or more lenses of the glasses
US9535497B2 (en) 2014-11-20 2017-01-03 Lenovo (Singapore) Pte. Ltd. Presentation of data on an at least partially transparent display based on user focus
CN105812500A (zh) * 2014-12-31 2016-07-27 鸿富锦精密工业(深圳)有限公司 电子装置群连接系统及方法
US9846672B2 (en) * 2015-02-02 2017-12-19 Atmel Corporation Serial device with configuration mode for changing device behavior
US10860094B2 (en) 2015-03-10 2020-12-08 Lenovo (Singapore) Pte. Ltd. Execution of function based on location of display at which a user is looking and manipulation of an input device
US10013540B2 (en) 2015-03-10 2018-07-03 Lenovo (Singapore) Pte. Ltd. Authentication based on body movement
US10499164B2 (en) 2015-03-18 2019-12-03 Lenovo (Singapore) Pte. Ltd. Presentation of audio based on source
US10621431B2 (en) 2015-03-27 2020-04-14 Lenovo (Singapore) Pte. Ltd. Camera that uses light from plural light sources disposed on a device
KR102341149B1 (ko) * 2015-04-28 2021-12-20 삼성전자주식회사 전자 장치 운용 방법 및 이를 지원하는 전자 장치
US10114779B2 (en) * 2016-04-22 2018-10-30 Dell Products L.P. Isolating a redirected USB device to a set of applications
WO2018131550A1 (ja) * 2017-01-13 2018-07-19 日本電気株式会社 コネクション管理ユニット、およびコネクション管理方法
DE102017103554B3 (de) * 2017-02-21 2018-05-09 Phoenix Contact Gmbh & Co. Kg Frontadapter zum Verbinden mit einer Steuerungseinrichtung und Automatisierungssystem
TWI647571B (zh) * 2017-09-20 2019-01-11 旺玖科技股份有限公司 萬用串列匯流排集線器
US11256639B2 (en) * 2017-10-23 2022-02-22 Intel Corporation Method, apparatus, system to enhance the device policy manager (DPM) to manage an expended USB-C ecosystem
US20200028713A1 (en) * 2018-07-16 2020-01-23 Dwight L. Stewart Computer system having controller configured to create data tunnel based on device information
WO2020228650A1 (zh) * 2019-05-14 2020-11-19 华为技术有限公司 一种虚拟机远程访问usb外设的数据的方法
US10955988B1 (en) 2020-02-14 2021-03-23 Lenovo (Singapore) Pte. Ltd. Execution of function based on user looking at one area of display while touching another area of display
US20230133948A1 (en) * 2020-04-22 2023-05-04 Hewlett-Packard Development Company, L.P. Adjustment of display settings
CN114006882A (zh) * 2021-11-12 2022-02-01 广州青云直上信息科技有限公司 一种自动识别远程usb设备的控制方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189040B1 (en) 1996-08-06 2001-02-13 Yahama Corporation Data relaying unit and method of transmitting data between host and client devices
JPH11284636A (ja) 1998-03-27 1999-10-15 Omron Corp インターフェースおよび通信方法、hub装置およびusb通信方法
US7873028B2 (en) 2002-01-25 2011-01-18 Quanta Computer, Inc. Method and apparatus for a flexible peripheral access router
JP2004005541A (ja) 2002-04-16 2004-01-08 Canon Inc データ転送装置、データ転送方法、プログラム及び記録媒体
US20050055479A1 (en) * 2002-11-21 2005-03-10 Aviad Zer Multi-module circuit card with inter-module direct memory access
US8190785B2 (en) 2006-05-26 2012-05-29 Smart Technologies Ulc Plug-and-play device and method for enhancing features and settings in an interactive display system
US7783794B2 (en) 2007-11-27 2010-08-24 Aten International Co., Ltd. Remote USB access method
US8215991B2 (en) 2009-02-26 2012-07-10 Sandisk Il Ltd. Memory card and host device
US8762589B2 (en) 2010-01-22 2014-06-24 National Instruments Corporation Data transfer between devices maintaining state data

Also Published As

Publication number Publication date
CN104246733A (zh) 2014-12-24
US20130246663A1 (en) 2013-09-19
EP2825969B1 (en) 2017-08-02
ES2641327T3 (es) 2017-11-08
WO2013138464A1 (en) 2013-09-19
HUE035735T2 (en) 2018-05-28
US8832328B2 (en) 2014-09-09
CN104246733B (zh) 2017-10-10
EP2825969A1 (en) 2015-01-21

Similar Documents

Publication Publication Date Title
US8832328B2 (en) Data redirection for universal serial bus devices
US10411971B2 (en) Method for unified communication of server, baseboard management controller, and server
US11146362B2 (en) Internet of things data transmission method, device and system
US8195852B2 (en) Configurable connector for system-level communication
KR102109431B1 (ko) 데이터 터널을 사용하는 인터페이스를 통한 복수의 프로토콜 데이터 엘러먼트들의 송신
US9942379B2 (en) Wireless docking
EP2845114B1 (en) Extensible wse hub to support a multi-hop tree of usb hubs or peripherals over a wireless link
JP5988449B2 (ja) 通信制御ピンを介したシリアル通信
US9129064B2 (en) USB 3.0 link layer timer adjustment to extend distance
KR20130096059A (ko) 원격의 싱크 장치를 표시하는 방법, 이를 위한 소스 장치 및 시스템
US20130132625A1 (en) Methods and devices for extending usb 3.0-compliant communication
CN107111564B (zh) 用于对连接器进行串接的适配器
JP2012048707A (ja) シリアル・アドバンスド・テクノロジー・アタッチメントの性能を改善するための方法および装置
US8788734B2 (en) Methods and devices for universal serial bus port event extension
US20170168971A1 (en) Re-enumerating media agnostic devices
WO2015039620A1 (en) Method, system, control device and node device for data transmission
EP2658304A1 (en) Setting an Optimal Ping Interval
US20150350014A1 (en) Networking implementation using a converged high speed input/output fabric technology
US10075398B2 (en) Systems and methods for enabling a host system to use a network interface of a management controller
US9408019B2 (en) Accessing serial console port of a wireless access point
WO2018040429A1 (zh) Usb设备模拟装置及方法
WO2016015614A1 (zh) 一种密文发送、传输的方法、移动终端及通信基站
US20230333735A1 (en) System and method for managing data storage in network interface controllers
US8005082B2 (en) Concurrent enablement of persistent information unit pacing
TW201409244A (zh) 終端裝置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid