KR102273021B1 - 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치 - Google Patents

복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치 Download PDF

Info

Publication number
KR102273021B1
KR102273021B1 KR1020150028587A KR20150028587A KR102273021B1 KR 102273021 B1 KR102273021 B1 KR 102273021B1 KR 1020150028587 A KR1020150028587 A KR 1020150028587A KR 20150028587 A KR20150028587 A KR 20150028587A KR 102273021 B1 KR102273021 B1 KR 102273021B1
Authority
KR
South Korea
Prior art keywords
operating system
communication link
host operating
peripheral device
data
Prior art date
Application number
KR1020150028587A
Other languages
English (en)
Other versions
KR20160105210A (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 삼성전자주식회사
Priority to KR1020150028587A priority Critical patent/KR102273021B1/ko
Priority to US15/046,921 priority patent/US10146712B2/en
Publication of KR20160105210A publication Critical patent/KR20160105210A/ko
Application granted granted Critical
Publication of KR102273021B1 publication Critical patent/KR102273021B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • 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/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

전자 장치 내에 설치된 호스트 운영체제 및 게스트 운영체제가 주변 기기와 통신하는 방법에 있어서, 호스트 운영체제가 게스트 운영체제로부터 제 1 데이터를 수신하는 단계; 호스트 운영체제가 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계; 결정에 기초하여, 호스트 운영체제가 제 1 데이터를 패킷화(packetizing)하는 단계; 및 패킷화된 데이터를 주변 기기에게 전송하는 단계;를 포함하는 방법을 개시한다.

Description

복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치{METHOD AND APPARATUS FOR COMMUNICATING WITH A PERIPHERAL DEVICE BY OPERATING A PLURALITY OF OPERATING SYSTEM}
복수의 운영체제가 구동되는 전자 장치가 주변 장치를 통신하는 방법 및 그 장치에 관한 발명이다.
IEEE 802.15.1 규격을 사용하는 블루투스(Bluetooth)는 PAN(Personal Area Networks)의 산업 표준이다. 블루투스는 ISM(Industrial Scientific Medical) 대역인 2.4GHz를 사용하며 전력 소모가 적고 저비용으로 시스템 구성이 가능하도록 설계된 통신 프포토콜이다.
블루투스 통신 기술을 이용하는 어플리케이션들의 예로서, 스마트 기기와 핸즈프리 헤드셋 간의 무선 제어 및 통신, 스마트 기기와 블루트스 카 스테레오 시스템간의 무선 제어 및 통신, 태블릿과 스피커간의 무선 제어 및 통신, 무선 블루투스 헤드셋과 인터콤 간의 무선 제어 및 통신, 마우스, 키보드, 프린터 등과 같은 PC 입력 및 출력 장치와의 무선 통신 등이 있다.
블루투스는 스마트 기기와 그 어플리케이션들을 위해 의도된 것이다.
한편, 스마트 기기들에 대한 사용이 증가함에 따라 스마트 기기들의 사용자 편의성을 향상시키기 위한 블루투스 기기들도 함께 발달하고 있다. 또한, 스마트 기기의 사용이 일상화됨에 따라, 이전의 다양한 장치들에서 수행되던 기능들이 하나의 스마트 기기에서 수행되도록 요구되고 있다. 이러한 요구에 따라 스마트 기기는 복수의 운영체제를 구동시킴으로써 서로 다른 장치들에서 수행되던 기능들을 함께 수행할 수 있도록 발달하고 있다. 따라서, 복수의 운영체제가 구동되는 스마트 기기가 주변 기기들과 효율적으로 통신하는 방법 및 장치가 필요하다.
본 개시는 전자 장치 내에서 구동되는 호스트 운영체제 또는 게스트 운영체제가 주변 기기에게 데이터를 전송함에 있어서, 호스트 운영체제 및 게스트 운영체제가 호스트 운영체제와 주변 기기 간에 설정된 통신 링크를 통해 데이터를 전송하는 방법 및 장치를 제공하는데 목적이 있다.
또한, 본 개시는 전자 장치 내에서 구동되는 호스트 운영체제 또는 게스트 운영체제가 주변 기기에게 데이터를 전송함에 있어서, 호스트 운영체제와 주변 기기 간에 설정된 통신 링크를 게스트 운영체제와 주변 기기 간에 설정된 통신 링크를 전환하는데 요구되는 오버헤드를 감소시키는 방법 및 장치를 제공하는데 목적이 있다.
본 개시의 일 실시예에 따른 전자 장치가 주변 기기와 통신하는 방법은, 호스트 운영체제가 게스트 운영체제로부터 제 1 데이터를 수신하는 단계; 호스트 운영체제가 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계; 결정에 기초하여, 호스트 운영체제가 제 1 데이터를 패킷화(packetizing)하는 단계; 및 패킷화된 데이터를 주변 기기에게 전송하는 단계;를 포함할 수 있다.
또한, 제 1 통신 링크는, 호스트 운영체제와 주변 기기 간 설정된 통신 링크이며, 제 2 통신 링크는, 게스트 운영체제와 주변 기기 간 설정된 통신 링크이며, 제 2 통신 링크는, 제 1 통신 링크의 설정 시에 호스트 운영체제 및 주변 기기에 저장된 링크키를 공유하는, 방법.
또한, 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계는, 제 1 데이터가 HCI 패킷을 포함하는 경우 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 제 1 데이터가 HCI 패킷을 포함하지 않는 경우 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계는, 호스트 운영체제가 주변 기기를 전용하도록 설정되어 있는 경우, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 호스트 운영체제가 게스트 운영체제와 주변 기기를 함께 사용하도록 설정되어 있는 경우, 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 제 1 데이터는, 제 2 통신 링크에 기초하여 게스트 운영체제에 의해 생성된 HCI 패킷을 포함할 수 있다.
또한, 제 2 통신 링크로 전환하는 것으로 결정되는 경우, 호스트 운영체제가 제 1 데이터를 패킷화하는 단계는, 제 1 데이터에 포함된 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 단계;를 포함할 수 있다.
또한, 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 호스트 운영체제가 제 1 데이터를 패킷화하는 단계는, 호스트 운영체제는 제 1 통신 링크 설정 시에 호스트 운영체제와 주변 기기 내에 저장된 링크키에 기초하여 주변 기기와 인증 작업을 수행하는 단계; 제 1 통신 링크에 기초하여 제 1 데이터에 대한 HCI 패킷을 생성하는 단계; 및 제 1 통신 링크의 물리적 특성에 기초하여, HCI 패킷에 대응되는 블루투스 패킷을 생성하는 단계;를 포함할 수 있다.
또한, 제 1 데이터는, 오디오 데이터 또는 HID(human interface device) 데이터를 포함할 수 있다.
또한, 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 방법은, 호스트 운영체제가 호스트 운영체제 내에서 처리된 제 2 데이터를 획득하는 단계; 제 1 데이터 및 제 2 데이터를 결합하는 단계; 및 제 1 통신 링크에 기초하여 결합된 데이터를 주변 기기에게 전송하는 단계;를 더 포함할 수 있다.
또한, 제 1 통신 링크 및 제 2 통신 링크는, ACL(Asynchronous Connection Less) 패킷 또는 SCO(Synchronous Connection Oriented) 패킷을 전송할 수 있다.
본 개시의 다른 실시예에 따른 전자 장치가 주변 기기와 통신하는 방법은, 전자 장치의 화면 상에 표시되는 호스트 운영체제의 구동화면을 게스트 운영체제의 구동화면으로 변경하는 단계; 및 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계; 결정에 기초하여, 호스트 운영체제가 게스트 운영체제로부터 수신된 제 3 데이터를 패킷화하는 단계; 및 패킷화된 데이터를 주변 기기에게 전송하는 단계;를 포함할 수 있다.
본 개시의 또 다른 실시예에 따른 전자 장치가 주변 기기와 통신하는 방법은, 호스트 운영체제가 게스트 운영체제로부터 주변 기기 탐색 요청을 수신하는 단계; 호스트 운영체제가 적어도 하나의 주변 기기를 탐색하는 단계; 호스트 운영체제가 탐색된 적어도 하나의 주변 기기 중에서 게스트 운영체제와 통신 링크를 설정할 수 있는 주변 기기를 추출하는 단계; 및 호스트 운영체제가 추출된 주변 기기에 대한 정보를 게스트 운영체제에게 전송하는 단계;를 포함할 수 있다.
또한, 게스트 운영체제와 통신 링크를 설정할 수 있는 주변 기기를 추출하는 단계는, 탐색된 적어도 하나의 주변 기기 중에서, 호스트 운영체제와 통신 링크가 설정되어 있지 않은 주변 기기를 추출하는 단계; 및 탐색된 적어도 하나의 주변 기기 중에서, 호스트 운영체제와 통신 링크가 설정되어 있으며 호스트 운영체제가 전용하도록 설정된 주변 기기를 추출하는 단계;를 포함할 수 있다.
본 개시의 일 실시예에 따라 전자 장치는, 게스트 운영체제 및 게스트 운영체제로부터 제 1 데이터를 수신하고, 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하며, 결정에 기초하여 제 1 데이터를 패킷화(packetizing)하는 호스트 운영체제를 제어하는 제어부; 및 호스트 운영체제에 의해 패킷화된 데이터를 주변 기기에게 전송하는 통신부;를 포함할 수 있다.
또한, 제어부는, 제 1 데이터가 HCI 패킷을 포함하는 경우 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 제 1 데이터가 HCI 패킷을 포함하지 않는 경우 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 제어부는, 호스트 운영체제가 주변 기기를 전용하도록 설정되어 있는 경우, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 호스트 운영체제가 게스트 운영체제와 주변 기기를 함께 사용하도록 설정되어 있는 경우, 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 제어부는, 제 2 통신 링크로 전환하는 것으로 결정되는 경우, 제 1 데이터에 포함된 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 호스트 운영체제를 제어할 수 있다.
또한, 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 제어부는, 제 1 통신 링크 설정 시에 호스트 운영체제와 주변 기기 내에 저장된 링크키에 기초하여 주변 기기와 인증 작업을 수행하고, 제 1 통신 링크에 기초하여 제 1 데이터에 대한 HCI 패킷을 생성하며, 제 1 통신 링크의 물리적 특성에 기초하여 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 호스트 운영체제를 제어할 수 있다.
또한, 제어부는, 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 호스트 운영체제 내에서 처리된 제 2 데이터를 획득하고, 제 1 데이터 및 제 2 데이터를 결합하는 호스트 운영체제를 제어하며, 통신부는, 제 1 통신 링크에 기초하여 호스트 운영체제에 의해 결합된 데이터를 주변 기기에게 전송할 수 있다.
또한, 통신부는, ACL(Asynchronous Connection Less) 패킷 또는 SCO(Synchronous Connection Oriented) 패킷을 전송할 수 있다.
본 개시의 다른 실시예에 따라 전자 장치는, 전자 장치의 화면 상에 표시된 호스트 운영체제의 구동화면을 게스트 운영체제의 구동화면으로 변경하는 디스플레이부; 게스트 운영체제 및 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하며, 결정에 기초하여 게스트 운영체제로부터 수신된 제 3 데이터를 패킷화하는 호스트 운영체제를 제어하는 제어부; 및 호스트 운영체제에 의해 패킷화된 데이터를 주변 기기에게 전송하는 통신부;를 포함할 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 장치(100) 및 주변 기기(200)를 설명하는 도면이다.
도 2는 전자 장치(100)와 주변 기기(200) 간에 데이터를 송수신하기 위한 통신 링크를 설명하는 도면이다.
도 3은 일 실시예에 따라 전자 장치(100)내에 설치된 호스트 운영체제(101) 및 게스트 운영체제(102)가 주변 기기(200)와 통신하는 방법을 설명하는 흐름도이다.
도 4는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하는지 여부에 대한 설정이 저장되는 일례이다.
도 5는 호스트 운영체제(101)가 제 1 통신 링크를 유지하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 도면이다.
도 6은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신된 데이터를 제 1 주변 기기(200a)에게 전송하는 일례이다.
도 7은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신되는 데이터 및 호스트 운영체제(101)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 흐름도이다.
도 8은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신되는 데이터 및 호스트 운영체제(101)에 의해 처리된 데이터를 제 1 주변 기기(200a)에게 전송하는 일례이다.
도 9는 호스트 운영체제(101)가 제 1 통신 링크를 전환하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 도면이다.
도 10a 및 10b는 호스트 운영체제(101)가 제 1 통신 링크를 전환하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 일례이다.
도 11은 전자 장치(100) 내에 설치된 호스트 운영체제(101) 및 게스트 운영체제(102)가 주변 기기(200)와 통신하는 다른 실시예를 설명하는 흐름도이다.
도 12a 및 12b는 전자 장치(100)의 화면 상에 표시된 호스트 운영체제(101)의 구동화면이 게스트 운영체제(102)의 구동화면으로 변경되는 일례이다.
도 13은 전자 장치(100) 내에 설치된 게스트 운영체제(102)가 주변 기기를 탐색하는 방법을 설명하는 흐름도이다.
도 14는 게스트 운영체제(102) 내의 설정(setting)에서 주변 기기에 대한 탐색을 요청하는 일례이다.
도 15는 호스트 운영체제(101)가 전자 장치(100)가 주변 기기(200)를 탐색하는 방법을 설명하는 도면이다.
도 16a 및 16b는 게스트 운영체제(102)가 호스트 운영체제(101)에 의해 추출된 주변 기기에 대한 정보를 표시하는 일례이다.
도 17은 전자 장치(100)와 제 2 주변 기기(200b)가 통신 링크를 셋업하는 방법을 설명하는 도면이다.
도 18a 내지 도 18c는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부를 설정하는 GUI의 일례이다.
도 19는 전자 장치(100)가 주변 기기(200)로부터 데이터를 수신하는 방법을 설명하는 흐름도이다.
도 20은 일 실시예에 따라 전자 장치(100)가 주변 기기들과 통신하는 방법을 설명하는 도면이다.
도 21 및 도 22는 일 실시예에 따라 전자 장치(100)의 구성을 도시하는 도면이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 일 실시예에 따른 전자 장치(100) 및 주변 기기(200)를 설명하는 도면이다.
도 1을 참조하면, 전자 장치(100)는 호스트 운영체제(host operating system, 101), 게스트 운영체제(guest operating system, 102) 및 하이퍼바이저(hypervisor, 103)를 포함할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 전자 장치(100) 내의 자원(resource) 및 구성요소들을 제어함으로써, 다양한 응용 프로그램들을 수행할 수 있다. 예를 들어, 호스트 운영체제(101)는 데이터를 처리하고, 처리된 데이터를 패킷화(packetizing)한 후 통신부(104)를 통해 주변 기기(200)에게 전송할 수 있다. 이때, 데이터를 패킷화 한다는 것은, 호스트 운영체제(101)가 외부 장치 또는 전자 장치(100) 내의 다른 구성요소에게 데이터를 송수신하기 위하여 패킷(packet)을 생성하는 작업일 수 있다. 예를 들어, 패킷화 작업은 데이터에 대한 식별 정보 부가, 암호화, 또는 오류 제어 등의 작업을 포함할 수 있다.
일 실시예에 따라 게스트 운영체제(102)는 가상 운영체제(virtual operating system)일 수 있다. 가상 운영체제는 한 대의 장치가 복수의 운영체제를 병렬적으로 수행하는 것처럼 보이는 기법일 수 있다. 예를 들어, 게스트 운영체제(102)는 게스트 운영체제(102) 내에서 다양한 응용 프로그램을 수행할 수 있다. 그러나, 게스트 운영체제(102)는 전자 장치(100) 내의 자원 및 구성요소들을 직접 제어할 수 없다.
예를 들어, 게스트 운영체제(102)는 데이터를 처리하고, 처리된 데이터에 대한 패킷화 작업을 수행할 수 있다. 그러나, 게스트 운영체제(102)는 패킷화 작업이 완료된 데이터를 주변 기기(200)에게 전송하기 위하여 통신부(104)를 직접 제어할 수 없으며, 호스트 운영체제(101)에게 전송한다.
일 실시예에 따라 하이퍼바이저(103)는 호스트 운영체제(101) 또는 게스트 운영체제(102)가 전자 장치(100) 내의 자원 및 구성요소들에 접근하는 것을 통제할 수 있다. 또한, 하이퍼바이저(103)는 게스트 운영체제(102)와 호스트 운영체제(101) 간의 데이터 송수신을 위한 가상 인터페이스(virtual interface)를 포함할 수 있다. 가상 인터페이스는 게스트 운영체제(102)와 호스트 운영체제(101) 간의 입출력(I/O)에 대한 가상화 메커니즘을 제공할 수 있다. 예를 들어, 가상 블루투스 인터페이스(virtual Bluetooth interface)(130)는 게스트 운영체제(102)로부터 HCI 패킷(host controller interface packet)을 수신하거나, 호스트 운영체제(101)로부터 수신된 HCI 패킷을 게스트 운영체제(102)에게 전송할 수 있다.
한편, 하이퍼바이저(103)는 호스트 운영체제(101) 상에서 실행될 수 있으며, 호스트 운영체제(101)와 독립되어 실행될 수도 있다. 전자의 경우, 하이퍼바이저(103)는 호스트 운영체제(101) 상에서 실행되는 응용 프로그램일 수 있다. 후자의 경우, 하이퍼바이저(103)는 전자 장치(100) 내의 특정 구성요소(예컨대, 프로세서 등) 상에서의 펌웨어(firmware)일 수 있다. 이하의 실시예에서는, 설명의 편의상, 하이퍼바이저(103)가 호스트 운영체제(101) 상에서 실행되는 것으로 가정한다.
위 설명에서, 호스트 운영체제(101) 및 게스트 운영체제(102)는 동종 또는 이종의 운영체제일 수 있다. 또한, 도 1에서는 호스트 및 게스트 운영체제가 각각 하나인 것으로 설명하였으나, 이에 제한되지 않으며, 하나의 호스트 운영체제와 복수 개의 게스트 운영체제가 전자 장치(100) 내에서 구동될 수도 있다.
또한, 전자 장치(100) 내에서 구동되는 호스트 운영체제(101)와 게스트 운영체제(102)는 주변 기기(200)와 통신할 수 있다. 일 실시예에 따라 호스트 운영체제(101) 또는 게스트 운영체제(102)는 전자 장치(100)와 주변 기기(200) 간에 설정된 통신 링크(communication link)를 통하여, 호스트 운영체제(101) 또는 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)와 송수신할 수 있다.
도 2는 전자 장치(100)와 주변 기기(200) 간에 데이터를 송수신하기 위한 통신 링크를 설명하는 도면이다.
도 2를 참조하면, 통신 링크는 논리 채널(logical channel, 210) 및 물리 채널(physical channel, 220)을 포함할 수 있다. 여기서, 논리 채널(210)은 복수의 장치 사이에서 송수신되는 패킷을 제어하는 논리적 수단을 의미할 수 있다. 또한, 물리 채널(220)은 복수의 장치 사이에서 패킷을 송수신하기 위한 물리적 전송로를 의미할 수 있으며, 유선 또는 무선으로 구성될 수 있다.
논리 채널(210)에서는 인증 작업, 상대 장치의 식별 정보 부가, 오류 제어 작업 등을 포함하는 제 1 패킷화 작업이 수행될 수 있다. 이때, 논리 채널(210)을 제어하는 주체는 호스트 운영체제(101) 또는 게스트 운영체제(102) 일 수 있다. 또한, 인증 작업 등은 논리 채널(210)의 셋업(set-up, 초기 설정) 시(예컨대, 블루투스 주변 장치와의 페어링 작업 수행 시)에 논리 채널(210)을 제어하는 주체(즉, 호스트 운영체제(101) 또는 게스트 운영체제(102))와 주변 기기(200) 내에 저장되는 링크키(link key)에 기초하여 이루어질 수 있다. 한편, 제 1 패킷화 작업이 완료된 데이터는 HCI 패킷(host controller interface)을 포함할 수 있다.
또한, 물리 채널(220)에서는 장치 간 물리적 전송로의 특성에 따른 정보 부가, 패킷 분할, 패킷 송수신 등의 작업을 포함하는 제 2 패킷화을 수행될 수 있다. 이때, 물리 채널(220)을 제어하는 주체는 호스트 운영체제(101)일 수 있다. 한편, 제 2 패킷화 작업이 완료된 데이터는 블루투스 패킷, USB 패킷, UART 패킷 등을 포함할 수 있다.
이하에서는, 호스트 운영체제(101)에 의해 제어되는 논리 채널(210) 및 물리 채널(220)을 포함하는 통신 링크를 제 1 통신 링크라 하며, 게스트 운영체제(102)에 의해 제어되는 논리 채널(210) 및 호스트 운영체제(101)에 의해 제어되는 물리 채널(220)을 포함하는 통신 링크를 제 2 통신 링크라 한다.
호스트 운영체제(101)와 주변 기기(200) 간에 제 1 통신 링크가 설정되어 있는 경우, 게스트 운영체제(102)가 주변 기기(200)와 통신하기 위해서는 제 1 통신 링크를 제 2 통신 링크로 전환해야 하는 오버헤드(overhead)가 발생될 수 있다. 예를 들어, 전자 장치(100)는 통신 링크의 논리 채널(210)을 제어하는 주체가 변경됨에 따라, 이전에 사용되던 링크키를 폐기하고 새로운 링크키를 저장하기 위해 주변 기기(200)와의 통신 링크 설정 작업(예컨대, 페어링 작업)을 수행할 수 있다.
또는, 게스트 운영체제(102)가 제 1 통신 링크를 통해 데이터를 주변 기기(200)에게 전송하기 위해서는, 호스트 운영체제(101)가 게스트 운영체제(102)에서 제 1 패킷화 작업이 완료된 데이터를 해체한 후, 제 1 통신 링크에 따라 데이터를 다시 제 1 패킷화 작업을 수행해야 하는 오버헤드가 발생될 수 있다.
본 발명은, 일 실시예에 따라 전자 장치(100)는 호스트 운영체제(101)와 주변 기기(200) 간 제 1 통신 링크가 설정되면, 호스트 운영체제(101)가 게스트 운영체제(102) 내에서 생성된 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행하도록 할 수 있다. 따라서, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 전송된 데이터를 해체한 후 다시 제 1 패킷화 작업을 해야 하는 오버헤드를 감소시킬 수 있다.
또는, 호스트 운영체제(101)와 주변 기기(200) 간의 제 1 통신 링크가 설정되어 있는 경우, 게스트 운영체제(102)가 제 1 통신 링크의 논리 채널 설정 시에 생성된 링크키를 공유하도록 할 수 있다. 이에 따라, 호스트 운영체제(101)는 제 1 통신 링크를 제 2 통신 링크로 전환하기 위하여 페어링 작업을 다시 해야 하는 오버헤드를 감소시킬 수 있다.
도 3은 일 실시예에 따라 전자 장치(100)내에 설치된 호스트 운영체제(101) 및 게스트 운영체제(102)가 주변 기기(200)와 통신하는 방법을 설명하는 흐름도이다.
도 3을 참조하면, 단계 S310에서, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 데이터를 수신할 수 있다.
일 실시예에 따라 게스트 운영체제(102)는 게스트 운영체제(102)와 주변 기기(200) 간에 제 2 통신 링크가 설정되어 있는지 판단할 수 있다. 게스트 운영체제(102)는 제 2 통신 링크가 설정되어 있지 않은 경우, 게스트 운영체제(102) 내에서 처리된 데이터를 하이퍼바이저(103)에게 전송할 수 있다.
또는 게스트 운영체제(102)는 제 2 통신 링크가 설정되어 있는 경우, 게스트 운영체제(102) 내에서 처리된 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 이때, 제 2 통신 링크는 제 1 통신 링크와 링크키를 공유할 수 있다. 또한, 제 1 패킷화 작업이 완료된 데이터는 HCI 패킷을 포함할 수 있다. 따라서, 게스트 운영체제(102)는 HCI 패킷을 포함하는 데이터를 하이퍼바이저(103)에게 전송할 수 있다.
일 실시예에 따라 데이터는 게스트 운영체제(102)로부터 하이퍼바이저(103)를 통해 호스트 운영체제(101)로 전송될 수 있다.
단계 S320에서, 호스트 운영체제(101)는 호스트 운영체제(101)와 주변 기기(200) 간에 설정된 통신 링크를 전환할지 여부를 결정할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 데이터 포맷(format)에 기초하여 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정할 수 있다.
예를 들어, 게스트 운영체제(102)로부터 수신된 데이터가 HCI(host controller interface) 패킷을 포함하는 경우, 호스트 운영체제(101)는 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정할 수 있다.
또는, 게스트 운영체제(102)로부터 수신된 데이터가 HCI 패킷을 포함하지 않는 경우, 호스트 운영체제(101)는 제 1 통신 링크를 유지할 수 있다.
다른 실시예에 의하면, 호스트 운영체제(101)는 호스트 운영체제(101)가 주변 기기(200)를 게스트 운영체제(102)와 함께 사용할지 여부에 대한 설정에 기초하여, 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정할 수 있다.
예를 들어, 전자 장치(100)는 호스트 운영체제(101)가 주변 기기(200)와 통신 링크를 셋업(set-up)할 때, 호스트 운영체제(101)와 게스트 운영체제(102)가 주변 기기(200)를 함께 사용하거나, 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정할 수 있다. 이때, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용한다는 것은, 호스트 운영체제(101) 및 게스트 운영체제(102)에서 처리되는 데이터가 제 1 통신 링크를 통해 주변 기기(200)에게 전송되는 것일 수 있다. 따라서, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하는 것으로 설정되어 있으면, 호스트 운영체제(101)는 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 호스트 운영체제(101)가 주변 기기(200)를 전용한다는 것은, 호스트 운영체제(101)에 의해 처리된 데이터만이 제 1 통신 링크를 통해 주변 기기(200)에게 전송되는 것일 수 있다. 따라서, 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정되어 있으면, 게스트 운영체제(102)는 제 1 통신 링크를 통해 데이터를 주변 기기(200)에게 전송할 수 없다. 이 경우, 호스트 운영체제(101)는 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정할 수 있다.
도 4는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하는지 여부에 대한 설정이 저장되는 일례이다.
도 4를 참조하면, 호스트 운영체제(101)는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부에 대한 설정 값을 포함하는 테이블(410)을 저장할 수 있다.
일 실시예에 따라 호스트 운영체제(101)가 게스트 운영체제(102)와 제 1 주변 기기를 함께 사용하는 것으로 설정하는 경우, 호스트 운영체제(101)는 제 1 주변 기기의 식별 정보와 함께 ‘TRUE(0x1)’를 저장할 수 있다. 또한, 호스트 운영체제(101)가 제 2 주변 기기를 전용하도록 설정하는 경우, 호스트 운영체제(101)는 제 2 주변 기기의 식별 정보와 함께 ‘FALSE(0x0)’를 저장할 수 있다.
한편, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부는, 사용자에 의해 설정될 수 있으며, 주변 기기(200)의 특성 별로 자동으로 설정될 수도 있다. 예를 들어, 오디오 기기와 호스트 운영체제(101) 간의 통신 링크가 설정되는 경우, 호스트 운영체제(101)는 게스트 운영체제(102)와 오디오 기기를 함께 사용하는 것으로 설정할 수 있다.
이후, 게스트 운영체제(102)가 주변 기기를 탐색하는 경우, 호스트 운영체제(101)는 호스트 운영체제(101)와 게스트 운영체제(102)가 함께 사용하는 주변 기기들에 대한 정보를 게스트 운영체제(102)에게 감출 수 있다. 따라서, 게스트 운영체제(102)는 호스트 운영체제(101)가 전용하도록 설정된 주변 기기들에 대해서만 제 2 통신 링크를 설정할 수 있다. 게스트 운영체제(102)가 주변 기기를 탐색하는 방법에 대해서는, 도 13 내지 도 18에서 자세히 설명한다.
다시 도 3을 참조하면, 단계 S340에서, 호스트 운영체제(101)는 통신 링크 전환 여부에 기초하여, 게스트 운영체제(102)로부터 수신된 데이터를 패킷화(packetizing)할 수 있다. 또한, 단계 S350에서 패킷화된 데이터는 주변 기기(200)에게 전송될 수 있다.
일 실시예에 따라 호스트 운영체제(101)는, 호스트 운영체제(101)가 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 제 1 통신 링크 설정 시에 호스트 운영체제(101)와 주변 기기(200)에 저장된 제 1 링크키에 기초하여 게스트 운영체제(102)로부터 수신된 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 또한, 호스트 운영체제(101)는 제 2 패킷화 작업을 수행할 수 있다. 호스트 운영체제(101)는 제 2 패킷화 작업이 완료된 데이터를, 제 1 통신 링크를 통해, 주변 기기(200)에게 전송될 수 있다.
또는, 호스트 운영체제(101)가 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하는 경우, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다. 이때, 게스트 운영체제(102)로부터 수신되는 데이터는 게스트 운영체제(102)에 의해 제 1 패킷화 작업이 완료된 데이터일 수 있다. 호스트 운영체제(101)는 제 2 패킷화 작업이 완료된 데이터를, 제 2 통신 링크를 통해, 주변 기기(200)에게 전송될 수 있다.
한편, 주변 기기(200)에게 전송되는 데이터는 ACL(Asynchronous Connectionless) 패킷 및 SCO(Synchronous Connection Orient) 패킷 형태일 수 있다. ACL 패킷은 1대 N 연결을 지원하며, 대칭형 또는 비대칭 형의 회선 교환 방식으로 전송된다. 또한, SCO 패킷은 주로 음성에 사용되는 대칭형의 회선 교환 방식으로 전송된다.
도 5는 호스트 운영체제(101)가 제 1 통신 링크를 유지하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 도면이다.
도 5를 참조하면, 호스트 운영체제(101)는 호스트 운영체제(101)에 의해 제어되는 논리 채널(580-1) 및 물리 채널(580-2)을 포함하는 제 1 통신 링크(580)를 통해 주변 기기(200)와 패킷을 송수신할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 제 1 통신 링크(580) 설정 시에 호스트 운영체제(101)와 주변 기기(200) 내에 저장된 제 1 링크키(570)에 기초하여, 호스트 운영체제(101) 내에서 처리되는 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다. 또한, 호스트 운영체제(101)는 제 2 패킷화 작업이 완료된 데이터를 주변 기기(200)에게 전송할 수 있다.
예를 들어, 게스트 운영체제(102)는 게스트 운영체제(102) 내에서 처리된 오디오 데이터 또는 HID(human interface device) 데이터를 오디오 스택(audio stack, 510), HID 스택(human interface device stack, 520)을 통해 하이퍼바이저(103)에게 전송할 수 있다. 또한, 하이퍼바이저(103)는 수신된 오디오 데이터 또는 HID 데이터를 가상 오디오 인터페이스(530), 가상 HID 인터페이스(540)를 통해 호스트 운영체제(101)에게 전송할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 오디오 데이터 또는 HID 데이터가 HCI 패킷을 포함하지 않으므로, 제 1 통신 링크(580)를 유지하는 것으로 결정할 수 있다.
다른 실시예에 따라 호스트 운영체제(101)는 호스트 운영체제(101) 내에 저장된 도 4의 테이블(410)을 통해, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하도록 설정되어 있는지 판단할 수 있다. 호스트 운영체제(101)는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하는 경우, 제 1 통신 링크(580)를 유지하는 것으로 결정할 수 있다.
또한, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 오디오 데이터 또는 HID 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 예를 들어, 주변 기기(200)가 블루투스 오디오 기기 또는 블루투스 HID 기기인 경우, 호스트 운영체제(101)는 제 1 링크키(570)를 이용하여, 주변 기기(200)와 인증 작업을 수행할 수 있다. 인증이 완료되면, 호스트 운영체제(101)는 호스트 운영체제(101)의 블루투스 스택(Bluetooth Stack)(110) 내의 RFCOMM(Radio Frequency Communications, 551), L2CAP(Logical Link Control and Adaptation Protocol, 553), SCO(Synchronous Connection-Oriented, 555), ACL(Asynchronous Connection-Oriented Logical, 557), HCI 레이어(559) 등의 프로토콜 레이어를 통해, 오디오 데이터 또는 HID 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 제 1 패킷화 작업이 완료되면, 호스트 운영체제(101)는 HCI 패킷 형태의 오디오 데이터 또는 HID 데이터를 통신부(104)에게 전송할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 통신부(104)를 제어함으로써, HCI 패킷 형태로 전송된 오디오 데이터 또는 HID 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다. 이때, 제 2 패킷화 작업은 제 1 통신 링크(580)의 물리적 특성에 기초할 수 있다. 예를 들어, 호스트 운영체제(101)는 링크 매니저(link manager, 562), 블루투스 베이스밴드(564) 등을 포함하는 블루투스 컨트롤러(560)를 통해 오디오 데이터 또는 HID 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다.
도 6은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신된 데이터를 제 1 주변 기기(200a)에게 전송하는 일례이다.
도 6을 참조하면, 전자 장치(100)는 게스트 운영체제(102)의 구동화면을 전자 장치(100)의 화면 상에 표시할 수 있다. 예를 들어, 전자 장치(100)는 게스트 운영체제(102) 내에서 수행되는 음악 재생 어플리케이션의 실행화면(610)을 전자 장치(100)의 화면 상에 표시할 수 있다. 이때, 제 1 주변 기기(200a)는 호스트 운영체제(101)가 게스트 운영체제(102)와 함께 사용하도록 설정되어 있으며, 호스트 운영체제(101)와 제 1 통신 링크(580)에 의해 연결된 상태일 수 있다.
예를 들어, 게스트 운영체제(102)는 음악 재생 어플리케이션 내에서 처리된 오디오 데이터를 호스트 운영체제(101)에게 전송할 수 있다. 호스트 운영체제(101)는, 도 4의 테이블(410)에 기초하여, 오디오 데이터를 제 1 주변 기기(200a)에게 전송하기 위한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다. 일 실시예에 따라 호스트 운영체제(101)에 의해 패킷화된 오디오 데이터는 제 1 주변 기기(200a)를 통해 출력(630)될 수 있다.
도 7은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신되는 데이터 및 호스트 운영체제(101)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 흐름도이다.
도 7을 참조하면, 단계 S710에서, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 제 1 데이터를 수신할 수 있다. 예를 들어, 게스트 운영체제(102)는 게스트 운영체제(102)와 주변 기기(200) 간에 제 2 통신 링크가 설정되어 있지 않은 경우, HCI 패킷을 포함하지 않는 제 1 오디오 데이터 또는 제 1 HID 데이터를 하이퍼바이저(103)에게 전송할 수 있다.
단계 S720에서, 호스트 운영체제(101)는 호스트 운영체제(101) 내에서 처리된 제 2 데이터를 획득할 수 있다. 예를 들어, 호스트 운영체제(101)는 제 2 오디오 데이터 또는 제 2 HID 데이터를 획득할 수 있다.
단계 S730에서, 호스트 운영체제(101)는 제 1 데이터를 제 2 데이터와 결합할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 호스트 운영체제(101) 내의 서비스 레이어(service layer)에서 제 1 데이터와 제 2 데이터를 결합할 수 있다. 예를 들어, 호스트 운영체제(101)는 오디오 서비스 레이어에서 제 1 오디오 데이터와 제 2 오디오 데이터를 결합할 수 있다. 또는 호스트 운영체제(101)는 HID 서비스 레이어에서 제 1 HID 데이터와 제 2 HID 데이터를 결합할 수 있다.
단계 S740에서, 호스트 운영체제(101)는 제 1 통신 링크에 기초하여 결합 데이터에 대한 패킷화 작업을 수행할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 제 1 통신 링크 설정 시에 호스트 운영체제(101)와 주변 기기(200)에 저장된 제 1 링크키에 기초하여 주변 기기(200)를 인증할 수 있다. 인증이 완료되면, 호스트 운영체제(101)는 결합된 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다.
또한, 제 1 및 제 2 패킷화 작업이 완료된 결합 데이터를 주변 기기(200)에게 전송할 수 있다.
도 8은 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신되는 데이터 및 호스트 운영체제(101)에 의해 처리된 데이터를 제 1 주변 기기(200a)에게 전송하는 일례이다.
도 8을 참조하면, 전자 장치(100)는 도 6에서와 같이, 게스트 운영체제(102) 내에서 수행되는 음악 재생 어플리케이션의 실행화면(610)을 전자 장치(100)의 화면 상에 표시할 수 있다. 이때, 제 1 주변 기기(200a)는 호스트 운영체제(101)가 게스트 운영체제(102)와 함께 사용하도록 설정되어 있으며, 호스트 운영체제(101)와 제 1 통신 링크(580)에 의해 연결된 상태일 수 있다.
예를 들어, 게스트 운영체제(102)는 음악 재생 어플리케이션 내에서 처리된 제 1 오디오 데이터를 호스트 운영체제(101)에게 전송할 수 있다. 또한, 호스트 운영체제(101)는 호스트 운영체제(101) 내에서 이메일이 수신됨에 따라, 이메일이 수신되었음을 나타내는 알림창(810) 및 알림 신호(즉, 제 2 오디오 데이터)를 생성할 수 있다.
호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 제 1 오디오 데이터 및 호스트 운영체제(101)에 의해 생성된 제 2 오디오 데이터를 결합할 수 있다. 또한, 호스트 운영체제(101)는 결합 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다.
제 1 주변 기기(200a)는 전자 장치(100)로부터 결합된 데이터를 수신하고, 결합 데이터를 출력할 수 있다. 따라서, 사용자는 호스트 운영체제(101) 및 게스트 운영체제(102)에 의해 생성된 오디오 데이터를 끊김 없이 제공받을 수 있다.
도 9는 호스트 운영체제(101)가 제 1 통신 링크를 전환하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 방법을 설명하는 도면이다.
도 9를 참조하면, 게스트 운영체제(102)는 게스트 운영체제(102)에 의해 제어되는 논리 채널(980-1) 및 호스트 운영체제(101)에 의해 제어되는 물리 채널(980-2)을 포함하는 제 2 통신 링크(980)를 통해 패킷을 송수신할 수 있다.
일 실시예에 따라 게스트 운영체제(102)는 제 2 통신 링크(980) 설정 시에 호스트 운영체제(101)와 주변 기기(200) 내에 저장된 제 1 링크키(570)를 공유할 수 있다. 예를 들어, 게스트 운영체제(102)는 제 2 통신 링크(980) 설정 시에 호스트 운영체제(101)와 주변 기기(200) 간에 저장된 링크키를 호스트 운영체제(101)에게 요청할 수 있다. 따라서, 전자 장치(100)는 게스트 운영체제(102)와 주변 기기(200) 간의 페어링 작업을 다시 수행할 필요 없이, 제 1 통신 링크를 제 2 통신 링크로 전환할 수 있다.
일 실시예에 따라 게스트 운영체제(102)는 제 2 통신 링크(980)가 설정되어 있으므로, 게스트 운영체제(102) 내에서 처리되는 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 예를 들어, 게스트 운영체제(102)는 제 1 링크키(570)를 이용하여, 주변 기기(200)와 인증 작업을 수행할 수 있다. 인증이 완료되면, 게스트 운영체제(102)는 게스트 운영체제(102)의 블루투스 스택(120) 내의 RFCOMM(Radio Frequency Communications, 921), L2CAP(Logical Link Control and Adaptation Protocol, 923), SCO(Synchronous Connection-Oriented, 925), ACL(Asynchronous Connection-Oriented Logical, 927), HCI 레이어(929) 등의 프로토콜 레이어를 통해, 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다. 제 1 패킷화 작업이 완료되면, 게스트 운영체제(102)는 HCI 패킷 형태의 데이터를 하이퍼바이저(103)에게 전송할 수 있다.
일 실시예에 따라 하이퍼바이저(103)의 가상 HCI 인터페이스(130)는 수신된 HCI 패킷 형태의 데이터를 호스트 운영체제(101)에게 전송할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 데이터가 HCI 패킷을 포함하고 있으므로, 제 1 통신 링크를 제 2 통신 링크(980)로 전환하는 것으로 결정할 수 있다.
다른 실시예에 따라 호스트 운영체제(101)는 호스트 운영체제(101) 내에 저장된 도 4의 테이블(410)을 통해, 호스트 운영체제(101)가 게스트 운영체제(102)가 주변 기기(200)를 함께 사용하도록 설정되어 있는지 판단할 수 있다. 호스트 운영체제(101)는 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정되어 있는 경우, 제 1 통신 링크를 제 2 통신 링크(980)으로 전환하는 것으로 결정할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 통신 링크를 전환하는 것으로 결정된 경우, 호스트 운영체제(101)의 블루투스 스택(110) 내의 HCI 레이어(559)를 통해 게스트 운영체제(102)로부터 수신된 데이터를 통신부(104)로 제공할 수 있다.
일 실시예에 따라 통신부(104)는, 호스트 운영체제(101)의 제어에 의해, HCI 패킷 형태로 전송된 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다. 이때, 제 2 패킷화 작업은 제 2 통신 링크(980)의 물리적 특성에 기초할 수 있으며, 제 2 통신 링크(980)의 물리적 특성은 제 1 통신 링크(580)와 동일 또는 유사할 수 있다. 예를 들어, 통신부(104)는 링크 매니저(link manager, 562), 블루투스 베이스밴드(564) 등을 포함하는 블루투스 컨트롤러(560)를 통해 오디오 데이터 또는 HID 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다.
이와 같이, 전자 장치(100)는 제 1 통신 링크를 제 2 통신 링크를 전환하는 경우, 호스트 운영체제(101)와 주변 기기(200) 간에 저장된 링크키를 게스트 운영체제(102)가 공유함으로써, 통신 링크 전환에 따른 오버헤드를 감소시킬 수 있다.
도 10a 및 10b는 호스트 운영체제(101)가 제 1 통신 링크를 전환하는 경우, 게스트 운영체제(102)에 의해 처리된 데이터를 주변 기기(200)에게 전송하는 일례이다.
도 10a 및 10b를 참조하면, 전자 장치(100)는 호스트 운영체제(101)의 구동화면을 전자 장치(100)의 화면 상에 표시할 수 있다.
예를 들어, 전자 장치(100)는, 도 10a에 도시된 바와 같이, 호스트 운영체제(101) 내에서 수행되는 동영상 어플리케이션의 실행화면(1010)을 전자 장치(100)의 화면 상에 표시할 수 있다. 이때, 제 1 주변 기기(200a)는 호스트 운영체제(101)가 전용하도록 설정되어 있으며, 호스트 운영체제(101)와 제 1 통신 링크(580)에 의해 연결된 상태일 수 있다. 따라서, 호스트 운영체제(101)는 동영상 어플리케이션 내에서 처리된 제 1 오디오 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다. 또한, 호스트 운영체제(101)는 패킷화 작업이 완료된 제 1 오디오 데이터를, 제 1 통신 링크(580)를 통해, 제 1 주변 기기(200a)에게 전송할 수 있다. 또한, 제 1 주변 기기(200a)는 제 1 오디오 데이터에 대응되는 제 1 오디오 신호(1020)를 출력할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는, 게스트 운영체제(102)로부터 제 2 오디오 데이터를 수신할 수 있다. 예를 들어, 호스트 운영체제(101)는, 도 10b에 도시된 바와 같이, 게스트 운영체제(102) 내에서 이메일이 수신됨에 따라, 게스트 운영체제(102)로부터 이메일이 수신되었음을 나타내는 알림 신호에 대응되는 제 2 오디오 데이터를 수신할 수 있다. 이때, 제 2 오디오 데이터는 제 2 통신 링크(980)에 기초하여, 제 1 패킷화 작업이 완료된 데이터일 수 있다.
호스트 운영체제(101)는 게스트 운영체제(102)로부터 제 2 오디오 데이터가 수신되면, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정할 수 있다. 이후, 호스트 운영체제(101)는 제 1 오디오 데이터에 대한 패킷화 작업을 중단하고, 제 2 오디오 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다.
또한, 제 1 주변 기기(200a)는 전자 장치(100)로부터 제 2 오디오 데이터를 수신하고, 제 2 오디오 데이터에 대응되는 제 2 오디오 신호(1030)를 출력할 수 있다.
도 11은 전자 장치(100) 내에 설치된 호스트 운영체제(101) 및 게스트 운영체제(102)가 주변 기기(200)와 통신하는 다른 실시예를 설명하는 흐름도이다.
도 11을 참조하면, 단계 S1110에서, 전자 장치(100)는 전자 장치(100) 화면 상에 표시된 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경할 수 있다.
일 실시예에 따라 전자 장치(100)는 사용자로부터 수신된 사용자 입력에 의해, 전자 장치(100)의 화면 상에 표시된 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경할 수 있다.
또는, 전자 장치(100)는 게스트 운영체제(102) 내에서 처리된 데이터가 호스트 운영체제(101)에게 전송됨에 따라, 전자 장치(100)의 화면 상에 표시된 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경할 수도 있다. 또는, 전자 장치(100)는 호스트 운영체제(101)가 소정 시간 동안 어플리케이션을 수행하지 않는 경우, 전자 장치(100)의 화면 상에 표시된 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경할 수도 있다.
단계 S1120에서, 호스트 운영체제(101)가 호스트 운영체제(101)와 주변 기기(200) 간 설정된 제 1 통신 링크를, 게스트 운영체제(102)와 주변 기기(200) 간 설정된 제 2 통신 링크로 전환할지 여부를 결정할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 호스트 운영체제(101)와 게스트 운영체제(102)의 주변 기기(200) 사용에 대한 설정에 기초하여, 제 1 통신 링크를 전환할지 여부를 결정할 수 있다.
예를 들어, 전자 장치(100)는 호스트 운영체제(101)가 주변 기기(200)와 통신 링크를 셋업(set-up)하는 때, 호스트 운영체제(101)와 게스트 운영체제(102)가 주변 기기(200)를 함께 사용하거나, 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정할 수 있다. 이때, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용한다는 것은, 호스트 운영체제(101) 및 게스트 운영체제(102)에서 처리되는 데이터가 제 1 통신 링크를 통해 주변 기기(200)에게 전송되는 것일 수 있다. 따라서, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하는 것으로 설정되어 있으면, 호스트 운영체제(101)는 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
또한, 호스트 운영체제(101)가 주변 기기(200)를 전용한다는 것은, 호스트 운영체제(101)에서 처리된 데이터만이 제 1 통신 링크를 통해 주변 기기(200)에게 전송되는 것일 수 있다. 따라서, 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정되어 있으면, 호스트 운영체제(101)는 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정할 수 있다.
단계 S1130에서, 호스트 운영체제(101)는 통신 링크 전환 여부에 기초하여, 게스트 운영체제(102)로부터 수신된 데이터를 패킷화(packetizing)할 수 있다. 또한, 단계 S1140에서, 호스트 운영체제(101)는 패킷화된 데이터를 주변 기기(200)에게 전송할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는, 호스트 운영체제(101)가 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 제 1 통신 링크 설정 시에 호스트 운영체제(101)와 주변 기기(200)에 저장된 제 1 링크키에 기초하여 게스트 운영체제(102)로부터 수신된 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행할 수 있다. 호스트 운영체제(101)는 제 2 패킷화 작업이 완료된 데이터를, 제 1 통신 링크를 통해, 주변 기기(200)에게 전송될 수 있다.
또는, 호스트 운영체제(101)는, 호스트 운영체제(101)가 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하는 경우, 게스트 운영체제(102)로부터 수신된 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다. 이때, 게스트 운영체제(102)로부터 수신된 데이터는 게스트 운영체제(102)에 의해 제 1 패킷화 작업이 완료된 데이터일 수 있다. 호스트 운영체제(101)는 제 2 패킷화 작업이 완료된 데이터를, 제 2 통신 링크를 통해, 주변 기기(200)에게 전송될 수 있다.
한편, 위 설명에서는 호스트 운영체제(101)의 구동화면이 게스트 운영체제(102)의 구동화면으로 변경되는 것으로 설명하였으나, 이에 제한되지 않는다. 예를 들어, 게스트 운영체제(102)의 구동화면이 호스트 운영체제(101)의 구동화면으로 변경될 수도 있다.
이 경우, 호스트 운영체제(101)는 게스트 운영체제(102)를 서스펜딩(suspending)하고, 호스트 운영체제(101)로부터 처리되는 데이터를 제 1 통신 링크를 통해 주변 기기(200)에게 전송할 수 있다. 호스트 운영체제(101)가 게스트 운영체제(102)를 서스펜딩(suspending)한다는 것은, 전자 장치(100)의 화면이 변경되기 전 게스트 운영체제(102)의 마지막 실행 환경에 대한 스냅샷 이미지(snapshot image)를 생성하는 작업을 포함할 수 있다. 이 경우, 일 실시예에 따라 호스트 운영체제(101)는 게스트 운영체제(102)의 블루투스 드라이버 상태(Bluetooth driver state, 예컨대, 게스트 운영체제(102)와 통신 링크가 설정된 주변 기기들과의 연결 상태)를 포함하지 않은 스냅샷 이미지를 생성할 수 있다. 따라서, 호스트 운영체제(101)는 호스트 운영체제(101)가 게스트 운영체제(102)를 서스펜딩하는데 소요되는 시간을 감소시킬 수 있다.
도 12a 및 12b는 전자 장치(100)의 화면 상에 표시된 호스트 운영체제(101)의 구동화면이 게스트 운영체제(102)의 구동화면으로 변경되는 일례이다.
도 12a를 참조하면, 전자 장치(100)는 호스트 운영체제(101)의 구동화면을 전자 장치(100)의 화면 상에 표시할 수 있다. 예를 들어, 전자 장치(100)는 호스트 운영체제(101) 내에서 수행되는 동영상 어플리케이션의 실행화면(1210)을 전자 장치(100)의 화면 상에 표시할 수 있다. 한편, 호스트 운영체제(101)에 의해 수행되는 동영상 어플리케이션 내에서 처리되는 오디오 데이터는 제 1 통신 링크를 통해 제 1 주변 기기(200a)에서 출력될 수 있다.
일 실시예에 따라 전자 장치(100)는 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경하기 위한 GUI(1220)을 제공할 수 있다. 또한, 전자 장치(100)는 제공된 GUI(1220)에 대한 사용자 입력(1230)에 기초하여, 도 12b에 도시된 바와 같이, 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경할 수 있다.
도 12b를 참조하면, 전자 장치(100)는 게스트 운영체제(102) 내에서 마지막으로 실행되던 어플리케이션의 실행화면을 전자 장치(100)의 화면 상에 표시할 수 있다. 예를 들어, 전자 장치(100)는 게스트 운영체제(102) 내에서 마지막에 실행되는 음악 재생 어플리케이션의 실행화면(1240)을 전자 장치(100)의 화면 상에 표시할 수 있다.
게스트 운영체제(102)는 음악 재생 어플리케이션 내에서 처리되는 오디오 데이터를 호스트 운영체제(101)에게 전송할 수 있다. 게스트 운영체제(102)는 제 2 통신 링크가 설정되어 있는지 여부에 기초하여, 오디오 데이터에 대한 제 1 패킷화 작업을 수행할 수 있다.
한편, 호스트 운영체제(101)는 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정할 수 있다.
일 실시예에 따라 호스트 운영체제(101)가 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하는 경우, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 수신된 오디오 데이터에 대한 제 2 패킷화 작업을 수행할 수 있다. 또한, 호스트 운영체제(101)는 제 1 주변 기기(200a)에게 패킷화된 데이터를 전송할 수 있다.
도 13은 전자 장치(100) 내에 설치된 게스트 운영체제(102)가 주변 기기를 탐색하는 방법을 설명하는 흐름도이다.
도 13을 참조하면, 단계 S1310에서, 전자 장치(100) 내에 설치된 호스트 운영체제(101)가 게스트 운영체제(102)로부터 주변 기기에 대한 탐색 요청(inquiry)을 수신할 수 있다.
일 실시예에 따라 게스트 운영체제(102)는 주기적으로 주변 기기에 대한 탐색을 호스트 운영체제(101)에게 요청할 수 있다. 또는, 게스트 운영체제(102)는 사용자로부터 수신된 사용자 입력에 따라 주변 기기에 대한 탐색을 호스트 운영체제(101)에게 요청할 수도 있다.
도 14는 게스트 운영체제(102) 내의 설정(setting)에서 주변 기기에 대한 탐색을 요청하는 일례이다.
도 14를 참조하면, 전자 장치(100)는 게스트 운영체제(102)의 설정에서 블루투스 주변 기기를 탐색할 수 있는 탐색 페이지(1410)를 전자 장치(100)의 화면 상에 표시할 수 있다.
일 실시예에 따라 탐색 페이지(1410)는 게스트 운영체제(102)와 데이터를 송수신할 수 있는 블루투스 주변 기기에 대한 탐색을 시작하는 GUI(즉, ‘start’ 버튼, 1420)를 포함할 수 있다.
게스트 운영체제(102)는 탐색 페이지(1410)에 포함된 GUI(1420)에 대한 사용자 입력이 수신되면, 호스트 운영체제(101)에게 블루투스 주변 기기의 탐색을 요청하는 데이터를 전송할 수 있다.
다시 도 13을 참조하면, 단계 S1320에서, 호스트 운영체제(101)는 게스트 운영체제(102)로부터 탐색 요청 데이터가 수신되면, 전자 장치(100)와 통신할 수 있는 주변 기기를 탐색할 수 있다.
도 15는 호스트 운영체제(101)가 전자 장치(100)가 주변 기기(200)를 탐색하는 방법을 설명하는 도면이다.
도 15를 참조하면, 호스트 운영체제(101)에게 게스트 운영체제(102)로부터 주변 기기에 대한 탐색 요청이 수신되면, 전자 장치(100)의 호스트 운영체제(101)는 불특정 주변 기기들에게 인콰이어리 메시지를 전송할 수 있다.
인콰이어리 스캔 중인 기기가 인콰이어리 메시시를 받게 되면 일단 소정 기간(예컨대, 0~640ms) 동안 시간을 지연시키고, 또 다시 인콰이어리 메시지를 받게 되면, 비로소 그 때 인콰이어리 응답(Inquiry Reply, 즉, 자신에 대한 정보를 담고 있는 Frequency Hopping Synchronization (FHS) packet)을 인콰이어리 메시지를 전송한 기기에게 전송할 수 있다. 이때, 0~640ms의 시간 지연을 주는 이유는, 인콰이어리 메시지가 모든 기기들이 들을 수 있도록 인콰이어리 억세스 코드(Inquiry Access Code)를 포함하므로, 시간 지연이 없으면 인콰이어리 메시지를 수신한 다수의 기기들이 즉시 인콰이어리 응답을 보내게 되어, 인콰이어리 응답들이 충돌할 수 있기 때문이다.
일 실시예에 따라 호스트 운영체제(101)는 인콰이어리 스캔을 시작한 제 2 주변 기기(200b)에게 인콰이어리 메시지(S1505)를 전송할 수 있다. 제 2 주변 기기(200b)는 전자 장치(100)로부터 인콰이어리 메시지를 수신하면, 소정 기간 동안 시간을 지연을 시킬 수 있다(S1510). 이후, 제 2 주변 기기(200b)는 전자 장치(100)로부터 다시 인콰이어리 메시지가 수신되면(S1515), 제 2 주변 기기(200b)는 자신에 대한 정보를 포함하는 인콰이어리 응답을 전자 장치(100)에게 전송할 수 있다 (S1520).
호스트 운영체제(101)는 인콰이어리 응답을 수신함에 따라, 제 2 주변 기기에 대한 정보를 획득할 수 있다 (S1525). 예를 들어, 호스트 운영체제(101)는 제 2 주변 기기의 맥 어드레스(MAC address)에 대한 정보를 획득할 수 있다.
다시 도 13을 참조하면, 단계 S1330에서, 호스트 운영체제(101)는 탐색된 주변 기기들 중에서, 게스트 운영체제(102)와 통신 링크를 설정할 수 있는 주변 기기를 추출할 수 있다.
일 실시예에 따라 호스트 운영체제(101)는 탐색된 주변 기기들 중에서, 호스트 운영체제(101)와 제 1 통신 링크가 설정되어 있지 않은 주변 기기를 추출할 수 있다.
또한, 호스트 운영체제(101)는 탐색된 주변 기기들 중에서, 호스트 운영체제(101)와 제 1 통신 링크가 설정되어 있으며 호스트 운영체제(101)가 전용하도록 설정된 주변 기기를 추출할 수 있다. 예를 들어, 호스트 운영체제(101)는 도 4에 도시된 테이블(410)로부터 탐색된 주변 기기가 호스트 운영체제(101)가 전용하도록 설정되어 있는지 여부를 판단할 수 있다.
이때, 일 실시예에 따라 호스트 운영체제(101)는 탐색된 주변 기기들 중에서, 호스트 운영체제(101)가 게스트 운영체제(102)와 함께 사용하는 주변 기기에 대한 정보는 추출하지 않을 수 있다. 이는, 호스트 운영체제(101)는 게스트 운영체제(102)가 특정 주변 기기(즉, 호스트 운영체제(101)와 함께 사용하도록 설정된 주변 기기)와 제 2 통신 링크를 설정하지 않도록 제어하기 위함일 수 있다. 따라서, 게스트 운영체제(102)는 도 3 내지 도 8 에서의 실시예에서와 같이 HCI 패킷을 포함하지 않는 데이터를 호스트 운영체제(101)에게 전송할 수 있다.
단계 S1340에서, 호스트 운영체제(101)는 추출된 주변 기기에 대한 정보를 게스트 운영체제(102)에게 전송할 수 있다.
도 16a 및 16b는 게스트 운영체제(102)가 호스트 운영체제(101)에 의해 추출된 주변 기기에 대한 정보를 표시하는 일례이다.
도 16a를 참조하면, 게스트 운영체제(102)는 블루투스 주변 기기를 탐색할 수 있는 탐색 페이지(도 14의 1410)를 통해, 게스트 운영체제(102)와 통신 링크를 설정할 수 있는 주변 기기들에 대한 정보를 표시할 수 있다. 탐색 페이지(1410) 상에 표시된 주변 기기들에 대한 정보는 호스트 운영체제(101)에 의해 탐색되고 추출된 주변 기기들의 식별 정보를 포함할 수 있다.
또한, 게스트 운영체제(102)는 탐색 페이지(1410) 상에 표시된 주변 기기들 중에서 게스트 운영체제(102)와 통신 링크를 설정할 주변 기기를 선택하는 연결 선택 GUI(‘연결’ 버튼 이미지, 1620)를 제공할 수 있다. 게스트 운영체제(102)는 연결 선택 GUI(1620)에 대한 사용자 입력이 수신되면, 선택된 GUI에 대응되는 주변 기기(예컨대, 제 2 주변 기기(200b))와 게스트 운영체제(102) 간의 통신 링크에 대한 설정을 할 수 있다.
또한, 게스트 운영체제(102)는 탐색 페이지(1410) 상에서 주변 기기를 더 탐색하기 위한 추가 탐색 GUI(‘추가 탐색’ 버튼 이미지, 1630)를 제공할 수도 있다. 사용자가 추가 탐색 GUI(1630)를 선택하면, 게스트 운영체제(102)는 호스트 운영체제(101)에게 다시 주변 기기 탐색 요청을 전송할 수 있다.
또한, 16b를 참조하면, 게스트 운영체제(102)가 주기적으로 주변 기기에 대한 탐색을 호스트 운영체제(101)에게 요청하는 경우, 게스트 운영체제(102)는 팝업(pop-up) 창(1640)을 통해, 호스트 운영체제(101)에 의해 탐색된 주변 기기들에 대한 정보를 사용자에게 제공할 수도 있다.
도 17은 전자 장치(100)와 제 2 주변 기기(200b)가 통신 링크를 설정하는 방법을 설명하는 도면이다.
도 17을 참조하면, 전자 장치(100)의 게스트 운영체제(102)는 호스트 운영체제(101)와 제 1 통신 링크가 설정되어 있지 않은 주변 기기(예컨대, 제 2 주변 기기(200b))와 제 2 통신 링크를 설정하기 위한 페이지 작업을 수행할 수 있다.
페이지/페이지 스캔(Page/Page Scan)은 도 15의 인콰이어리/인콰이어리 스캔(Inquiry Scan)의 수행과 유사하게 수행될 수 있다. 한 기기가 특정 기기와 통신 링크를 설정하기 위해서는 이 기기는 페이지 모드에 들어가서, 상대 기기에게 페이지 메시지(예컨대, 상대의 액세스 코드를 가진 ID 패킷)를 전송할 수 있다. 상대 기기의 상태가 페이지 스캔 중이며, 페이지 메시지를 수신한 경우이면, 두 기기는 연결될 수 있다. 인콰이어리(Inquiry)와 페이지(Page)의 차이점은, 인콰이어리는 기기의 정보를 알기 위해 사용되는 것이어서, 모든 기기들로부터 인콰이어리 응답을 수신할 수 있지만, 페이지는 특정 기기를 상대로 메시지를 보내고, 시간 지연을 주지 않고, 바로 페이지 응답을 수신한다는 점이다. 따라서, 인콰이어리보다 페이지에 소요되는 시간이 적을 수 있다. 일반적으로 페이지를 수행한 기기가 피코넷에서 마스터가 되고, 페이지 스캔을 수행한 기기가 슬레이브가 된다. 또한, 페이징 과정을 거진 두 기기 간에는 링크키가 저장된다. 또한, 저장된 링크키는 이후 기기 간의 인증 작업 등에 이용될 수 있다.
도 17을 참조하면 게스트 운영체제(102)는 제 2 주변 기기의 액세스 코드를 갖는 ID 패킷를 제 2 주변 기기(200b)에게 전송함으로써, 페이지를 시작할 수 있다 (S1705). 이때, 제 2 주변 기기(200b)는 페이지 스캔 중일 수 있다 (S1710). 제 2 주변 기기의 액세스 코드를 가진 ID 패킷을 수신한 제 2 주변 기기(200b)는, 제 2 주변 기기의 액세스 코드를 가진 ID 패킷을 게스트 운영체제(102)로 전송할 수 있다 (S1715). 이후, 게스트 운영체제(102)는 FHS 패킷을 제 2 주변 기기(200b)에게 전송할 수 있다 (S1720). FHS 패킷을 수신한 제 2 주변 기기(200b)는 제 2 주변 기기의 액세스 코드를 가진 ID 패킷을 게스트 운영체제(102)에게 전송할 수 있다 (S1725). 이와 같은 과정에 의해 게스트 운영체제(102)와 제 2 주변 기기(200b) 간의 제 2 통신 링크가 설정될 수 있으며, 게스트 운영체제(102)와 제 2 주변 기기(200b) 각각은 링크키를 저장할 수 있다.
다른 실시예에 따라 전자 장치(100)의 게스트 운영체제(102)는 호스트 운영체제(101)와 통신 링크가 설정되어 있는 주변 기기에 대하여 제 2 통신 링크를 설정할 수도 있다. 이 경우, 게스트 운영체제(102)는 호스트 운영체제(101)와 주변 기기 간에 기 저장된 링크키를 공유할 수 있다. 따라서, 도 17에서 전술한 페이지 작업은 생략될 수 있으며, 게스트 운영체제(102)는 호스트 운영체제(101)에 저장된 제 2 주변 기기의 액세스 코드, 링크키 등을 제공받음으로써 제 2 통신 링크를 설정할 수 있다.
한편, 일 실시예에 따라 호스트 운영체제(101) 또는 게스트 운영체제(102)가 주변 기기(200)와 통신 링크를 설정하는 경우, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부를 설정하는 GUI를 제공할 수 있다.
도 18a 내지 도 18c는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부를 설정하는 GUI의 일례이다.
도 18a를 참조하면, 호스트 운영체제(101)가 새로운 주변 기기와 통신 링크를 설정하려는 경우, 호스트 운영체제(101)는 게스트 운영체제(102)와 새로운 주변 기기를 함께 사용할지 여부를 설정하는 제 1 설정 창(1810)을 제공할 수 있다.
일 실시예에 따라 제 1 설정 창(1810)은 새로운 주변 기기를 호스트 운영체제(101)가 게스트 운영체제(102)와 함께 사용하도록 설정하는 ‘예’ 버튼 이미지(1811), 호스트 운영체제(101)가 전용하도록 설정하는 ‘아니오’ 버튼 이미지(1813) 및 통신 링크를 해제하는 ‘Bluetooth 장치 연결 취소’ 버튼 이미지(1815)를 포함할 수 있다.
도 18b를 참조하면, 게스트 운영체제(102)가 호스트 운영체제(101)와 이미 통신 링크가 설정된 주변 기기와 제 2 통신 링크를 설정하려는 경우, 게스트 운영체제(102)는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기를 함께 사용할지 여부를 설정하는 제 2 설정 창(1820)을 제공할 수 있다. 이때, 주변 기기는 호스트 운영체제(101)가 전용하도록 기 설정되어 있을 수 있다.
일 실시예에 따라 제 2 설정 창(1820)은 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기를 함께 사용하도록 설정하는 ‘아니오’ 버튼 이미지(1821) 및 호스트 운영체제(101)가 주변 기기를 전용하는 설정을 유지하는 ‘예’ 버튼 이미지(1823)를 포함할 수 있다.
도 18c 를 참조하면, 게스트 운영체제(102)가 새로운 주변 기기와 통신 링크를 설정하려는 경우, 게스트 운영체제(102)는 호스트 운영체제(101)가 게스트 운영체제(102)와 새로운 주변 기기를 함께 사용할지 여부를 설정하는 제 3 설정 창(1830)을 제공할 수 있다.
일 실시예에 따라 제 3 설정 창(1830)은 게스트 운영체제(102)만 주변 기기와 통신 링크를 설정하는 ‘연결’ 버튼 이미지(1831), 통신 링크 설정을 취소하는 ‘연결 취소’ 버튼 이미지(1833) 및 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기를 함께 사용하도록 설정하는 ‘Host OS와 함께 사용’ 버튼 이미지(1835)를 포함할 수 있다.
도 19는 전자 장치(100)가 주변 기기(200)로부터 데이터를 수신하는 방법을 설명하는 흐름도이다.
도 19를 참조하면, 단계 S1910에서 호스트 운영체제(101)는 주변 기기(200)로부터 데이터를 수신할 수 있다.
예를 들어, 호스트 운영체제(101)는 주변 기기로부터 커맨드(Command) 패킷, 이벤트 패킷, ACL(Asynchronous Connectionless) 패킷 및 SCO(Synchronous Connection Orient) 패킷 형태의 데이터를 수신할 수 있다. ACL 패킷은 1대 N 연결을 지원하며, 대칭형 또는 비대칭 형의 회선 교환 방식으로 전송되며, SCO 패킷은 주로 음성에 사용되는 대칭형의 회선 교환 방식으로 전송된다.
단계 S1920에서, 호스트 운영체제(101)는 수신된 데이터에 대한 멀티플렉싱(multiplexing) 작업을 수행할 수 있다. 멀티플렉싱(multiplexing) 작업이란, 수신된 데이터가 제공될 타겟 운영체제(즉, 호스트 운영체제(101) 또는 게스트 운영체제(102))를 결정하는 작업일 수 있다.
일 실시예에 따라 호스트 운영체제(101) 및 게스트 운영체제(102)는 호스트 운영체제(101)와 주변 기기(200) 간에 설정된 제 1 통신 링크를 통해 함께 데이터를 전송하거나, 게스트 운영체제(102)는 제 1 통신 링크 설정 시에 저장된 제 1 링크 키를 공유할 수 있다. 따라서, 주변 기기(200)는 타겟 운영체제가 구분되지 않은 데이터를 전송할 수 있다.
일부 실시예에 따라 호스트 운영체제(101)는 커넥션 트래킹 테이블(connection tracking table)을 관리 할 수 있다. 예를 들어, 호스트 운영체제(101)는 주변 기기(200)로부터 수신되는 ACL 패킷 또는 SCO 패킷에 포함된 핸들러(handler) 값을 커넥션 트래킹 테이블에 저장한 후, 이전 핸들러 값과 비교함으로써 타겟 운영체제를 변경/유지할 수 있다.
또는, 호스트 운영체제(101)는 타겟 운영체제가 결정되면 모든 데이터 수신이 완료될 때까지 타겟 운영체제를 유지할 수도 있다. 예를 들어, 호스트 운영체제(101)는 커맨드 패킷(command packet)이 수신되면, 컴플리션 이벤트 패킷(completion event packet)이 수신될 때까지 타겟 운영체제를 유지할 수 있다.
한편, 호스트 운영체제(101)는 호스트 운영체제(101) 내의 HCI 레이어(도 5의 558)에서 주변 기기로부터 수신된 데이터를 호스트 운영체제(101)의 상위 레이어 또는 게스트 운영체제(102)에서 제공할지 여부를 결정할 수 있다.
도 20은 일 실시예에 따라 전자 장치(100)가 주변 기기들과 통신하는 방법을 설명하는 도면이다.
도 20을 참조하면, 전자 장치(100)는 전자 장치(100)의 화면 상에 호스트 운영체제(101)의 구동화면 및 게스트 운영체제(102)의 구동화면을 함께 표시할 수도 있다. 또한, 각 운영체제는 서로 다른 주변 기기와 통신 링크를 설정할 수 있다.
예를 들어, 호스트 운영체제(101)는 제 1 주변 기기(200a)와 제 1 통신 링크를 설정할 수 있다. 이후, 호스트 운영체제(101)는 제 1 주변 기기(200a)와 제 1 통신 링크 설정 시에 저장된 제 1 링크 키에 기초하여 오디오 데이터를 송수신할 수 있다.
또한, 게스트 운영체제(102)는 제 3 주변 기기(200c)와 제 3 통신 링크를 설정할 수 있다. 이후, 게스트 운영체제(102)는 제 3 주변 기기(200c)와 제 3 통신 링크 설정 시에 저장된 제 3 링크 키에 기초하여 텍스트 데이터를 송수신할 수 있다.
이 경우, 제 1 및 제 3 주변 기기(200a 및 200c)로부터 수신되는 데이터는 서로 다른 링크 키에 기초하므로, 호스트 운영체제(101)는 수신되는 데이터에 대한 멀티플렉싱(multiplexing) 작업을 수행하지 않을 수 있다.
도 21 및 도 22는 일 실시예에 따라 전자 장치(100)의 구성을 도시하는 도면이다.
도 21에 도시된 바와 같이, 본 개시의 일부 실시예에 따라 전자 장치(100)는, 제어부(2110), 통신부(2120) 및 디스플레이부(2130)를 포함할 수 있다. 그러나 도시된 구성요소 모두가 필수구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 전자 장치(100)가 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 전자 장치(100)는 구현될 수 있다.
예를 들어, 일부 실시예에 따른 전자 장치(100)는, 도 22에 도시된 바와 같이, 제어부(2110), 통신부(2120) 및 디스플레이부(2130) 이외에 사용자 입력부(2240), 센싱부(2250), A/V 입력부(2260) 및 메모리(2270)를 더 포함할 수도 있다.
제어부(2110)는 통상적으로, 전자 장치(700)의 전반적인 동작을 제어할 수 있다. 예를 들어, 제어부(2110)는, 통신부(2120), 디스플레이부(2130), 사용자 입력부(2240), A/V 입력부(2260) 및 메모리(2270) 등을 전반적으로 제어할 수 있다.
일 실시예에 따라 제어부(2110)는 호스트 운영체제(101)와 게스트 운영체제(102)를 구동시킬 수 있다. 또한, 제어부(2110)는 게스트 운영체제(102)로부터 데이터를 수신하고, 호스트 운영체제(101)와 주변 기기(200) 간 설정된 제 1 통신 링크를 게스트 운영체제(102)와 주변 기기(200) 간 설정된 제 2 통신 링크로 전환할지 여부를 결정하는 호스트 운영체제(101)를 제어할 수 있다. 또한, 제어부(2110)는 상기 결정에 기초하여 데이터를 패킷화(packetizing)하는 호스트 운영체제(101)를 제어할 수 있다.
일 실시예에 따라 제어부(2110)는 게스트 운영체제(102)로부터 호스트 운영체제(101)로 제공된 데이터가 HCI 패킷을 포함하는 경우, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 상기 데이터가 HCI 패킷을 포함하지 않는 경우 제 1 통신 링크를 유지하는 것으로 결정할 수 있다. 다른 실시예에 따라 제어부(2110)는 호스트 운영체제(101)가 주변 기기(200)를 전용하도록 설정되어 있는 경우, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하고, 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용하도록 설정되어 있는 경우, 제 1 통신 링크를 유지하는 것으로 결정할 수 있다.
일 실시예에 따라 제 1 통신 링크를 유지하는 경우, 제어부(2110)는 호스트 운영체제(101)가 주변 기기(200)와 제 1 통신 링크 설정 시에 저장된 제 1 링크키에 기초하여 주변 기기(200)와 인증 작업을 수행하도록 제어할 수 있다. 이후, 제어부(2110)는 호스트 운영체제(101)가 게스트 운영체제(102)로부터 제공된 데이터에 대한 제 1 패킷화 작업 및 제 2 패킷화 작업을 수행하도록 제어할 수 있다. 이때, 제 1 패킷화 작업은 제 1 통신 링크의 논리 채널 상에서의 인증 작업, 상대 장치의 식별 정보 부가, 오류 제어 작업 등을 포함할 수 있다. 또한, 제 2 패킷화 작업은 제 1 통신 링크의 물리 채널 상에서의 물리적 전송로의 특성에 따른 정보 부가, 패킷 분할, 패킷 송수신 등의 작업을 포함할 수 있다. 한편, 제 1 패킷화 작업이 완료된 데이터는 HCI 패킷 형태일 수 있으며, 제 2 패킷화 작업이 완료된 데이터는 블루투스 패킷, USB 패킷, UART 패킷 등의 형태일 수 있다. 또한, 제 2 패킷화 작업은 제어부(2110)의 제어에 의해 통신부(2120)에서 이루어질 수도 있다.
또한, 제 1 통신 링크를 제 2 통신 링크로 전환하는 것으로 결정하는 경우, 제어부(2110)는 게스트 운영체제(102)가 주변 기기(200)와 제 2 통신 링크에 기초하여 주변 기기(200)와 인증 작업을 수행하도록 제어할 수 있다. 이때, 제 2 통신 링크는 제 1 통신 링크 설정 시에 저장된 제 1 링크키를 공유할 수 있다. 또한, 게스트 운영체제(102)로부터 제공된 데이터는, 제어부(2110)의 제어에 의해 게스트 운영체제(102)가 제 1 패킷화 작업을 수행한 데이터일 수 있다. 따라서, 게스트 운영체제(102)로부터 제공된 데이터는 HCI 패킷을 포함할 수 있다. 이후, 제어부(2110)는 호스트 운영체제(101)가 게스트 운영체제(102)로부터 제공된 데이터에 대한 제 2 패킷화 작업을 수행하도록 제어할 수 있다.
다른 실시예에 따라 제어부(2110)는 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경하도록 디스플레이부(2130)를 제어할 수 있다. 또한, 제어부(2110)는 호스트 운영체제(101)가 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하도록 제어할 수 있다. 이후, 제어부(2110)는 상기 결정에 기초하여, 호스트 운영체제(101)가 게스트 운영체제(102)로부터 수신된 데이터를 패킷화하도록 제어할 수 있다.
또 다른 실시예에 따라 제어부(2110)는 게스트 운영체제(102)로부터 주변 기기 탐색 요청을 수신하는 호스트 운영체제(101)를 제어할 수 있다. 제어부(2110)는 호스트 운영체제가 주변 기기들을 탐색하도록 제어할 수 있다. 예를 들어, 제어부(2110)는 통신부(2120)를 통해 인콰이어리 메시지를 불특정 주변 기기들에게 전송하도록 제어할 수 있다.
또한, 제어부(2110)는 호스트 운영체제(101)가 탐색된 주변 기기들 중에서 게스트 운영체제(102)와 통신 링크를 설정할 수 있는 주변 기기를 추출하도록 제어할 수 있다. 예를 들어, 제어부(2110)는 호스트 운영체제(101)가 탐색된 주변 기기들 중에서 호스트 운영체제(101)와 통신 링크가 설정되어 있지 않은 주변 기기를 추출하도록 제어할 수 있다. 또한, 제어부(2110)는 호스트 운영체제(101)가 탐색된 주변 기기들 중에서 호스트 운영체제(101)가 전용하도록 설정된 주변 기기를 추출하도록 제어할 수 있다.
또한, 제어부(2110)는 주변 기기로부터 수신된 데이터에 대한 멀티플렉싱(multiplexing) 작업을 수행할 수 있다. 여기서, 멀티플렉싱(multiplexing) 작업이란, 수신된 데이터가 제공될 타겟 운영체제(즉, 호스트 운영체제(101) 또는 게스트 운영체제(102))를 결정하는 작업일 수 있다. 예를 들어, 제어부(2110)는 호스트 운영체제(101)가 커넥션 트래킹 테이블(connection tracking table)에 기초하여 타겟 운영체제를 결정할 수 있다.
통신부(2120)는 전자 장치(100)와 주변 기기(200) 간의 통신을 하게 하는 하나 이상의 구성요소를 포함할 수 있다. 예를 들어, 통신부(2120)는, 근거리 통신부(2121), 이동 통신부(2122), 방송 수신부(2123)를 포함할 수 있다.
근거리 통신부(short-range wireless communication unit)(2121)는, 블루투스 통신부, BLE(Bluetooth Low Energy) 통신부, 근거리 무선 통신부(Near Field Communication unit), WLAN(와이파이) 통신부, 지그비(Zigbee) 통신부, 적외선(IrDA, infrared Data Association) 통신부, WFD(Wi-Fi Direct) 통신부, UWB(ultra wideband) 통신부, Ant+ 통신부 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
이동 통신부(2122)는, 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 신호를 송수신한다. 여기에서, 무선 신호는, 음성 호 신호, 화상 통화 호 신호 또는 문자/멀티미디어 메시지 송수신에 따른 다양한 형태의 데이터를 포함할 수 있다.
방송 수신부(2123)는, 방송 채널을 통하여 외부로부터 방송 신호 및/또는 방송 관련된 정보를 수신한다. 방송 채널은 위성 채널, 지상파 채널을 포함할 수 있다. 구현 예에 따라서 전자 장치(100)가 이동 통신부(2122) 및 방송 수신부(2133) 중 적어도 하나를 포함하지 않을 수도 있다.
일부 실시예에 따라 블루투스 통신부(미도시)는 블루투스 컨트롤러(미도시)를 포함할 수 있다. 블루투스 컨트롤러에서는 제어부(2110)에 의해 제어되며, 제어부(2110)는 호스트 운영체제(101)가 블루투스 컨트롤러에서 제 2 패킷화 작업을 수행하도록 제어할 수도 있다.
일 실시예에 따라 통신부(2120)는 제어부(2110)에 의해 패킷화된 데이터를 주변 기기(200)에게 전송할 수 있다. 또한, 통신부(2120)는 주변 기기(200)로부터 패킷 형태의 데이터를 수신할 수 있다.
디스플레이부(2130)는 제어부(2110)의 제어에 의해 전자 장치(100) 내에서 처리되는 정보를 표시할 수 있다. 또한, 디스플레이부(2130)는 전자 장치(100)의 사용자로부터 제어 정보를 수신하기 위한 GUI(graphic user interface)를 표시할 수도 있다.
일 실시예에 따라 디스플레이부(2130)는 제어부(2110)의 제어에 의해, 호스트 운영체제(101) 및 게스트 운영체제(102) 중 적어도 하나에서 처리되는 정보를 표시할 수 있다. 예를 들어, 디스플레이부(2130)는 호스트 운영체제(101) 및 게스트 운영체제(102) 중 적어도 하나의 운영체제 상에서 실행되는 어플리케이션의 실행 화면을 표시할 수 있다. 또한, 디스플레이부(2130)는 제어부(2110)의 제어에 의해, 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경하여 표시할 수도 있다.
한편, 디스플레이부(2130)는 예를 들어, LCD(liquid crystal display) 방식, OLED(Organic Light Emitting Diodes) 방식, PDP(Plasma Display Panel) 방식, 또는 VFD(Vacuum fluorescent display) 방식을 포함할 수 있다. 디스플레이 방식에 따라 표시 가능한 정보가 다를 수 있다는 것은 당해 기술 분야의 통상의 지식을 가진 자에게 용이하게 이해될 것이다.
사용자 입력부(2240)는 사용자가 전자 장치(100)를 제어하기 위한 데이터를 입력하는 수단을 의미할 수 있다. 예를 들어, 사용자 입력부(5100)에는 키 패드(key pad), 돔 스위치 (dome switch), 터치 패드(접촉식 정전 용량 방식, 압력식 저항막 방식, 적외선 감지 방식, 표면 초음파 전도 방식, 적분식 장력 측정 방식, 피에조 효과 방식 등), 조그 휠, 조그 스위치 등이 있을 수 있으나 이에 한정되는 것은 아니다.
일 실시예에 따라 사용자 입력부(2240)는 호스트 운영체제(101)의 구동화면을 게스트 운영체제(102)의 구동화면으로 변경하는 사용자 입력을 수신할 수 있다. 또한, 사용자 입력부(2240)는 디스플레이부(2130)를 통해 제공되는 다양한 GUI 에 대한 사용자 입력을 수신할 수도 있다.
센싱부(2250)는 가속도 센서(Acceleration sensor)(2251), 근접 센서(2252), 적외선 센서(2253), 및 RGB 센서(illuminance sensor)(2254) 중 적어도 하나를 포함할 수 있으나, 이에 한정되는 것은 아니다. 각 센서들의 기능은 그 명칭으로부터 당업자가 직관적으로 추론할 수 있으므로, 구체적인 설명은 생략하기로 한다.
A/V(Audio/Video) 입력부(2260)는 오디오 신호 또는 비디오 신호 입력을 위한 것으로, 이에는 카메라(2261)와 마이크로폰(2262) 등이 포함될 수 있다. 카메라(2261)는 화상 통화모드 또는 촬영 모드에서 이미지 센서를 통해 정지영상 또는 동영상 등의 화상 프레임을 얻을 수 있다. 이미지 센서를 통해 캡쳐된 이미지는 제어부(2110) 또는 별도의 이미지 처리부(미도시)를 통해 처리될 수 있다.
카메라(2261)에서 처리된 화상 프레임은 메모리(2270)에 저장되거나 통신부(2120)를 통하여 외부로 전송될 수 있다. 카메라(2261)는 단말기의 구성 태양에 따라 2개 이상이 구비될 수도 있다.
마이크로폰(2262)은, 외부의 음향 신호를 입력 받아 전기적인 음성 데이터로 처리한다. 예를 들어, 마이크로폰(2262)은 외부 디바이스 또는 화자로부터 음향 신호를 수신할 수 있다. 마이크로폰(2262)은 외부의 음향 신호를 입력 받는 과정에서 발생 되는 잡음(noise)을 제거하기 위한 다양한 잡음 제거 알고리즘을 이용할 수 있다.
메모리(2270)는, 제어부(2110)의 처리 및 제어를 위한 프로그램을 저장할 수도 있고, 입/출력되는 데이터들(예컨대, 복수의 메뉴, 복수의 메뉴 각각에 대응하는 복수의 제 1 계층 서브 메뉴, 복수의 제 1 계층 서브 메뉴 각각에 대응하는 복수의 제 2 계층 서브 메뉴 등)을 저장할 수도 있다.
일 실시예에 따라 메모리(2270)는 호스트 운영체제(101) 및 게스트 운영체제(102)를 위한 프로그램을 저장할 수 있다.
일 실시예에 따라 메모리(2270)는 호스트 운영체제(101)가 게스트 운영체제(102)와 주변 기기(200)를 함께 사용할지 여부에 대한 설정값을 테이블 형태로 저장할 수 있다.
또한, 메모리(2270)는 호스트 운영체제(101)가 주변 기기(200)로부터 수신되는 데이터를 제공하기 위한 타겟 운영체제(즉, 호스트 운영체제(101) 또는 게스트 운영체제(102))를 결정하기 위한 커넥션 트래킹 테이블(connection tracking table)을 저장할 수도 있다.
메모리(2270)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 또한, 전자 장치(100)는 인터넷(internet)상에서 메모리(2270)의 저장 기능을 수행하는 웹 스토리지(web storage) 또는 클라우드 서버를 운영할 수도 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.

