ํ๋ฏธ๊ฒฝ์ผ๋ก ๋ณธ BLE(ATTั GATTัโฆ)
1๋ถ, ๊ฐ์
๋ธ๋ฃจํฌ์ค 4.0์ ์ฒซ ๋ฒ์งธ ์ฌ์์ด ๋ฐํ๋ ์ง ๋ฒ์จ ๊ฝค ์ค๋ ์๊ฐ์ด ํ๋ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ BLE ์ฃผ์ ๋ ๋งค์ฐ ํฅ๋ฏธ๋กญ์ง๋ง ๋ณต์ก์ฑ์ผ๋ก ์ธํด ์ฌ์ ํ ๋ง์ ๊ฐ๋ฐ์๋ฅผ ๋ฐฉํดํ๊ณ ์์ต๋๋ค. ์ด์ ๊ธ์์๋ ๊ฐ์ฅ ๋ฎ์ ๋ ๋ฒจ์ธ Link Layer์ Physical Layer๋ฅผ ์ฃผ๋ก ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์์ฑ ํ๋กํ ์ฝ(ATT) ๋ฐ ์ผ๋ฐ ์์ฑ ํ๋กํ(GATT)๊ณผ ๊ฐ์ ๋ณต์กํ๊ณ ํผ๋์ค๋ฌ์ด ๊ฐ๋
์ ์์กดํ ํ์๋ฅผ ํผํ ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ ๊ณณ์ด ์์ผ๋ฉฐ, ์ด๋ฅผ ์ดํดํ์ง ๋ชปํ๋ฉด ํธํ ์ฅ์น๋ฅผ ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์ค๋ ์ ๋ ์ด ์ง์์ ์ฌ๋ฌ๋ถ๊ณผ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค. ๋ด ๊ธฐ์ฌ์์ ๋๋ ์์ง ํ ๊ฒ์
๋๋ค
์ ๋ชจ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ด๋ ต์ต๋๊น?
์ ์๊ฐ์๋ ์ค๋งํธํฐ์ ํตํด ์ฅ์น๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋งค์ฐ ์ ๋งํ๊ณ ์ค๋ ์ง์๋๋ ์ฃผ์ ๋ผ๋ ๊ฒ์ด ์ฆ์ ๋ถ๋ช ํด์ก์ต๋๋ค. ๋ฐ๋ผ์ ๊ทธ๋ค์ ์ฆ์ ์ต๋ํ์ผ๋ก ๊ตฌ์กฐํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์ํ ์ฅ์น ์ ์กฐ์ ์ฒด๊ฐ ์์ฒด ํ๋กํ ์ฝ์ ์ ์ํ์ง ์์ ํธํ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ ค์์ด ์์ต๋๋ค. ์ด๋ฏธ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ๊ทธ๋ค์ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒ์ BLE ํ๋กํ ์ฝ์ ์ง์ด๋ฃ์ผ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋์ค์ ์ ์ฉํ ์ง ์ฌ๋ถ๋ ์ค์ํ์ง ์์ต๋๋ค. ๋ํ ํฅํ ์ฅ์น ๋ชฉ๋ก์ ํ์ฅํ ์ ์๋ ๊ฐ๋ฅ์ฑ๋ ์ ๊ณตํ์ต๋๋ค.
BLE ํ๋กํ ์ฝ ๋ค์ด์ด๊ทธ๋จ์ด ๊ทธ๋ ค์ง ๊ทธ๋ฆผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ์ฅ ๋ฎ์ PHY(๋ฌผ๋ฆฌ ๊ณ์ธต)๋ ์ฅ์น์ ๋ฌด์ ์ฑ๋์ ๋ด๋นํฉ๋๋ค. ๋งํฌ ๊ณ์ธต(LL)์ ์ ์ก๋ ๋ฉ์์ง์ ์ ์ฒด ๋ฐ์ดํธ ์ํ์ค๋ฅผ ํฌํจํฉ๋๋ค. ์ด์ ๊ธฐ์ฌ์์ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ ํํ ์ฐ๊ตฌํ์ต๋๋ค. ํธ์คํธ ์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค(HCI)๋ ์ปจํธ๋กค๋ฌ์ ํธ์คํธ๊ฐ ์๋ก ๋ค๋ฅธ ์นฉ์ ๊ตฌํ๋๋ ๊ฒฝ์ฐ BLE ๋ ์ด์ด ๋๋ ์นฉ ๊ฐ์ ๊ตํ ํ๋กํ ์ฝ์ ๋๋ค. L2CAP(Logical Link Control and Adaptation Protocol)๋ ํจํท ํ์ฑ, ํ๋ ์ด๋ฐ, ์ค๋ฅ ์ ์ด ๋ฐ ํจํท ์กฐ๋ฆฝ์ ๋ด๋นํฉ๋๋ค. SMP(Security Manager Protocol)๋ ํจํท ์ํธํ๋ฅผ ๋ด๋นํฉ๋๋ค. ์ผ๋ฐ ์ก์ธ์ค ํ๋กํ(GAP)์ "๋๊ฐ ๋๊ตฌ์ธ์ง"๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฅ์น ๊ฐ์ ์ด๊ธฐ ๋ฐ์ดํฐ ๊ตํ์ ๋ด๋นํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ค์บ๋ ๋ฐ ๊ด๊ณ ๋ ํฌํจ๋ฉ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ํ๋กํ ์ฝ์ ๋๋จธ์ง ๋ ๋ถ๋ถ์ธ GATT์ ATT์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. GATT๋ ATT์ ์๋ถ๊ตฌ์กฐ์ด๋ฏ๋ก ์๋ก ๋ฐ์ ํ๊ฒ ์ฝํ ์์ต๋๋ค.
์ด์ผ๊ธฐ๋ฅผ ๋จ์ํํ๊ธฐ ์ํด ๋น์ ๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด๋์ ๊ฐ ๋ค์ ์ด์ผ๊ธฐ์ธ๋ฐ ์์ํ๊ณ ์ถ์ต๋๋ค. BLE ์ฅ์น๋ฅผ ์ฌ๋ฌ ์ ๋ฐ์ด ์๋ ์ฑ
์ฅ์ผ๋ก ์๊ฐํ์ธ์. ๊ฐ ์ ๋ฐ์ ๋ณ๋์ ํ
๋ง์
๋๋ค. ์๋ฅผ ๋ค์ด, SF, ์ํ, ๋ฐฑ๊ณผ์ฌ์ ์ด ๋ด๊ธด ์ ๋ฐ์ด ์์ต๋๋ค. ๊ฐ ์ ๋ฐ์๋ ํน์ ์ฃผ์ ์ ์ฑ
์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ์ฑ
์๋ ๋ฉ๋ชจ๊ฐ ์ ํ ์ข
์ด ์ฑ
๊ฐํผ๋ ์์ต๋๋ค. ๋ํ, ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฑ
์ด ๋ด๊ธด ์์ ์ข
์ด ์นดํ๋ก๊ทธ๋ฅผ ๋ณด์ ํ๊ณ ์์ต๋๋ค. ๊ธฐ์ตํ์ ๋ค๋ฉด ํ๊ต ๋์๊ด์ ์ข
์ด ์นด๋๊ฐ ๋ค์ด ์๋ ์ข์ ์์์
๋๋ค. ์ด ๋น์ ์์ ์บ๋น๋์ ์ฐ๋ฆฌ ์ฅ์น์ ํ๋กํ์
๋๋ค. ์ ๋ฐ์ ์๋น์ค์ด๊ณ , ์ฑ
์ ํน์ฑ์ด๋ฉฐ, ์นดํ๋ก๊ทธ๋ ์์ฑ ํ
์ด๋ธ์
๋๋ค. ์ฑ
์ ๋ถ๋งํฌ๋ ์ค๋ช
์์ด๋ฉฐ ๋์ค์ ๋ ์์ธํ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
์ฅ์น๋ฅผ ๊ฐ๋ฐํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ๋ง์ ํ๋ก์ ํธ์ ์ ์ฌํ ์ฝ๋ ์กฐ๊ฐ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ ๊ฒ์ ๋๋ค. ์ฌ์ค ๋ง์ ์ฅ์น๊ฐ ๋น์ทํ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฅ์น๊ฐ ๋ฐฐํฐ๋ฆฌ๋ก ๊ตฌ๋๋๋ ๊ฒฝ์ฐ ์ถฉ์ ๋ฐ ๋ ๋ฒจ ๋ชจ๋ํฐ๋ง ๋ฌธ์ ๋ ๋์ผํฉ๋๋ค. ์ผ์๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ์ค์ ๋ก ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ๊ฐ์ฒด ์งํฅ ์ ๊ทผ ๋ฐฉ์์ "์์ฑ๊ณผ ๋์์ ์์ฒด ํฌํจ๋ ๊ณต์ฉ์ฒด๋ก ๊ฒฐํฉํ ํ ์ฌ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.". ์ ์๊ฐ์๋ BLE๋ ๋น์ทํ ์ ๊ทผ ๋ฐฉ์์ ์๋ํ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋กํ์ Bluetooth SIG(Special Interest Group)์์ ๊ฐ๋ฐ๋์์ต๋๋ค. ๋์ผํ ํ๋กํ์ ๊ฐ์ง ์ฌ๋ฌ ์ ์กฐ์ ์ฒด์ ์ฅ์น๋ ์๋ก ์ด๋ ค์ ์์ด ์๋ํด์ผ ํฉ๋๋ค. ํ๋กํ์ ์๋น์ค์ ์ค๋ช ์๋ก ๋ณด์๋ ํน์ฑ ์๋น์ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ฌ๋ฐ์ ๋ชจ๋ํฐ(ํผํธ๋์ค ํ์ฐ)์ ํ๋กํ ๋ค์ด์ด๊ทธ๋จ์ ์๊ฐํด ๋ณด์ธ์. ๋ ๊ฐ์ง ์๋น์ค์ ์ฌ๋ฌ ํน์ฑ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฌ๊ธฐ์์ ํ๋กํ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์ฆ์ ๋ช
ํํด์ง๋๋ค. ์ฒดํฌํฌ์ธํธ ํน์ฑ์ ์ด ์นผ๋ก๋ฆฌ ์๋น๋์ XNUMX์ผ๋ก ์ฌ์ค์ ํฉ๋๋ค.
1. ์ฌ๋ฐ์ ์๋น์ค์๋ ์ธ ๊ฐ์ง ํน์ฑ(0x180D)์ด ํฌํจ๋ฉ๋๋ค.
a) ํ์ ์ฌ๋ฐ์ ํน์ฑ(0x2A37)
b) ์ต์
๋ฐ๋ ์ผ์ ์์น ํน์ฑ (0x2A38)
c) ์ฌ๋ฐ์ ์กฐ์ ์ (0x2A39)์ ์กฐ๊ฑด์ ํน์ฑ
2. ๋ฐฐํฐ๋ฆฌ ์ ์ง๊ด๋ฆฌ ์๋น์ค(0x180F):
a) ํ์ ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ๋ ํน์ฑ(0x2A19)
UUID
ํ๋กํ ์์(์๋น์ค, ํน์ฑ ๋ฐ ์ค๋ช
์)์ ๊ณ ์ ํ๊ฒ ์ก์ธ์คํ๋ ค๋ฉด ์ด๋ป๊ฒ๋ ๋ชจ๋ ์์์ ๋ฒํธ๋ฅผ ๋งค๊ฒจ์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด UUID(Universally Unique ID) ๋๋ Universally Unique Identifier์ ๊ฐ์ ๊ฐ๋
์ด ๋์
๋์์ต๋๋ค. UUID๋ ๊ฐ ์ค์ ๊ดํธ ์์ ํ์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ํ ๊ฐ์ง ํน์ดํ ์ ์ด ์์ต๋๋ค. UUID์ ๊ฒฝ์ฐ ๊ธธ์ด๊ฐ 16๋นํธ์ 128๋นํธ์ธ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์์? BLE ํ๋กํ ์ฝ์์๋ ๋ชจ๋ ๊ฒ์ด ์๋์ง ๋ณด์กด์ ๊ดํ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ 16๋นํธ ํฌ๊ธฐ๋ ์๋นํ ํฉ๋ฆฌ์ ์
๋๋ค. ๊ฐ๊น์ด ์ฅ๋์ 65๊ฐ ์ด์์ด ์์ฑ๋ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค. ๋
ํนํ ์๋น์ค์ ํน์ง. ํ์ฌ๋ก์๋ ๊ทธ๋ค์ด ๊ณ์ฐํ ์ ์๋ ๋ชจ๋ ๊ฒ์ด ์ด๋ฏธ ๊ณ์ฐ๋์ด ์์ต๋๋ค(์ด ๋ง์ด ์ด๋์ ์๋์ง ๊ธฐ์ตํ์ธ์ - "๊ทธ๋ ๋น์ ๋ ๊ณ์ฐํ์ต๋๋ค" :-)) ๋ฒํธ๊ฐ ๋งค๊ฒจ์ง ์์
ํ์ง๋ง ์ธํฐ๋ท์์ 4๋ฐ์ดํธ IP ์ฃผ์์ ๊ดํ ์ด์ผ๊ธฐ๋ ๋ค๋ค ๊ธฐ์ตํ์ค ๊ฒ ๊ฐ์ต๋๋ค. ์ฒ์์๋ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ง๊ธ์ ์ฌ์ ํ โโ6๋ฐ์ดํธ ์ฃผ์๋ก ์ ํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์๊ณ DIYer์ ์ฅ๋์ค๋ฌ์ด ์๊ธธ์ ์์ ๋กญ๊ฒ ํ๊ธฐ ์ํด SIG๋ ์ฆ์ 128๋นํธ UUID๋ฅผ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๊ฒ์ ๊ฐ์ธ์ ์ผ๋ก ๋ผ๋์ค ์ฑ๋์์ ๋ชจ๋ ์ข ๋ฅ์ Kulibins์๊ฒ ์ ๊ณต๋์๋ ๋ฌด๋ฉดํ 433MHz ๋์ญ์ ์๊ฐ๋๊ฒ ํฉ๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์๋น์ค ๋ฐ ํน์ฑ์ ๋ํ 128๋นํธ ์๋ณ์๊ฐ ์์ฑ๋์์ต๋๋ค. ์ด๋ ์๋น์ค์ ์ฅ์น์ ๋ํด ๊ฑฐ์ ๋ชจ๋ 128๋นํธ ๊ฐ์ ์ฌ์ฉํ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ๋์ผํ UUID๊ฐ ๋์ฌ ํ๋ฅ ์ XNUMX์ด ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
์ค์ ๋ก ์งง์ 16๋นํธ UUID๋ 128๋นํธ ๊ฐ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. ์ฌ์์์ ์ด ํ์ฅ์ Bluetooth Base UUID๋ผ๊ณ ํ๋ฉฐ ๊ฐ์ 00000000-0000-1000-8000-00805F9B34FB์ ๋๋ค. ์๋ฅผ ๋ค์ด, 16๋นํธ ์์ฑ UUID์ ๊ฐ์ด 0x1234์ธ ๊ฒฝ์ฐ ํด๋น 128๋นํธ UUID์ ๊ฐ์ 00001234-0000-1000-8000-00805F9B34FB์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ๊ณต์๋ ์ ๊ณต๋ฉ๋๋ค.
128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID
์ด ๋ง๋ฒ์ ์ซ์๊ฐ ์ด๋์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋
์ ์ค ์๋ ์ฌ๋์ด ์์ผ๋ฉด ๋๊ธ์ ์ ์ด์ฃผ์ธ์. (Sinopteek๋ผ๋ ๋๋ค์์ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ด ์์
์ ์ํํ์ต๋๋ค. ๋๊ธ์ ์ฐธ์กฐํ์ธ์.) 128๋นํธ UUID๋ฅผ ๋ง๋ค๋ ค๋ฉด ์์น์ ์ผ๋ก ํน์ํ UUID๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ํฐ ๊ฐํฐ...
์ค์ ๋ก ์ฌ๋ฏธ๊ฐ ์์๋ฉ๋๋ค. ATT๋ ํด๋ผ์ด์ธํธ-์๋ฒ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค๋ ์ ์ ์๊ธฐ์์ผ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ์๋ฒ ์ฅ์น๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ผ์ ๊ฐ, ์ ๋ฑ ์ค์์น ์ํ, ์์น ๋ฐ์ดํฐ ๋ฑ๊ณผ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. ์ด์ ๋ชจ๋ "ํผ๋ ์ด๋ ์ฐธ๊ฐ์"์ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ก์ผ๋ฏ๋ก ์ด๋ป๊ฒ๋ ๊ทธ๋ค์ ์ฅ์น์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์์ฑ ํ ์ด๋ธ์ด๋ผ๋ ํ ์ด๋ธ์ ๋ฃ์ต๋๋ค. ์ด๊ฒ์ ์ ๊ธฐ์ตํ์ธ์. ์ด๊ฒ์ด ๋ฐ๋ก BLE์ ํต์ฌ์ ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค. ์ด์ ๊ฐ ์ค์ ์์ฑ์ด๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค. ์ด ํ ์ด๋ธ์ ์คํ ๊น์ํ ๊ณณ์ ์์นํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ด๊ธฐํํ๊ณ ์ ๊ทผํ์ง๋ง, ๋ด๋ถ์์ ์ผ์ด๋๋ ์ผ์ ์ผ๊ณฑ ๊ฐ์ ๋ด์ธ ๋ค์ ์จ๊ฒจ์ ธ ์์ต๋๋ค.
์ฌ์์ ๊ทธ๋ฆผ์ ์ดํด๋ณด๊ฒ ์ง๋ง, ๊ทธ ์ ์ ์ฉ์ด, ์ฆ ์ค๋ช
์์์ ์์ฃผ ํผ๋๋๋ ๋ถ๋ถ์ ๋ํด ์ฆ์ ์ฃผ๋ชฉํ๊ณ ์ถ์ต๋๋ค. ์ค๋ช
์์ ์ญํ ์ ํน์ฑ ์ค๋ช
์ ๋ณด์ํ๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ฅ์ ํ์ฅํด์ผ ํ ๊ฒฝ์ฐ ์ค๋ช
์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ํ ์์ฑ์ด๊ธฐ๋ ํ๋ฉฐ ์๋น์ค ๋ฐ ํน์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์์ฑ ํ
์ด๋ธ์ ์์นํฉ๋๋ค. ๊ธฐ์ฌ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ก๋ ์ค๋ช
์๊ฐ ์์ฑ ํ
์ด๋ธ์ ํ ๋ฒํธ๋ฅผ ์ฐธ์กฐํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด ์ ์ ๋ช
์ฌํด์ผ ํฉ๋๋ค. ํผ๋์ ํผํ๊ธฐ ์ํด ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก "์์ฑ ํฌ์ธํฐ"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ผ์ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ด ์ฐ๊ด๋ ๊ฐ๋ณ ๊ฐ์
๋๋ค.
1. ์์ฑ ํธ๋ค์ ์์ฑ์ ํด๋นํ๋ ํ
์ด๋ธ ์ธ๋ฑ์ค์
๋๋ค.
2. ์์ฑ ์ ํ์ ํด๋น ์ ํ์ ์ค๋ช
ํ๋ UUID์
๋๋ค.
3. ์์ฑ ๊ฐ์ ์์ฑ ํฌ์ธํฐ์ ์ํด ์์ธํ๋ ๋ฐ์ดํฐ์
๋๋ค.
4. ์์ฑ ๊ถํ์ ์์ฑ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์ฝ๊ฑฐ๋ ์ธ ์ ์๋ ์์ฑ, ์ฆ ๊ถํ์ ์ผ๋ถ์
๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์ด๋ป๊ฒ ์ดํดํฉ๋๊น? ์์ฑ ํฌ์ธํฐ๋ ์๋์ ์ผ๋ก ์ฐ๋ฆฌ ํ
์ด๋ธ์ ๋ฒํธ์
๋๋ค.
์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์์ฒญ์์ ์์ฑ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค. 0x0001๋ถํฐ 0xFFFF๊น์ง ํ(์์ฑ) ๋ฒํธ๋ฅผ ๋งค๊ธธ ์ ์์ต๋๋ค. ์ฑ
์ฅ๊ณผ ๊ด๋ จํ์ฌ ์ด๊ฒ์ ์ข
์ด ์นดํ๋ก๊ทธ์ ์นด๋ ๋ฒํธ์
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋์๊ด ๋ชฉ๋ก๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์นด๋๋ ์ซ์๊ฐ ๋ง์ ์์๋๋ก ๋ฐฐ์ด๋ฉ๋๋ค. ๊ฐ ํ์ ๋ผ์ธ์ ๋ฒํธ๋ ์ด์ ๋ผ์ธ๋ณด๋ค ์ปค์ผ ํฉ๋๋ค. ๋์๊ด๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ๋ถ ์นด๋๊ฐ ๋ถ์ค๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ค ๋ฒํธ์ ๊ณต๋ฐฑ์ด ์์ ์ ์์ต๋๋ค. ์ด๋ ํ์ฉ๋ฉ๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ ์ง์ ์ผ๋ก ์งํ๋๋ค๋ ๊ฒ์
๋๋ค.
์์ฑ ์ ํ์ ์์ฑ์ด ๋ํ๋ด๋ ๋ด์ฉ์ ๊ฒฐ์ ํฉ๋๋ค. C์ธ์ด์ ๋น์ ํ์๋ฉด,
๋ถ์ธ, ์ซ์ ๋ณ์ ๋ฐ ๋ฌธ์์ด์ด ์๋ ๊ณณ์ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ธ์ํ๋ ์์ฑ ์ ํ์ผ๋ก
์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง, ์ด ์์ฑ์ ์ด๋ป๊ฒ ๊ณ์ํด์ ํ์ฉํ ์ ์๋์ง. ์๋์์๋ ๋ช ๊ฐ์ง ํน์ ์ ํ์ ์์ฑ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด "์๋น์ค ์ ์ธ"(0x2800), "ํน์ฑ ์ ์ธ"(0x2803), "์ค๋ช
์ ์ ์ธ"(0x2902)์
๋๋ค.
์์ฑ์ ๊ฐ์ ์ค์ ์๋ฏธ์ ๋๋ค. ๋์ด๋ฐ๋ณต์ ์ฉ์ํ์ธ์. ์์ฑ ์ ํ์ด ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ ์์ฑ ๊ฐ์ ์๋ฅผ ๋ค์ด "Hello World !!!"๋ผ๋ ์ฌ๋ก๊ฑด์ผ ์ ์์ต๋๋ค. ์์ฑ ์ ํ์ด "์๋น์ค ์ ์ธ"์ธ ๊ฒฝ์ฐ ํด๋น ๊ฐ์ ์๋น์ค ์์ฒด์ ๋๋ค. ๋๋ก๋ ๋ค๋ฅธ ์์ฑ๊ณผ ํด๋น ์์ฑ์ ์ฐพ์ ์ ์๋ ์์น์ ๋ํ ์ ๋ณด์ด๊ธฐ๋ ํฉ๋๋ค.
์์ฑ ๊ถํ์ ํตํด ์๋ฒ๋ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ ์ก์ธ์ค๊ฐ ํ์ฉ๋๋์ง ์ฌ๋ถ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๊ถํ์ ์์ฑ ๊ฐ์๋ง ์ ์ฉ๋๋ฉฐ ํฌ์ธํฐ, ์ ํ ๋๋ ๊ถํ ํ๋ ์์ฒด์๋ ์ ์ฉ๋์ง ์์ต๋๋ค. ์ ๊ฒ๋ค. ์์ฑ ๊ธฐ๋ก์ด ํ์ฉ๋๋ฉด ์๋ฅผ ๋ค์ด "Hello World !!!" ์ค์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. "์ข์ ์์นจ"์ด๋ผ๋ ์ค์. ๊ทธ๋ฌ๋ ์๋ก์ด ๋ผ์ธ์ ์์ฑํ๋ ๊ฒ์ ๊ธ์งํ๊ฑฐ๋ ์์ฑ ์ ํ์ ๋ณ๊ฒฝํ๊ณ ํด๋น ๋ผ์ธ์ โ์๋น์ค ์ ์ธโ์ผ๋ก ์ง์ ํ ์๋ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ํด๋น ์์ฑ์ ์์ฒญํฉ๋๋ค. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ ๋ฌด์์ ์ ๊ณตํ ์ ์๋์ง ์ ์ ์์ต๋๋ค. ๊ฐ์ ์ฝ๊ณ ์ธ ํ์๋ ์์ง๋ง.
์ด๋ป๊ฒ ๋ณด์ด๋์ง
GATT์ ๊ฐ๋ ์ ์์ฑ ํ ์ด๋ธ์ ์์ฑ์ ๋งค์ฐ ๊ตฌ์ฒด์ ์ด๊ณ ๋ ผ๋ฆฌ์ ์ธ ์์๋ก ๊ทธ๋ฃนํํ๋ ๊ฒ์ ๋๋ค. ์๋์์ ์ฌ๋ฐ์ ํ๋กํ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด ํ ์ด๋ธ์ ๊ฐ์ฅ ์ผ์ชฝ ์ด์ ์ ํ ์ฌํญ์ ๋๋ค. ์ด๋ ๋จ์ํ ์ด ํ(์์ฑ)์ด ๋ฌด์์ธ์ง ์ค๋ช ํฉ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ์ด์ ์ด๋ฏธ ์ฐ๋ฆฌ์๊ฒ ์น์ํฉ๋๋ค.
๊ฐ ๊ทธ๋ฃน์ ์๋จ์๋ ํญ์ ์๋น์ค ์ ์ธ ์์ฑ์ด ์์ต๋๋ค. ํด๋น ์ ํ์ ํญ์ 0x2800์ด๋ฉฐ ํฌ์ธํฐ๋ ํ
์ด๋ธ์ ์ด๋ฏธ ์กด์ฌํ๋ ์์ฑ ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ํด๋น ๊ถํ์ ์ธ์ฆ์ด๋ ์น์ธ ์์ด ํญ์ ์ฝ๊ธฐ ์ ์ฉ์
๋๋ค. ์ด ๊ฐ๋
์ ๋ํด์๋ ๋์ค์ ์กฐ๊ธ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๊ฐ์ ์๋น์ค๊ฐ ๋ฌด์์ธ์ง ์๋ณํ๋ ๋ ๋ค๋ฅธ UUID์
๋๋ค. ํ์์ ๊ฐ์ 0x180D๋ก Bluetooth SIG์์ ์ฌ๋ฐ์ ์๋น์ค๋ก ์ ์ํ ๊ฐ์
๋๋ค.
์๋น์ค ๋ฐํ์ ์ด์ด ํน์ฑ ๋ฐํ๊ฐ ์ด์ด์ง๋๋ค. ์๋น์ค ์ ์ธ๊ณผ ํ์์ด ์ ์ฌํฉ๋๋ค. UUID๋ ํญ์ 0x2803์ด๊ณ ๊ถํ์ ์ธ์ฆ์ด๋ ๊ถํ ๋ถ์ฌ ์์ด ํญ์ ์ฝ๊ธฐ ์ ์ฉ์ ๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์์ฑ ๊ฐ ํ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ ํญ์ ํฌ์ธํฐ, UUID ๋ฐ ์์ฑ ์งํฉ์ด ํฌํจ๋ฉ๋๋ค. ์ด ์ธ ๊ฐ์ง ์์๋ ํน์ฑ ๊ฐ์ ํ์ ์ ์ธ์ ์ค๋ช ํฉ๋๋ค. ํฌ์ธํฐ๋ ์์ฐ์ค๋ฝ๊ฒ ์์ฑ ํ ์ด๋ธ์์ ํน์ฑ ๊ฐ ์ ์ธ์ ์์น๋ฅผ โโ๋ํ๋ ๋๋ค. UUID๋ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ํ ์ ์๋ ์ ๋ณด๋ ๊ฐ์น์ ์ ํ์ ์ค๋ช ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์จ๋ ๊ฐ, ์ ๋ฑ ์ค์์น ์ํ ๋๋ ๊ธฐํ ์์ ๊ฐ์ด ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ํน์ฑ ๊ฐ์ด ์ํธ ์์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ์์ฑ์ ๋๋ค.
์ฌ๊ธฐ์ ๋ ๋ค๋ฅธ ํจ์ ์ด ์ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ด๋ ์์ฑ ๊ถํ ๋ฐ ํน์ฑ ์์ฑ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ฌ์์ ๋นํธ ํ๋ ์์ฑ์ ๋ํ ๊ทธ๋ฆผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ณด์๋ค์ํผ ์ฌ๊ธฐ์๋ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋๋ ์์ต๋๋ค. ์์ฑ ๋ฐ ์์ฑ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ถํ์ด ์๋ ์ด์ ๊ฐ ๊ถ๊ธํ ์ ์์ต๋๋ค.
ํน์ฑ๊ฐ์ ๋ํ ์ฝ๊ธฐ/์ฐ๊ธฐ? ํญ์ ๋์ผํด์ผ ํ์ง ์๋์? ์ฌ์ค ํน์ฑ ๊ฐ์ ์์ฑ์ ์ค์ ๋ก GATT ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์์ ์ฌ์ฉ๋๋ ํด๋ผ์ด์ธํธ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ผ ๋ฟ์
๋๋ค. ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ํน์ฑ ์ ์ธ ์์ฑ์์ ๋ฌด์์ ๊ธฐ๋ํ ์ ์๋์ง์ ๋ํ ๋จ์ํ ํํธ์
๋๋ค. ์ด์ ๋ํด ์ข ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์ฑ์๋ ์ด๋ค ์ ํ์ ๊ถํ์ด ์์ต๋๊น?
1. ์ ๊ทผ ๊ถํ:
- ๋
์
- ๊ธฐ๋ก
- ์ฝ๊ณ ์ฐ๊ธฐ
2. ์ธ์ฆ ๊ถํ:
- ์ธ์ฆ ํ์
- ์ธ์ฆ์ด ํ์ํ์ง ์์ต๋๋ค
3. ์น์ธ ๊ถํ:
โ ์น์ธ์ด ํ์ํฉ๋๋ค
- ์น์ธ์ด ํ์ํ์ง ์์ต๋๋ค
์์ฑ ํ์ธ๊ณผ ํน์ฑ ์์ฑ์ ์ฃผ์ ์ฐจ์ด์ ์ ์ ์๋ ์๋ฒ์ ์ ์ฉ๋๊ณ ํ์๋ ํด๋ผ์ด์ธํธ์ ์ ์ฉ๋๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฒ๋ ํน์ฑ ๊ฐ์ ์ฝ๋ ๊ฒ์ด ํ์ฉ๋ ์ ์์ง๋ง ์ธ์ฆ์ด๋ ๊ถํ ๋ถ์ฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ํน์ฑ์ ์์ฑ์ ์์ฒญํ๋ฉด ์ฝ๊ธฐ๊ฐ ํ์ฉ๋๋ค๋ ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์ฝ์ผ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์์ฑ๋ณด๋ค ๊ถํ์ ์ฐ์ ์์์ ๋ํด ์์ ํ๊ฒ ์ด์ผ๊ธฐํ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ธก์์๋ ์์ฑ์ ์ด๋ค ๊ถํ์ด ์๋์ง ์ ์ ์์ต๋๋ค.
์ค๋ช ์
์ฐ๋ฆฌ ํ
์ด๋ธ๋ก ๋์๊ฐ์. ํน์ฑ ๊ฐ์ ์ ์ธํ ํ ๋ค์๊ณผ ๊ฐ์ ์์ฑ ์ ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
1. ์๋ก์ด ํน์ฑ ์ ์ธ(์๋น์ค๋ ๋ง์ ํน์ฑ์ ๊ฐ์ง ์ ์์)
2. ์ ๊ท ์๋น์ค ์ ์ธ(ํ์ ๋ค์๊ฐ ์์ ์ ์์)
3. ํธ๋ค ์ ์ธ
์ฌ๋ฐ์ ์ธก์ ํน์ฑ์ ๊ฒฝ์ฐ, ๋ณธ ํ์์๋ ํน์ฑ๊ฐ ์ ์ธ๊ณผ ํจ๊ป ๋์คํฌ๋ฆฝํฐ ์ ์ธ์ ๋๋ฐํฉ๋๋ค. ์ค๋ช ์๋ ํน์ฑ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋ ์์ฑ์ ๋๋ค. ์ค๋ช ์์๋ ์ฌ๋ฌ ์ ํ์ด ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์ ๋ ๋ฒ์งธ ๋ถ๋ถ์์ ์ด์ ๋ํด ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ง๊ธ์ CCCD(ํด๋ผ์ด์ธํธ ํน์ฑ ๊ตฌ์ฑ ์ค๋ช ์)๋ง ๋ค๋ฃจ๊ฒ ์ต๋๋ค. UUID๋ 0x2902์ ๋๋ค. ์ด ์ค๋ช ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๋ ์๋ฒ์์ ํ์ ๋๋ ์๋ฆผ์ ํ์ฑํํ ์ ์์ต๋๋ค. ๊ทธ๋ค ์ฌ์ด์ ์ฐจ์ด๋ ์์ง๋ง ์ฌ์ ํ ์กด์ฌํฉ๋๋ค. ํต์ง์๋ ํด๋ผ์ด์ธํธ์ ์์ ํ์ธ์ด ํ์ํ์ง ์์ต๋๋ค. ํ์์๋ ์ด๊ฒ์ด ํ์ํ์ง๋ง GATT ์์ค์์ ๋ฐ์ํ์ง๋ง ์ ์ฉ ์์ค์๋ ๋๋ฌํ์ง ์์ต๋๋ค. ์ ๊ทธ๋ ์ต๋๊น? ์์, ๋๋ ์ด๊ฒ์ ๋ชจ๋ฅธ๋ค. ๋ถ์ ๋ฝ ์ ๋ฌธ๊ฐ๋ค์ ์๋ฆผ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค๊ณ ๋ง์๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ๋ํ ๋ ๊ฒฝ์ฐ ๋ชจ๋ ํจํค์ง ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ(CRC ์ฌ์ฉ)๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฒฐ๋ก
๊ธ์ ๋ง์น๋ฉฐ ์ด๋ ๊ฒ ๋งํ๊ณ ์ถ์ต๋๋ค. ๋ง์ง๋ง ํ๋ ์ฝ๊ฐ ํผ๋์ค๋ฝ์ต๋๋ค. ํ์ง๋ง, ์์ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ์ ํํ์ต๋๋ค.
๊ทธ๋ฃน์ฌ ์ง์
ํ์ฒด๋ฅด์คํคํฌ ๋ธ๋ผ๋๋ฏธ๋ฅด
์ถ์ฒ : habr.com