BLE 디바이스의 통신은 크게 두 단계로 나뉜다.
Advertise
Connection
Advertise
장치의 존재를 알리는 단계
브로드캐스트 방식으로 37, 38, 39 채널을 사용한다.
디바이스는 다음 두 가지 타입으로 나뉜다.
Advertiser(=Broadcaster)
Non-Connectable Advertising Packet을 주기적으로 보내는 디바이스
Observer
Non-Connectable Advertising Packet을 받기 위해 주기적으로 Scanning하는 디바이스
사용 의의
Advertise 방식은 한 번에 한 개 이상의 디바이스와 통신할 수 있는 방법이다.
주로 디바이스가 자신의 존재를 알리거나 적은 양(31Bytes 이하)의 User 데이터를 보낼 때도 사용된다.
한 번에 보내야 하는 데이터 크기가 작을 경우, 굳이 오버헤드가 큰 Connection 과정을 거쳐서 데이터를 보낼 필요가 없기 때문
전송할 수 있는 데이터 크기 제한을 보완하기 위해 Scan Request, Scan Response을 이용해서 추가적인 데이터를 주고 받을 수 있다.
(다음 항목에서 자세히 설명한다)
Advertise 방식은 말 그대로 Signal을 일방적으로 뿌리는 것이기 때문에 상대적으로 보안에 취약하다.
Connection
연결 후 지속적인 데이터 교환이 이뤄지는 단계
1:1 연결 방식을 사용하며, 0~36 채널을 사용한다.
디바이스는 다음 두 가지 타입으로 나뉜다.
Central(Master)
다른 디바이스와 Connection을 맺기 위해 Connectable Advertising Signal을 주기적으로 스캔한다.
연결이 완료되면 Central 디바이스는 timing을 설정하고 주기적인 데이터 교환을 주도한다.
timing
두 디바이스가 매번 같은 Channel에서 데이터를 주고 받기 위해 정하는 hopping 규칙
hopping
블루투스 디바이스들이 다른 디바이스와의 채널 간섭을 최소화하기 위해 사용하는 기술.
두 블루투스 디바이스가 1초 동안 여러 번 채널을 바꿔가며 서로를 동기화한다.
Peripheral(Slave)
Peripheral 디바이스는 다른 디바이스와 Connection을 맺기 위해, Connectable Advertising Signal을 주기적으로 송신한다.
이를 감지한 Central 디바이스가 Connection Request를 보내면 요청을 수락한 후 Connecion을 맺는다.
Connection을 맺고 나면 Central 디바이스가 지정한 timing에 맞추어 Channel을 같이 hopping을 하면서 주기적으로 데이터를 교환한다.
사용 의의
양방향으로 데이터를 주고받거나, Advertising Packet으로만 전달하기에는 많은 양의 데이터를 주고 받아야 하는 경우, Connection Mode를 사용 한다.
Advertise처럼 일대다 방식이 아닌, 일대일 방식으로 디바이스 간에 데이터 교환이 일어난다.
디바이스간에 Channel hopping 규칙을 정해놓고 통신하기 때문에 Advertise보다 안전하다.
디바이스 연결 프로세스