UART - Writing and reading AT commands
char and uint8_t should be equivalent on ARM, in other words, char should be unsigned, but there are toolchains out there with char by default signed. It does not matter in this case anyway, because AT commands would only use characters in the [0-127] range.

Adding a \r at the end of the command is mandatory, \n and \x00 would probably be ignored, but better not send them. Responses are terminated with \r\n (not \n\r)