Eu tenho um dispositivo de classe de entrada (acelerômetro) vinculado a um driver que expõe os atributos sysfs que eu preciso acessar do site do usuário. Usando uma regra do udev, forneci um alias que identifica inequivocamente o meu dispositivo, ou seja, ll /dev/input
yields:
lrwxrwxrwx 1 root root 6 May 18 13:47 accelerometer0 -> event0
drwxr-xr-x 2 root root 60 May 18 13:47 by-path
crw-rw---- 1 root input 13, 64 May 18 13:47 event0
crw-rw---- 1 root input 13, 65 May 18 13:47 event1
crw-rw---- 1 root input 13, 66 May 18 13:47 event2
Até aqui, tudo bem: posso open("/dev/input/accelerometer0")
no meu código da terra do usuário e começar a transmitir os dados. Mas para, por exemplo, alterar a taxa de dados, preciso gravar no atributo pollrate_ms
no diretório sysfs relacionado. Um ls /sys/class/input/
produz:
event0 event1 event2 input0 input1 input2
Por acaso, sei que pollrate_ms
reside em input0/device
, mas preciso descobrir isso de forma programática, especialmente porque atualizações futuras podem alterar essa numeração.
Eu sei que posso usar libudev
para enumerar /sys/class/input
e, em seguida, usar um loop for para explorar cada um desses diretórios até encontrar o que contém pollrate_ms
. Parece que há muito trabalho em comparação com a facilidade de identificar o dispositivo sem ambigüidade por meio de uma regra do udev.
Estou perdendo uma maneira fácil ou devo apenas sugá-lo?