'블루투스'에 해당되는 글 1건

  1. 2007.06.13 [Bluetooth] Bluetooth 프로그래밍 개요
반응형
블루투스 기기간 Communication은 다음과 같다.
1. 통신할 Device를 선택
2. 선택한 Device와 어떻게 통신할 것지를 판단
3. Outgoing connection을 만듬
4. Incomming conection을 Accept 함
5. 데이터 송/수신

TCP/IP programming에 비해서 1번과 2번은 생소한 개념이다.

1. 통신할 Device의 선택
모든 블루투스 칩은 48-bit의 독특한 address를 가지고 있다. 이를 "Bluetooth address" 또는 "device address"라고 한다. Ethernet의 MAC을 생각하면 될것이다. 그리고 IEEE Registration Authority에 의해서 관리 된다. 이 address는 저수준에서 고수준의 통신의 모든 프로토콜에서 사용된다. (TCP/IP는 layer3에서는 IP 주소로 로 변화된다)

DNS와 같이 블루투스에서도 "My Bluetooth"와 같이 스트링의 이름을 제공한다. 클라이언토는 이 이름을 48-bit의 실 address로 변환하게 되는 것이다. 이 이름을 Device Name 이라고 한다. Device Name은 Unique할 필요는 없다. 예를 들어 "AAA"라는 디바이스 이름은 다른 디바이스 주소로써 여러개가 나올수 있다.

2. Transport protocol의 선택
 통신할 Device를 선택했으면 Transport protocol을 어떤 것을 선택할지 결정 해야 한다.

2.1 RFCOMM
 RFCOMM은 TCP와 같이 Connection-oriented protocol이다. Bluetooth 명세서에는 RS-232 serial ports를 emulation 하는 것으로 나와 있다. 하지만 TCP 시나리오와 같이 사용이 간단하다.
RFCOMM은 TCP의 대부분의 특성들을 제공해주지만 선택할수 있는 port number는 크게 차이가 난다. TCP는 65535의 포트를 제공하지만 RFCOMM은 단지 30개의 포트만 제공된다.

2.2 L2CAP
 L2CAP 은 기본적으로 connection-oriented 프로토콜을 제공하지만 connectionless 방식도 제공한다. 하지만 connectionless 방식은 많이 사용 되지 않는다. 고정된 최대 크기 만큼의 reliable한 전송을 제공한다. L2CAP의 전송 reliability는 설정이 가능하며 3가지 정책이 사용 가능하다.
 1) retransmit를 하지 않는다
 2) 모든 connection이 실패하기 전까지 retransmit를 한다
 3) 특정 시간(0-1279 miliseconds) 후까지 ack이 오지 않았을 경우 packet을 버리고 queued data에 옮긴다. 이 경우는 시간에 따라서 데이터가 전송되어야 할 경우 유효하다

transport protocol의 선택은 다음을 기준으로 한다.
Reliable,streams-based 요구 -> RFCOMM (TCP)
Reliable,datagram 요구 -> RFCOMM or L2CAP with infinite retransmit(TCP)
Best-effort, datagram 요구 -> L2Cap(0-1279ms retransmit)

3. 포트 번호 와 SDP(Service Discovery Protocol)
L2CAP에서는 포트들은 Protocol Service Multiplexers로 불리며 1과 32767 사이에 홀수 번호를 가진다. RFCOMM에서는 channels 1-30이 유효하다. 이름과 범위만 차이가 있고 나머지는 TCP/IP에서의 포트 기능과 유사하다. RFCOMM은 예약된 포트는 없으며 L2CAP의 경우 1-4095 사이의 홀수 포트는 예약되어 있다.

TCP/IP는 well-known 포트가 있어서 클라이언트들은 잘 알려진 서버 기능에 대해서 해당 포트로 접속하면 된다. 블루투스는 포트 번호가 제한되기 때문에 서버 기능에 대해서 Naming 할수 있는 기능을 제공하는데 이게 SDP 이다.
 블루투스는 실행시에 포트를 할당하며 publish-subscribe model을 사용한다. SDP server라고 명명된 서버가 L2CAP의 예약된 포트를 이용하여 서버 기능에 대한 description을 등록할수 있도록 한다.
 접속하는 클라이언트는 SDP server에 제공하는 서비스에 대해 질의 하여 필요한 정보를 얻는다. 어떤 description이 클라이언트가 원하는지를 판단하기 위해서 128-bit의 UUID(Universally Unique Identifier)를 제공한다. (UUID에 대한 설명이 더 필요할 듯..)

4. Connection 설정 및 데이터 전송
Connection 설정 및 데이터 전송은 TCP/IP 프로그래밍과 유사하다

5. Bluetooth Profiles 과 RFCs
 인터넷에서 RFCs가 라우팅과 각종 서비스들(FTP,HTTP)에 대해서 정의를 하고 있는 것처럼 Bluetooth에서는 Bluetooth Profiles라는 것을 제공한다. 이는 physical location information의 교환, 가까운 printer에 프린팅을 하기 위한 profile 등 bluetooth의 short-range 특성을 반영하는 profiles들을 제공한다.




반응형
Posted by alias
,