feat(at): add UART baud AT commands
This commit is contained in:
+44
-2
@@ -365,8 +365,8 @@ static at_result_t handle_summary_query(char *response, uint16_t max_len)
|
||||
g_config.links[2].enabled, g_config.links[2].local_port, rip_str[2], g_config.links[2].remote_port, link_uart_to_str(g_config.links[2].uart),
|
||||
g_config.links[3].enabled, g_config.links[3].local_port, rip_str[3], g_config.links[3].remote_port, link_uart_to_str(g_config.links[3].uart),
|
||||
g_config.mux_mode,
|
||||
g_config.uart_baudrate[0],
|
||||
g_config.uart_baudrate[1]);
|
||||
(unsigned long)g_config.uart_baudrate[0],
|
||||
(unsigned long)g_config.uart_baudrate[1]);
|
||||
|
||||
return AT_OK;
|
||||
}
|
||||
@@ -386,6 +386,16 @@ static at_result_t handle_net_query(char *response, uint16_t max_len)
|
||||
return AT_OK;
|
||||
}
|
||||
|
||||
static at_result_t handle_baud_query(char *response, uint16_t max_len)
|
||||
{
|
||||
snprintf(response,
|
||||
max_len,
|
||||
"+BAUD:U0=%lu,U1=%lu\r\nOK\r\n",
|
||||
(unsigned long)g_config.uart_baudrate[0],
|
||||
(unsigned long)g_config.uart_baudrate[1]);
|
||||
return AT_OK;
|
||||
}
|
||||
|
||||
static at_result_t handle_link_query(uint32_t index, char *response, uint16_t max_len)
|
||||
{
|
||||
char rip_str[16];
|
||||
@@ -556,6 +566,38 @@ at_result_t config_process_at_cmd(const char *cmd, char *response, uint16_t max_
|
||||
snprintf(response, max_len, "OK\r\n");
|
||||
return AT_NEED_REBOOT;
|
||||
}
|
||||
if (equals_ignore_case(p, "BAUD?")) {
|
||||
return handle_baud_query(response, max_len);
|
||||
}
|
||||
if (parse_command_with_value(p, "BAUD", &value)) {
|
||||
char value_copy[32];
|
||||
char *cursor;
|
||||
char *token;
|
||||
uint8_t uart;
|
||||
uint32_t baudrate;
|
||||
|
||||
strncpy(value_copy, value, sizeof(value_copy) - 1u);
|
||||
value_copy[sizeof(value_copy) - 1u] = '\0';
|
||||
cursor = value_copy;
|
||||
|
||||
token = config_next_token(&cursor);
|
||||
if (token == NULL || parse_link_uart(token, &uart) != 0) {
|
||||
snprintf(response, max_len, "ERROR: Invalid route field\r\n");
|
||||
return AT_INVALID_PARAM;
|
||||
}
|
||||
token = config_next_token(&cursor);
|
||||
if (token == NULL || parse_u32_value(token, 1200u, 921600u, &baudrate) != 0) {
|
||||
snprintf(response, max_len, "ERROR: Invalid baudrate\r\n");
|
||||
return AT_INVALID_PARAM;
|
||||
}
|
||||
if (config_next_token(&cursor) != NULL) {
|
||||
snprintf(response, max_len, "ERROR: Invalid value\r\n");
|
||||
return AT_INVALID_PARAM;
|
||||
}
|
||||
|
||||
g_config.uart_baudrate[uart] = baudrate;
|
||||
return handle_baud_query(response, max_len) == AT_OK ? AT_NEED_REBOOT : AT_ERROR;
|
||||
}
|
||||
if (equals_ignore_case(p, "NET?")) {
|
||||
return handle_net_query(response, max_len);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user