A colossal Dreamer: GR鐵塔-天生我材

iOS BLE 코딩 난이도 CBPeripheralManager >> CBCentralManager 본문

Development/비에리(Bluetooth LE)

iOS BLE 코딩 난이도 CBPeripheralManager >> CBCentralManager

江多林 2019. 5. 13. 22:05

CoreBluetooth (Ble) 코딩 까도 까도 계속 어려움이 나오는 구나.

CBCentralManager (Client 모드) 관련 코드도 무지 어려웠는데..
CBPeripheralManager (Server 모드) 관련 코드는 더 어렵구나..

CoreBluetooth 진입장벽

  1. 접속 프로세스
    1. 용어도 어색하고, 제약도 많아서 개념파악이 쉽지 않음
  2. 어색한 delegate 모델
    1. 운영상황이 서로 다른 상태모형을 하나의 delegate 가 받아 처리하기에 꼬리의 꼬리를 물게 된다.
    2. 객체지향모델과는 서로 결이 달라 매우 어색한 코드 작성되며, 스텝이 꼬인 것을 복원하려 하면, 더욱 복잡해진다.
  3. Central 상태모형 분리
    1. scanning: idle → scanning → peripheral identifier
    2. working: peripheral identifier → connect & configurate → working
    3. restoring: restoring info → configuration 재구성
    4. CBCentralManager.connect(peripheral) 이후에 Peripheral 메시지를 받을 수 있다.
  4. Peripheral 상태모형
    1. configuration: idle → configurate → running → idle
    2. advertisement: idle → advertising
    3. subscribing 이것은 또 어떻게.. ㅡㅜ

접근 순서

  1. 꼬리의 꼬리를 무는 예제로 순환구조를 테스트해보자
    1. 이 때는 PeripheralManager 가 CentralManager 보다 100배는 쉽다.
  2. Central 을 3가지 상태모형으로 분리하여 구성하자.
    1. scanning 은 완전히 독립된 CentralManager 로 분리할 수 있다. ( 복수의 CentralManager 인스턴스를 써도 잘 동작하므로 )
    2. Peripheral 처리기를 별도로 분리하자.
    3. Restoring 을 구성하자.
  3. Peripheral 은 새로운 접근 방법을 요구하는데...
    1. '어떻게?' 에 대해서 아직은 잘 모르겠다.

'Development > 비에리(Bluetooth LE)' 카테고리의 다른 글

Bluetooth Event  (0) 2021.03.18
Bluetooth LE iOS MTU maximumWriteValueLength  (0) 2019.04.16
Bluetooth LE Pairing 과정 Workflow  (0) 2019.04.02
BLE 훑어보기  (0) 2019.03.14