akl, не надо явно приводить тип. Там в примере он все равно неявно приводится при передаче аргумента.

В примере все нормально

Приведение типов происходит из-за того, что операция взятия адреса над структурой естественно возвращает "указатель на структуру"

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

А в объявлении usbSendHidReport она принимает указатель на uchar, ну это будет тот же байт, грубо говоря. Потому что все равно в usbSendHidReport из-за особенностей ее использования будут передаваться переменные разных типов, потому что она используется для разных девайсов

В данном случае не важно, какой именно указатель

Сбивчиво, но ты понял, надеюсь

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