Core Bluetooth - Team-HGD/SniffMEET GitHub Wiki
๊ฐ์
Core Bluetooth๋ ์ ์ ๋ ฅ ๋ธ๋ฃจํฌ์ค ์ฐ๊ฒฐ์ ์ง์ํ๋ ํ๋ ์์ํฌ์ด๋ค.
์ ์ ๋ ฅ ๋ธ๋ฃจํฌ์ค(BLE)๋ฅผ ํตํด ์ฃผ๋ณ ๊ธฐ๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ๋ฐฐํฐ๋ฆฌ ์๋ชจ๊ฐ ์ ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ฑฐ๋ ์ฅ์น๋ฅผ ์ฐ๊ฒฐํ๋๋ฐ ํจ์จ์ ์ด๋ผ ๋ง์ด ์ฌ์ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ธฐํํ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฌ์ฉ๋ ๋ถ๋ถ์ด ์์๊น?
์ค๋ช
Bluetooth Low Energy (BLE)
์ ๋ ฅ ์๋น๋ฅผ ๋ณด์ํ๋ ์ ์ ๋ ฅ ๋ธ๋ฃจํฌ์ค๋ก ํต์ ์๋๋ณด๋ค๋ ์ ๋ ฅ ์๋ชจ๋ฅผ ์ค์ด๋ ๊ฒ์ ์ด์ ์ ๋ง์ถ ๊ธฐ๋ฅ์ด๋ค.
Core Bluetooth ํต์ฌ ๊ธฐ๋ฅ
-
Central ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ์ญํ . ๋ณดํต ์ค๋งํธํฐ์ด Central ์ญํ ์ ํ๋ฉฐ ์ฃผ๋ณ์ BLE ์ฅ์น๋ฅผ ์ค์บํ๊ณ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- ์ค์บ ๋ฐ ํ์: CBCentralManager๋ฅผ ์ฌ์ฉํด BLE ์ฅ์น๋ฅผ ํ์. ์ด๋ ํน์ Service UUID๋ฅผ ์ค์ ํด ์ํ๋ ์ฅ์น๋ง ํํฐ๋งํ ์ ์๋ค.
- ์ฐ๊ฒฐ: ํน์ Peripheral์ ๋ฐ๊ฒฌํ ํ, ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ธ๋ค.
- ๋ฐ์ดํฐ ๊ตํ: ์ฐ๊ฒฐ๋ Peripheral์์ Characteristic์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ผ๋ฉฐ, ์๋ฆผ์ ์ค์ ํด ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐฑ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๋ค.
-
Peripheral(์ฃผ๋ณ ์ฅ์น) ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ ์ญํ . ์ฃผ๋ก BLE ์ฅ์น(์ค๋งํธ ๊ธฐ๊ธฐ๋ค)๊ฐ Peripheral ์ญํ ์ ํ๋ฉฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฑฐ๋ ์ค์ ์ฅ์น์ ์์ฒญ์ ์๋ตํ๋ค.
- ์ฃผ๋ณ ์ฅ์น ์ญํ ์ด๊ธฐํ: CBPeripheral๋ฅผ ์ฌ์ฉํ์ฌ ์ฃผ๋ณ ์ฅ์น๋ฅผ ์ค์ ํฉ๋๋ค.
- Service์ Characteristic ์ค์ : ์ ๊ณตํ Service์ Characteristic์ ์ค์ ํ๊ณ , ์ด๋ฅผ ๊ด๊ณ ํด ์ฃผ๋ณ์์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
- ๊ด๊ณ ์์: ์ค์ ํ ๋ฐ์ดํฐ๊ฐ ์ฃผ๋ณ์ Central์ ์ธ์๋ ์ ์๋๋ก ๊ด๊ณ ๋ฅผ ์์ํ๋ค.
- ์ฐ๊ฒฐ ์๋ฝ ๋ฐ ๋ฐ์ดํฐ ์ ์ก: Central์ด ์ฐ๊ฒฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ๊ฑฐ๋ ์์ฒญ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
-
Service ํน์ ๊ธฐ๋ฅ์ด๋ ํน์ฑ(๋ฐ์ดํฐ๋ ๋์)์ ๋ํ๋ด๋ ์ญํ . ์ฌ๋ฌ ์๋น์ค๊ฐ ํ๋์ BLE ์ฅ์น์ ์กด์ฌํ ์ ์์ผ๋ฉฐ, ๊ฐ ์๋น์ค๋ ๊ณ ์ ํ ์๋น์ค UUID(๋ฒ์ฉ ๊ณ ์ ์๋ณ์)๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ ์๋น์ค๋ ํ๋ ์ด์์ ํน์ฑ(Characteristic)์ผ๋ก ๊ตฌ์ฑ๋๋ค.
-
Characteristic ํด๋น ์๋น์ค์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ด๋ ์ญํ . ํน์ฑ์ ์ฝ์ ์ ์๊ฑฐ๋ ์ธ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์๋ฆผ(Notification)์ด๋ ์ธ๋์ผ์ด์ (Indication)์ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋ ์๋ ์๋ค.
- ์๋น์ค๋ BLE ์ฅ์น๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ ํน์ฑ์ ์ ์ํ๊ณ , ํน์ฑ์ ํด๋น ์๋น์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ํ๋ธ๋ค.
Core Bluetooth ๋์
- CBCentralManager ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , BLE ๊ถํ์ ์์ฒญํ๋ค.
- BLE ์ฅ์น๋ฅผ ์ค์บํ์ฌ ์ํ๋ ์ฅ์น๋ฅผ ์ฐพ๋๋ค. ์ํ๋ ์ฅ์น๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ฐ๊ฒฐ์ ์๋ํ๋ค.
- ์ฐ๊ฒฐ๋ ์ฅ์น์ ์๋น์ค ๋ชฉ๋ก์ ๊ฒ์ํ๊ณ ํ์ํ ์๋น์ค์ ํน์ฑ์ ์ฐพ๋๋ค.
- ํน์ ํน์ฑ(characteristic) ๊ฐ์ ์ฝ๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ์์ ์ ์ํํ๋ค.
- ์์ ์ด ์๋ฃ๋๋ฉด ์ฅ์น์์ ์ฐ๊ฒฐ์ ํด์ ํ๋ค.
Multipeer Connectivity์์ ์ฐจ์ด
- ๊ธฐ์ ๋ชฉ์
- CB : BLE ์ง์ ๊ธฐ๊ธฐ์์ ์ ์ ๋ ฅ ๋ฐ์ดํฐ ์ ์ก
- MC : WiFi, Bluetooth ์ด์ฉํด ์ฃผ๋ณ ๊ธฐ๊ธฐ๋ค๊ณผ N : M ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ ์ ์ก
- ๋คํธ์ํฌ ๊ตฌ์กฐ
- CB : Central - Peripheral ํํ๋ก 1 : N ์ง์
- MC : N : M ์ด๊ฒฐ ์ง์
- ์ฐ๊ฒฐ ๊ฑฐ๋ฆฌ, ์๋
- CB : ๋ธ๋ฃจํฌ์ค ์ง์ ๋ฒ์ ๋ด๋ก ์ ํ, ์๊ท๋ชจ ๋ฐ์ดํฐ ์ ์ก ์ต์ ํ
- MC : WiFi ์ง์์ ํตํด ์ข ๋ ๋์ ๋ฒ์ ๊ฐ๋ฅ,
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ง์
- CB : ๋ฐฑ๊ทธ๋ผ์ด๋์์ BLE ํต์ ์ ์ง์
- MC : ํฌ๊ทธ๋ผ์ด๋์์๋ง ์ํํ ํต์ ์ง์
์ฌ์ฉ
๊ธฐ๋ณธ์ ์ผ๋ก, ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ Nearby Interaction + Multipeer Connectivity ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ํต์ฌ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Core Bluetooth ๊ธฐ๋ฅ์ด ๋ฐ๋์ ํ์ํ ์ํ๋ ์๋๋ผ๊ณ ๋ณด์ฌ์ง๋ค.
ํ์ง๋ง, Nearby Interaction ๊ธฐ๋ฅ์ ๊ธฐ๊ธฐ๊ฐ ํ์ฑํ๋ ์ํ์์๋ง ์๋ํ๋ค๋ ์ ํ์ด ์กด์ฌํ๋ค. ๋๋ฌธ์, ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์๋ ๋์ํ๊ธธ ๋ฐ๋๋ค๋ฉด Core Bluetooth๋ฅผ ์ถ๊ฐ๋ก ์ฌ์ฉํ๋๊ฒ์ด ์ ์ ํด ๋ณด์ธ๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ์์ Core Bluetooth ์ฌ์ฉํด ๊ทผ์ฒ BLE ์ฌ์ฉ์ ๊ฐ์งํ์ฌ ์ฑ์ ํ์ฑํ
- ์ฑ์ด ํ์ฑํ๋๋ฉด Nearby Interaction + Multipeer Connectivity ์ฌ์ฉํด ํ๋กํ ๊ณต์ ์์
๋ํ, BLE ๋์์ด Nearby Interaction๋ณด๋ค๋ ์กฐ๊ธ ๋ ๋์ ๋ฒ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ๊ทผ์ฒ ์ฌ์ฉ์๋ฅผ ์ฐพ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฒ๋๋ค๋ฉด ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ๋ณด์ธ๋ค.