Почему MFORE MELOR MORORECLED SLASHING не замедляется со временем?

Для последней части вашего вопроса: используйте find , чтобы найти все файлы старше 5 * 60 минут ( -cmin проверяет наличие время изменения в минутах, +300 означает более 300); {} заменяется именем файла:

find in_dir -cmin +300 -type f -exec mv {} out_dir \;

Обновление: добавлен -тип f , чтобы не перемещать сам in_dir в out_dir.

1
06.09.2018, 18:37
1 ответ

Частичный ответ:

Давайте сначала разберемся.

Если я вас правильно понял, OpenWRT работает на MPU (MT7688 ). MPU видит MCU (ATmega )за UART, а MPU имеет USB-контроллер, к которому подключена стандартная USB HID-клавиатура.

В ядре нажатия клавиш проходят через следующие уровни:

keyboard -> USB -> HID -> input

Таким образом, клавиатура отправляет USB-пакеты как «прерывания», которые содержат данные отчета HID. Данные HID описываются в дескрипторе HID, а для клавиатур обычно у вас есть один байт-модификатор и до шести одновременных нажатий клавиш. Но возможны и другие форматы. Вы можете прочитать необработанные отчеты hid из /dev/hidrawX. Отчеты HID преобразуются в события уровня ввода ядра, которые содержат одно нажатие/отпускание клавиши, и это те, которые вы читаете из /dev/input/event0.

Ничто из этого не имеет ничего общего с UART или стоящей за ним ATmega.

Теперь есть способы подключить HID-устройство через другие шины к уровню ядра, а не через USB. Например, по I2C или по UART.

Вы этого хотите? Это снова не имеет ничего общего с наличием событий клавиатуры USB -на /dev/input/event0.

Другой вариант — изобрести свой собственный частный протокол, как вам угодно, запустить одну сторону на ATmega и запустить небольшую программу на C, которая регистрирует новое устройство входного -уровня через uinput , считывает UART, а затем отправляет событие входного уровня.

Вы этого хотите? Опять же, это не имеет ничего общего с наличием событий клавиатуры USB -на /dev/input/event0или с пересылкой этих событий на UART.

Или вы хотите получать события клавиатуры от MPU, отправлять их в ATmega, обрабатывать их там, а затем отправлять обратно, чтобы они действовали как реальные события ввода? Это конечно возможно,хотя тогда вы должны спросить себя, почему вы не выполняете эту обработку на MPU в первую очередь.

Пожалуйста, опишите вашу настоящую цель . На данный момент немного непонятно. Вы можете возиться со слоем ввода Linux, вы можете возиться со слоем HID Linux, вы можете вводить события в оба слоя и делать все, что хотите. Форматы не особо сложные. Вы просто должны четко указать , что вы хотите.

Modify the Arduino keyboard class to be able to send KeyReports the way I want with the raw data received from OpenWRT

не имеет большого смысла. На уровне ядра нет «класса клавиатуры Arduino». Если вы используете «класс клавиатуры Arduino» как часть вашей системы разработки, пожалуйста, свяжите с ним. И это, вероятно, не очень вам поможет, вам нужно будет понимать другие форматы (HID-отчет, событие входного слоя ).

Редактировать

Подводя итог, (в следующий раз, когда вы зададите проблему, пожалуйста, опишите ее аналогичным образом. Также взгляните на проблему с XY вопросами):

You want to have an intermediary device between a USB keyboard and some other computer, where the other computer should just see an ordinary keyboard, and on the device you can do keylogging, trigger other events etc. (You still haven't specified if it is necessary that this intermediary device is actual hardware, or if it is also possible to install something on the PC that will either help with the task, or do the extra processing of the keyboard events.)

For that, you wanted to use a Linkit board. The MPU on the Linkit board acts as USB host to the keyboard. It is connected via an UART to the MCU (an ATmega), which itself can act as a USB HID device, which in turn can be connected to the other PC.

Чтобы работать как USB HID-устройство, MCU должен делать три вещи. :Он должен иметь дескриптор HID, описывающий отчеты, он должен отправлять отчеты о нажатиях клавиатуры HID и реагировать на HID отчеты с ПК для настройки светодиодов клавиатуры и т. д. Я предполагаю, что у вас есть библиотека для ATmega, которая обрабатывает все это за вас.

Самый простой способ — просто скопировать дескриптор HID с настоящей USB-клавиатуры. Вы можете найти дескриптор HID в удобочитаемой форме -в /sys/kernel/debug/hid/DEVICE_ID/rdesc, где ID УСТРОЙСТВА _идентифицирует вашу клавиатуру. Либо проанализируйте шестнадцатеричное число в начале, либо узнайте, есть ли ioctl, где вы можете получить эту информацию напрямую.

Затем вам понадобится небольшая программа на MPU, которая использует специальный протокол -hoc для связи с ATmega. Он должен сделать следующее:(1 )Если подключается USB-устройство hid, прочитать и проанализировать дескриптор HID, отправить дескриптор HID в ATmega.(2 )Теперь входим в цикл и пересылаем HID-отчеты с /dev/hidrawN, где N— номер для клавиатуры по UART, а также записываем HID-отчеты, полученные от UART, в /dev/hidrawN. (3 )Отправка сообщения «выход», если USB-клавиатура отключается.

Для ATmega вам понадобится небольшая программа, которая реализует другую сторону, используя доступную библиотеку HID.

Вы можете выбрать, на какой стороне осуществлять регистрацию ключей и т. д.

Одновременные нажатия клавиш, заглавные буквы и т. д. автоматически обрабатываются путем пересылки отчетов HID.

0
28.01.2020, 00:29

Теги

Похожие вопросы