Электрофлуд :)

Эммм, а ты уверен что он должен отличать клаву от мыши? Может это уже задача уровня приложения. Типа вот вам ХИД-класс, а там разбирайте данные как хотите.
Если что, я просто спрашиваю, с хостом дела не имел.
 
Эммм, а ты уверен что он должен отличать клаву от мыши? Может это уже задача уровня приложения. Типа вот вам ХИД-класс, а там разбирайте данные как хотите.
Если что, я просто спрашиваю, с хостом дела не имел.

Там есть либы отдельные, маус декодер, кейборд декодер и т.д.
Пока не добрался до них, не знаю, срабатывает ли вызов "из коробки", или таки через тот хандлер самому их дёргать.

P.S. У хоста есть даже СDC класс, но ни один свисток USB-UART из коробки не завёлся.
P.P.S. Подключать USB-UART мост к STM32 - попахивает дзеном...

UPD
Нет, ни кто мидлварь не візівает.
static USBH_StatusTypeDef USBH_HID_MouseDecode(USBH_HandleTypeDef *phost) дёргает только функция
USBH_HID_GetMouseInfo, у которой в Call Hierarchy - пустота. То есть, таки, юзер должен думать что он делает. То есть, правильнее біло бі оставлять ссыль на объект девайса, а не хоста. Из хоста ещё придётся получить класс, понять кто это, и потом редиректить.
Причём, данные уже положены в какой-то буфер и зачем вообще дёргать мидлварь - пока неясно.

UPD2
В декодере ошибка - нажатие левой клавищи візівает уверенній 1U в бите... "Y". Пабаааам! Узнаю ST... Остальніе 2 кнопки - там, где положено. Данных о перемещении, естественно, нет - они уже считаны в буфер ещё в прерывании.
Наличие вообще декодера, который ни кто не вызывает, а на момент его вызова - он мало информативен - просто визитная карточка ST, наверное :D
 
Но обидно, что написано Maglev, а внутри простая бронзовая втулка. Дурят китайцы доверчивых людей
Не совсем простая, но да, это подшипник скольжения, что не мешает ему работать годами ;).
У меня в десктопе стоят вентиляторы с аналогичными подшипниками, и лет за 10 ни один не сдох, хотя за это время вся остальная начинка была пару раз заменена. Разве что пара старых HDD осталась, и в них тоже стоят аналогичные подшипники :D

Но! Смазка в вентиляторе рассчитана на весь срок службы. Если вентилятор начал шуметь, значит его срок службы закончился. Не надо его смазывать, просто выбрось как есть.
 
Смазка в вентиляторе рассчитана на весь срок службы. Если вентилятор начал шуметь, значит его срок службы закончился
:)
В помещении два десятка одинаковых прожекторов с этими вентиляторами. Куплены новыми в одно и то же время. Но почему-то у одного уже срок службы закончился, а остальные жужжат себе спокойно.
Но ресь не об этом. Я про то, что китайский Maglev оказался бронзовой втулкой :)
А должен быть типа вот:
 
Это вообще нормально - всё подряд делать ссылкой на void просто потому, что ты хуй забил писать нормально?
ссыль на void передается для того шоб по возможности скрыть потроха реализации
юзеру оно не впало, какой драйвер чего делает
через колбек берутся данные тоже средствами из того же мутного исходника, отсюда и void
и проще его не сделаешь никак
 
ссыль на void передается для того шоб по возможности скрыть потроха реализации
юзеру оно не впало, какой драйвер чего делает
через колбек берутся данные тоже средствами из того же мутного исходника, отсюда и void
и проще его не сделаешь никак

Так то если потроха есть...
В данном случае - потроха положили в буфер дату и... самоустранились, отдав калбєк.
И сиди угадывай где тот буфер забирать.

P.S. В єтом ракурсе наличие декодеров выглядит вообще странно... мышиный ломится прямо в мышь, читая с неё x, у, й, 1, 2 и 3 кнопки. Ни как не связано с лоулевелом, работающим в процессе. Если выхвать гет-дата из калбэка - он читает пустые х,у и кнопку, если она была нажата во время входа в калбэк, так как х и у уже выгреб процесс.
 
Ну в целом да.Я сужу по блютузу. Стек поднимает наверх ивенты через коллбэк, а там в зависимости от кода ивента и особенностей приложения void приводишь к соотвествующей структуре.
 
это все кстати (теоретически) прекрасно покрывается union'ами которые почему-то всему полуторамиллиардному индусу впадлу прописывать :D
 
это все кстати (теоретически) прекрасно покрывается union'ами которые почему-то всему полуторамиллиардному индусу впадлу прописывать :D

Смотря у кого. У Нордика все запаковано в структуры. У СТ вот тебе войд, а дальше сам разбирай че тебе надо.
 
Смотря у кого. У Нордика все запаковано в структуры. У СТ вот тебе войд, а дальше сам разбирай че тебе надо.

HAL раньше тоже всё в структурі запаковать пітался :)
Но, что-то поломалось....
 
P.S.
Выяснилось - ни кто декоды не вызывает. Они вызываются пользователем и опустошают буфер. Пока не разобрался что они делают на самом деле, не пользовался ещё таким творчеством от ST...
ae79858bc77fa302e.jpg