Claims (24)

  1. 전자 장치 내에 설치된 호스트 운영체제 및 게스트 운영체제가 주변 기기와 통신하는 방법에 있어서,
    상기 호스트 운영체제가 상기 게스트 운영체제로부터 제 1 데이터를 수신하는 단계;
    상기 호스트 운영체제가 상기 전자 장치와 상기 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계;
    상기 결정에 기초하여, 상기 호스트 운영체제가 상기 제 1 데이터를 패킷화(packetizing)하는 단계; 및
    상기 패킷화된 데이터를 상기 주변 기기에게 전송하는 단계;를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 통신 링크는, 상기 호스트 운영체제와 상기 주변 기기 간 설정된 통신 링크이고, 상기 제 2 통신 링크는, 상기 게스트 운영체제와 상기 주변 기기 간 설정된 통신 링크이며,
    상기 제 2 통신 링크는, 상기 제 1 통신 링크의 설정 시에 상기 호스트 운영체제 및 상기 주변 기기에 저장된 링크키를 공유하는, 방법.
  3. 제 2 항에 있어서,
    상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환할지 여부를 결정하는 단계는,
    상기 제 1 데이터가 HCI 패킷을 포함하는 경우 상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환하는 것으로 결정하고, 상기 제 1 데이터가 HCI 패킷을 포함하지 않는 경우 상기 제 1 통신 링크를 유지하는 것으로 결정하는, 방법.
  4. 제 2 항에 있어서,
    상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환할지 여부를 결정하는 단계는,
    상기 호스트 운영체제가 상기 주변 기기를 전용하도록 설정되어 있는 경우, 상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환하는 것으로 결정하고,
    상기 호스트 운영체제가 상기 게스트 운영체제와 상기 주변 기기를 함께 사용하도록 설정되어 있는 경우, 상기 제 1 통신 링크를 유지하는 것으로 결정하는, 방법.
  5. 제 3 항에 있어서,
    상기 제 1 데이터에 포함된 상기 HCI 패킷은, 상기 제 2 통신 링크에 기초하여 상기 게스트 운영체제에 의해 생성된 것인, 방법.
  6. 제 5 항에 있어서,
    상기 제 2 통신 링크로 전환하는 것으로 결정되는 경우, 상기 호스트 운영체제가 상기 제 1 데이터를 패킷화하는 단계는,
    상기 제 1 데이터에 포함된 상기 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 단계;를 포함하는, 방법.
  7. 제 3 항에 있어서,
    상기 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 상기 호스트 운영체제가 상기 제 1 데이터를 패킷화하는 단계는,
    상기 호스트 운영체제는 제 1 통신 링크 설정 시에 상기 호스트 운영체제와 상기 주변 기기 내에 저장된 상기 링크키에 기초하여 주변 기기와 인증 작업을 수행하는 단계;
    상기 제 1 통신 링크에 기초하여 상기 제 1 데이터에 대한 HCI 패킷을 생성하는 단계; 및
    상기 제 1 통신 링크의 물리적 특성에 기초하여, 상기 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 단계;를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 제 1 데이터는, 오디오 데이터 또는 HID(human interface device) 데이터를 포함하는, 방법.
  9. 제 3 항에 있어서,
    상기 제 1 통신 링크를 유지하는 것으로 결정하는 경우, 상기 방법은,
    상기 호스트 운영체제가 상기 호스트 운영체제 내에서 처리된 제 2 데이터를 획득하는 단계;
    상기 호스트 운영체제가 상기 제 1 데이터 및 상기 제 2 데이터를 결합하는 단계;
    상기 호스트 운영체제가 결합된 데이터를 패킷화하는 단계;및
    상기 제 1 통신 링크에 기초하여, 상기 패킷화된 데이터를 상기 주변 기기에게 전송하는 단계;를 더 포함하는, 방법.
  10. 제 1 항에 있어서,
    상기 제 1 통신 링크 및 상기 제 2 통신 링크는, ACL(Asynchronous Connection Less) 패킷 또는 SCO(Synchronous Connection Oriented) 패킷을 전송하는, 방법.
  11. 전자 장치 내에 설치된 호스트 운영체제 및 게스트 운영체제가 주변 기기와 통신하는 방법에 있어서,
    상기 전자 장치의 화면 상에 표시되는 호스트 운영체제의 구동화면을 게스트 운영체제의 구동화면으로 변경하는 단계; 및
    상기 전자 장치와 상기 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하는 단계;
    상기 결정에 기초하여, 상기 호스트 운영체제가 상기 게스트 운영체제로부터 수신된 제 3 데이터를 패킷화하는 단계; 및
    상기 패킷화된 데이터를 상기 주변 기기에게 전송하는 단계;를 포함하는, 방법.
  12. 전자 장치 내에 설치된 호스트 운영체제 및 게스트 운영체제가 주변 기기와 통신하는 방법에 있어서,
    상기 호스트 운영체제가 상기 게스트 운영체제로부터 주변 기기 탐색 요청을 수신하는 단계;
    상기 호스트 운영체제가 적어도 하나의 주변 기기를 탐색하는 단계;
    상기 호스트 운영체제가 상기 탐색된 적어도 하나의 주변 기기 중에서 상기 게스트 운영체제와 통신 링크를 설정할 수 있는 주변 기기를 추출하는 단계; 및
    상기 호스트 운영체제가 추출된 주변 기기에 대한 정보를 상기 게스트 운영체제에게 전송하는 단계;를 포함하는, 방법.
  13. 제 12 항에 있어서,
    상기 게스트 운영체제와 통신 링크를 설정할 수 있는 주변 기기를 추출하는 단계는,
    상기 탐색된 적어도 하나의 주변 기기 중에서, 상기 호스트 운영체제와 통신 링크가 설정되어 있지 않은 주변 기기를 추출하는 단계; 및
    상기 탐색된 적어도 하나의 주변 기기 중에서, 상기 호스트 운영체제와 통신 링크가 설정되어 있으며 상기 호스트 운영체제가 전용하도록 설정된 주변 기기를 추출하는 단계;를 포함하는, 방법.
  14. 전자 장치에 있어서,
    게스트 운영체제, 및
    상기 게스트 운영체제로부터 제 1 데이터를 수신하고, 상기 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하며, 상기 결정에 기초하여 상기 제 1 데이터를 패킷화(packetizing)하는 호스트 운영체제를 제어하는 제어부;및
    상기 호스트 운영체제에 의해 패킷화된 데이터를 상기 주변 기기에게 전송하는 통신부;를 포함하는, 전자 장치.
  15. 제 14 항에 있어서,
    상기 제 1 통신 링크는, 상기 호스트 운영체제와 상기 주변 기기 간 설정된 통신 링크이며, 상기 제 2 통신 링크는, 상기 게스트 운영체제와 상기 주변 기기 간 설정된 통신 링크이며,
    상기 제 2 통신 링크는, 상기 제 1 통신 링크의 설정 시에 상기 호스트 운영체제 및 상기 주변 기기에 저장된 링크키를 공유하는, 전자 장치.
  16. 제 15 항에 있어서,
    상기 제어부는, 상기 제 1 데이터가 HCI 패킷을 포함하는 경우 상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환하는 것으로 결정하고, 상기 제 1 데이터가 HCI 패킷을 포함하지 않는 경우 상기 제 1 통신 링크를 유지하는 것으로 결정하는, 전자 장치.
  17. 제 14 항에 있어서,
    상기 제어부는, 상기 호스트 운영체제가 상기 주변 기기를 전용하도록 설정되어 있는 경우, 상기 제 1 통신 링크를 상기 제 2 통신 링크로 전환하는 것으로 결정하고,
    상기 호스트 운영체제가 상기 게스트 운영체제와 상기 주변 기기를 함께 사용하도록 설정되어 있는 경우, 상기 제 1 통신 링크를 유지하는 것으로 결정하는, 전자 장치.
  18. 제 16 항에 있어서,
    상기 제 1 데이터에 포함된 상기 HCI 패킷은, 상기 제 2 통신 링크에 기초하여 상기 게스트 운영체제에 의해 생성된 것인, 전자 장치.
  19. 제 18 항에 있어서,
    상기 제어부는, 상기 제 2 통신 링크로 전환하는 것으로 결정되는 경우,
    상기 제 1 데이터에 포함된 상기 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 상기 호스트 운영체제를 제어하는, 전자 장치.
  20. 제 16 항에 있어서,
    상기 제어부는, 상기 제 1 통신 링크를 유지하는 것으로 결정하는 경우,
    상기 제 1 통신 링크 설정 시에 상기 호스트 운영체제와 상기 주변 기기 내에 저장된 상기 링크키에 기초하여 주변 기기와 인증 작업을 수행하고, 상기 제 1 통신 링크에 기초하여 상기 제 1 데이터에 대한 HCI 패킷을 생성하며, 상기 제 1 통신 링크의 물리적 특성에 기초하여 상기 HCI 패킷에 대응되는 블루투스 패킷을 생성하는 상기 호스트 운영체제를 제어하는, 전자 장치.
  21. 제 16 항에 있어서,
    상기 제어부는, 상기 제 1 통신 링크를 유지하는 것으로 결정하는 경우,
    상기 호스트 운영체제 내에서 처리된 제 2 데이터를 획득하고, 상기 제 1 데이터 및 상기 제 2 데이터를 결합하는 상기 호스트 운영체제를 제어하며,
    상기 통신부는, 상기 제 1 통신 링크에 기초하여 상기 호스트 운영체제에 의해 결합된 데이터를 상기 주변 기기에게 전송하는, 전자 장치.
  22. 제 14 항에 있어서,
    상기 통신부는, ACL(Asynchronous Connectionless) 패킷 또는 SCO(Synchronous Connection Oriented) 패킷을 전송하는, 전자 장치.
  23. 전자 장치의 화면 상에 표시된 호스트 운영체제의 구동화면을 게스트 운영체제의 구동화면으로 변경하는 디스플레이부;
    상기 게스트 운영체제 및
    상기 전자 장치와 주변 기기 간에 데이터를 송수신하기 위하여 설정된 제 1 통신 링크를 제 2 통신 링크로 전환할지 여부를 결정하며, 상기 결정에 기초하여 상기 게스트 운영체제로부터 수신된 제 3 데이터를 패킷화하는 상기 호스트 운영체제를 제어하는 제어부; 및
    상기 호스트 운영체제에 의해 패킷화된 데이터를 상기 주변 기기에게 전송하는 통신부;를 포함하는, 전자 장치.
  24. 제 1 항의 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
