Android - чтение «атрибут устройства» завершается с ошибкой «неверная длина» - PullRequest
4 голосов
/ 05 сентября 2011

Я работаю на платформе TI OMAP с Android в качестве операционной системы. Для одного UseCase, мы должны переключить один из светодиодов в устройстве. Светодиод имеет номер «Атрибуты устройства», а из уровня приложений [.java] мы хотим прочитать «Атрибут устройства».

Когда мы запускаем команду cat в приглашении adb:

# cat /sys/devices/device_name/device_attribute
# device_attribute:invalid length

Получаем ошибку «неверная длина». Следовательно, я хотел знать, есть ли способ прочитать «Свойство устройства», чтобы оно было доступно и для уровня приложения.

Я нашел похожий вопрос на другом форуме http://android.modaco.com/topic/312770-possible-solution-for-lack-of-notification-light-developers-needed, но он также остался без ответа.

Спасибо за ответы !!!

Решение На устройстве было только «set_device_attribute», но, поскольку «get_device_attribute» отсутствовал, мы получали проблему «недопустимой длины» при выполнении команды «read» для этого свойства устройства.

Я добавил новый API с именем:

static ssize_t get_device_attribute(struct device *dev, struct device_attribute *attr,
char *buf)
{
 .........................
 .........................
 .........................
}

и обновил атрибут устройства

static DEVICE_ATTR(device_property, 0777,get_device_attribute, set_device_attribute);

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

неверная длина часто указывает на каталог. Попробуйте перейти в последний "device_attribute".

Альтернативно, вы также можете искать информацию об устройстве в "/proc".

0 голосов
/ 05 сентября 2011

У вас, вероятно, есть исходный код ядра Linux, найдите конкретную реализацию sysfs устройства, посмотрите, как оно было запрограммировано.

...