Тупездень с этим войдом - просто конгениальная... На самом деле, существует столько статик буферов длиной 100 - сколько классов. На класс - один буфер (да, при смене класса меняется указатель. Тупо и смешно - даже если с прошлого класса (пусть была флешка) данные ещё не прочитаны с буфера - если класс сменился, указатель будет подставлен на другой буфер из за эктивКласса).
Смысла это не имеет.
Код:
typedef struct
{
  uint8_t  *buf;
  uint16_t  head;
  uint16_t tail;
  uint16_t size;
  uint8_t  lock;
} FIFO_TypeDef;

P.S. Я молчу уже о том, что буфера длиной 100, но используются они - на 80 :D
Я думал, что там лежит, собсно, структурка FIFO_TypeDef fifo. Но нет!
Просто насрём на 20 байт, действительно, и накуя они кому...
 
UPD
Попыток раздуплить мышь от клавы в слое HID - не найдено.
Есть поля в хосте, по которым можно это понять, но разруливать придётся самому, так как декодеры срали на всё и сработает любой, столько раз, сколько нужно, выгребая мусор и декодируя мышь, как клаву (если запустить декодер клавы при подключеной мыше). Они не проверяют подкласс.

P.S. Ошибки тоже есть - колесо міши візівает прерівание и функцию FifoWrite, н0 декодер ничего не находит об этом, и ни как не реагирует данными. Придётся лезть в кишки и смотреть где он их теряет, так как, мышь точно что-то передаёт о колесе. Оно просто не имплементировано.
 
яка падлюка цэ вигадала, эпическая сила, нормально же сидели, не, надо скотча на ноги прилепить, как советские детали ковырять
attachment.jpg


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

Вкладення

  • 20201130_170959.jpg
    20201130_170959.jpg
    64 КБ · Перегляди: 335
Для распознавания подкласса в HID найдені только єти 2 пригодные поля структуры
1afb75d9e35c467d00fd33.png

При инициализации ссылка на функцию инита и буфер - раздаётся автоматически.

UPD
Сырец...
4a3c466a5e93077139b6e1.jpg

Надо приводить к более удобоворимому виду из очереди нажатых клавиш... но это уже мой, пользовательский UI. Короче, надежд біло больше, чем оказалось профита. Такой-себе декодер. Ещё коды клавиш в ASCII переводить теперь...
 
В помещении два десятка одинаковых прожекторов с этими вентиляторами. Куплены новыми в одно и то же время. Но почему-то у одного уже срок службы закончился, а остальные жужжат себе спокойно.
Не важно, когда куплен, важно - что закончился ;)
Если подшипник начал шуметь, смазка уже не поможет.

Я про то, что китайский Maglev оказался бронзовой втулкой
А должен быть типа вот:
Не, такого там быть не должно.
Maglev отличается наличием пластины, к которой притягивается магнит крыльчатки, за счет чего уменьшается вибрация и радиальная нагрузка на подшипник.
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
Не важно, когда куплен, важно - что закончился ;)
Если подшипник начал шуметь, смазка уже не поможет
Поможет. Мне же помогает.
Только нафига туда консистентную совать - ума не приложу.
Он шумит изза того, что резиновый сальник, который родной - пересыхает и разваливается в труху.
Эта труха попадает в родную смазку и там от трения превращается в "накипь" по втулке, а сама смазка вытекает при отсутствии сальника.

Обычно, эта накипь несимметричная, а втулка к тому времени уже разработана и имеет люфт.
Из за несимметричного и достаточно свободного пространства - вал начинает "гулять", то в одну полу-полость, то в другую, через раздел из накипи на борту.
Это и вызывает "гул вентилятора".

Я убирал сальник совсем, хорошо прочищал отверстие со спиртобензином и механически (чистилкой для трубок курительных).
Потом закладывал технический вазелин, размешанный с АИ20, чтобы не так дубел на холоде и не тормозил вентилятор.
Если налить просто АИ-20 - оно быстро вытечет и опять гудеть начнёт.

Без сальника чистить придётся чаще, лучше, конечно, вернуть сальник, но я таких не нашел в продаже, уж очень маленький.
 
Maglev отличается наличием пластины, к которой притягивается магнит крыльчатки
Там не сплошная пластина, а отдельные железные сектора напротив секторов сердечника.
И вообще, по моему, это какой-то бред. Подшипник на магнитной левитации должен быть устроен совсем иначе, и ему никакие бронзовые втулки не нужны. И не притягиваться оно должно, а отталкиваться. Иначе при малейшем дисбалансе ротор и магнитная пластина просто слипнутся.

смазка вытекает при отсутствии сальника.
Там не сальники резиновые там были, а почему-то шайбы-пыльники.

Ладно, я уже новый вентилятор купил. Тоже, кстати, SUNON, но уже не Маглев, а просто на втулочке. И с привычной наклейкой бело-зелёной. Новый вентилятор при тех же размерах крутится шустрее, но и шумит заметнее. Пришлось ему подстроечный резистор припаять и обороты чуток уменьшить.
 
Ни разу не встречал подобных вентиляторов с сальниками.
 
Назад
Зверху Знизу