Merge pull request #344 from Mculover666/master

net:add get rssi api for esp8266_tc
This commit is contained in:
Supowang
2022-07-07 09:56:47 +08:00
committed by GitHub
3 changed files with 64 additions and 0 deletions

View File

@@ -330,6 +330,50 @@ int esp8266_tencent_firmware_ota_read_fwinfo(ota_fw_info_t *ota_fw_info)
return 0;
}
static int esp8266_tencent_firmware_get_rssi(int *rssi)
{
at_echo_t echo;
int ret;
int channel, res_rssi;
char *str;
char echo_buffer[100] = {0};
char ssid_buf[32+2+1] = {0};
char bssid_buf[17+2+1] = {0};
tos_at_echo_create(&echo, echo_buffer, sizeof(echo_buffer), NULL);
tos_at_cmd_exec(AT_AGENT, &echo, 2000, "AT+CWJAP?\r\n");
if (echo.status != AT_ECHO_STATUS_OK) {
printf("esp8266_get_rssi fail %d %s\r\n", echo.status, echo_buffer);
return -1;
}
str = strstr((const char *)echo.buffer, "No AP");
if (str) {
//netlink is disconnect.
return -1;
}
str = strstr((const char *)echo.buffer, "+CWJAP");
if (!str) {
//netlink is fail.
printf("No \"+CWJAP:\"\r\n");
return -1;
}
ret = sscanf(str+strlen("+CWJAP:"), "%[^,],%[^,], %d, %d", ssid_buf, bssid_buf, &channel, &res_rssi);
if (ret != 4) {
printf("get wifi rssi fail!\r\n");
return -1;
}
printf("rec->ssid:%s, bssid:%s, channel:%d, rssi:%d\r\n", ssid_buf, bssid_buf, channel, res_rssi);
*rssi = res_rssi;
return 0;
}
k_chr_fifo_t ota_fw_data_chr_fifo;
k_sem_t ota_fw_data_sem;
@@ -566,6 +610,7 @@ tencent_firmware_module_t tencent_firmware_module_esp8266 = {
.ota_set = esp8266_tencent_firmware_ota_set,
.ota_read_fwinfo = esp8266_tencent_firmware_ota_read_fwinfo,
.ota_read_fwdata = esp8266_tencent_firmware_ota_read_fwdata,
.get_rssi = esp8266_tencent_firmware_get_rssi,
.start_smartconfig = esp8266_tencent_firmware_start_smartconfig,
.stop_smartconfig = esp8266_tencent_firmware_stop_smartconfig,
};

View File

@@ -215,3 +215,11 @@ int tos_tf_module_smartconfig_stop(void)
}
return -1;
}
int tos_tf_module_get_rssi(int *rssi)
{
if (g_tencent_firmware_module && g_tencent_firmware_module->get_rssi) {
return g_tencent_firmware_module->get_rssi(rssi);
}
return -1;
}

View File

@@ -140,6 +140,8 @@ typedef struct tencent_firmware_module_st {
int (*ota_read_fwdata)(uint8_t *ota_fw_data_buffer,uint16_t buf_size);
int (*get_rssi)(int *rssi);
int (*start_smartconfig)(void);
int (*stop_smartconfig)(void);
@@ -323,5 +325,14 @@ int tos_tf_module_smartconfig_start(void);
*/
int tos_tf_module_smartconfig_stop(void);
/**
* @brief Get the wifi rssi
*
* @param[in] rssi the pointer to rssi value
*
* @return errcode
*/
int tos_tf_module_get_rssi(int *rssi);
#endif