KR1020150028587A 2015-02-27 2015-02-27 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치 KR102273021B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150028587A KR102273021B1 (ko) 2015-02-27 2015-02-27 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치
US15/046,921 US10146712B2 (en) 2015-02-27 2016-02-18 Method of communicating with peripheral device in electronic device on which plurality of operating systems are driven, and the electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150028587A KR102273021B1 (ko) 2015-02-27 2015-02-27 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20160105210A KR20160105210A (ko) 2016-09-06
KR102273021B1 true KR102273021B1 (ko) 2021-07-06

Family

ID=56798894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150028587A KR102273021B1 (ko) 2015-02-27 2015-02-27 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치

Country Status (2)

Country Link
US (1) US10146712B2 (ko)
KR (1) KR102273021B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11997496B2 (en) * 2019-05-31 2024-05-28 Apple Inc. Temporary pairing for wireless devices
CN114124165B (zh) * 2020-08-31 2022-12-30 华为技术有限公司 用于蓝牙通信的方法和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090219935A1 (en) 2008-02-29 2009-09-03 Sun Microsystems, Inc. Method and system for transferring packets to a guest operating system
US20150067196A1 (en) 2013-09-04 2015-03-05 Red Hat, Inc. Portable computing device providing operating system for host devices

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478173B1 (en) * 2003-12-18 2009-01-13 Wmware, Inc. Method and system for sharing a network connection in a virtual computer system
US7483963B2 (en) 2004-08-20 2009-01-27 Research In Motion Limited Method and system for configuring a client on host devices by utilizing an interface between a configuration application and host device drivers on a configuring device
DK1976313T3 (da) * 2007-03-30 2011-03-07 Communology Gmbh Styresystem til mobilterminaler
WO2009039375A2 (en) * 2007-09-20 2009-03-26 C & S Operations, Inc. Computer system
US8332846B2 (en) 2008-02-28 2012-12-11 Sony Mobile Communications Ab Selective exposure to USB device functionality for a virtual machine by filtering descriptors
US9135044B2 (en) * 2010-10-26 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US8798541B1 (en) 2011-04-11 2014-08-05 Vmware, Inc. System and method for socket backed host controller interface emulation for virtual bluetooth adapter
CN103294562B (zh) 2012-02-23 2017-03-01 纬创资通股份有限公司 双操作系统共用周边装置的方法以及电子装置
US8799900B1 (en) 2012-04-17 2014-08-05 Parallels IP Holdings GmbH Sharing webcam between guest and host OS
CN102819715A (zh) * 2012-08-15 2012-12-12 腾讯科技(深圳)有限公司 Api监控方法和装置
US9069741B2 (en) * 2013-02-25 2015-06-30 Red Hat, Inc. Emulating level triggered interrupts of physical devices assigned to virtual machine
US9262197B2 (en) * 2014-07-16 2016-02-16 Dell Products L.P. System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090219935A1 (en) 2008-02-29 2009-09-03 Sun Microsystems, Inc. Method and system for transferring packets to a guest operating system
US20150067196A1 (en) 2013-09-04 2015-03-05 Red Hat, Inc. Portable computing device providing operating system for host devices

