작은 디바이스는 화면만이 아닙니다. 상당수가 무선 모듈, GPS, 트랙볼, 작은 키보드를 갖추고 있으며, 게임이나 앱은 터치를 쓰듯이 그것들을 쓸 수 있어야 합니다. 이번 릴리스에서는 패키지 하나를 추가하고, 다른 두 패키지를 크게 발전시켰습니다.
deki-lora
deki-lora는 현재 대부분의 LoRa 모듈과 보드에 들어 있는 무선 칩인 Semtech SX1262로 LoRa 패킷을 송수신합니다. 코드에서 무선 모듈을 가져와 Send()를 호출하고, Receive()로 수신된 데이터를 신호 세기, SNR과 함께 받습니다. 무선 모듈은 송신하지 않을 때는 항상 수신 대기합니다.
대신 처리해 주는 것이 두 가지 있습니다.
- 버스 공유. 많은 보드에서 무선 모듈은 디스플레이와 같은 SPI 버스에 연결되어 있습니다. 인터럽트 라인이 연결되어 있으면 드라이버는 무선 모듈이 알릴 것이 있을 때만 버스를 건드리므로, 화면으로 가는 프레임이 지연되지 않습니다.
- 듀티 사이클. 유럽에서는 868 MHz에서 디바이스가 전체 시간의 1%만 송신할 수 있습니다. 드라이버는 각 패킷의 전송 시간으로 이를 계산하고, 제한을 넘기는 송신은 거부하면서 얼마나 기다려야 하는지 알려 줍니다. 다른 지역에서는 각자의 주파수와 제한을 설정합니다.
데모에는 LoRa 화면이 있습니다. 한 디바이스에서 Ping을 누르면, 데모를 실행 중인 다른 모든 디바이스에 메시지가 신호 세기와 함께 표시됩니다.
deki-gps

deki-gps는 NMEA를 쓰는 모든 수신기를 읽으며, 이제 더 많은 정보를 읽습니다. 위치와 시간, 고도, 그리고 GPS, GLONASS, Galileo, BeiDou 구분 없이 보이는 위성 수와 사용 중인 위성 수입니다.
속도를 0으로 설정하면 올바른 속도를 스스로 찾습니다. 체크섬이 유효한 문장이 들어올 때까지 흔히 쓰는 속도를 차례로 시도합니다. 이는 여러 종류의 모듈을 탑재해 출하되는 보드에서 중요한데, 모듈마다 통신 속도가 다를 수 있기 때문입니다. 또한 실내에서는 위치를 끝내 잡지 못할 수도 있으므로, 어디까지 진행되었는지 알려 줍니다. 들어온 바이트, 유효한 문장, 위성 수입니다. “위치 없음"이 더 이상 수수께끼가 아닙니다.
트랙볼과 키보드

deki-input은 이제 트랙볼을 제대로 된 포인터로 만들며, ThinkPad TrackPoint 같은 손맛이 나도록 조정했습니다. 천천히 굴리면 정밀하고, 빠르게 돌리면 화면을 가로지르며, 커서는 뚝뚝 끊기지 않고 미끄러지듯 멈춥니다. 클릭은 마우스 클릭이므로, 터치용으로 설계한 화면도 그대로 쓸 수 있습니다.
I2C 키보드 입력은 일반 키 입력으로 들어오므로, 게임은 휴대용 기기에서도 PC에서와 똑같이 방향키를 읽습니다. 키보드에 백라이트가 있으면 게임에서 설정할 수 있습니다.
가진 하드웨어에 맞춘 버튼
데모는 서로 매우 다른 하드웨어에서 돌아가므로, 메뉴에서 디바이스에 없는 기능은 회색으로 비활성화됩니다. PC에서는 LoRa와 트랙볼 화면이 비활성화되고, 둘 다 갖춘 휴대용 기기에서는 모두 활성화됩니다. 프로젝트에서도 보드가 어떤 프로바이더를 초기화했는지 물어보면 똑같이 할 수 있습니다.
이 모든 것이 0.18.2 패키지에 들어 있으며, LilyGO 보드 패키지를 쓰면 T-Deck Plus에서 꺼내자마자 바로 동작합니다.
