It takes the address of the variable ch
using the address-of operator &
. The resulting address is then converted (cast) to the type unsigned int *
, i.e. a pointer to an unsigned int. This only makes sense if
- The type of
ch
was not unsigned int
to begin with
- The size of
ch
is at least as large as the size of unsigned int
- The called function accepts an
unsigned int *
argument
Since we can see that the type of the argument is in fact uint8_t *
, this is very likely a bug. The cast should either be removed (if ch
is of type uint8_t
already, which it should be) or changed to uint8_t *
. Also, the function's parameter should be const
, a transmit function shouln't change its argument.