Also Published As

Publication number Publication date
US10146712B2 (en) 2018-12-04
KR20160105210A (ko) 2016-09-06
US20160253276A1 (en) 2016-09-01

Similar Documents

Publication Publication Date Title
KR102631541B1 (ko) 복수의 전자 장치들 사이에서 네트워크 연결을 전환하기 위한 전자 장치 및 방법
KR102077238B1 (ko) 디바이스들 간의 연결 설립 방법
EP3029650B1 (en) Electronic device, audio device, and methods of controlling electronic device and audio device power supply
EP2387260B1 (en) System of wi-fi terminals and channel operation method for the same
EP3451119B1 (en) Method, apparatus, and computer program product for management of connected devices, such as in a wireless docking environment
EP3108346B1 (en) Display method and mobile device
EP2816865A1 (en) Communication control method and electronic device implementing the same
WO2019000411A1 (zh) 一种无线通信连接建立的方法及设备
CN111447602B (zh) 蓝牙设备及其蓝牙抢占方法和装置、计算机可读存储介质
KR20150114291A (ko) 이동단말기 및 그 제어방법
WO2018153028A1 (zh) 一种建立无线局域网连接的方法、装置和终端
US20180184367A1 (en) Mobile terminal and method of operating the same
KR20150095124A (ko) 이동 단말기 및 그것의 제어방법
CN111245854A (zh) 一种媒体传输方法、媒体控制方法及装置
KR102273021B1 (ko) 복수의 운영체제가 구동되는 전자 장치가 주변 기기와 통신하는 방법 및 그 장치
KR101632220B1 (ko) 이동 단말기, 이동 단말기의 제어방법, 그리고, 제어시스템과 그 제어방법
KR101936144B1 (ko) 다기능 사물 인터넷 디바이스 및 그러한 디바이스와의 블루투스 저에너지 연결을 수립하는 기법
KR20150114826A (ko) 이동 단말기 및 이의 제어방법
KR101570424B1 (ko) 이동 단말기 및 그것의 제어방법
EP3617860B1 (en) Screen locking method and apparatus
WO2022161220A1 (zh) 一种多屏幕设备控制的方法及通信系统
KR102663265B1 (ko) 전자 장치 및 전자 장치의 nan 기반의 통신 제어 방법
JP2018510394A (ja) ユーザー情報を取得する方法および装置、端末装置並びにサーバー
KR20220139783A (ko) 이동 단말기
KR20210147591A (ko) 저전력 통신 시스템을 위한 제어 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant