Merge pull request #344 from Mculover666/master
net:add get rssi api for esp8266_tc
This commit is contained in:
@@ -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,
|
||||
};
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -139,6 +139,8 @@ typedef struct tencent_firmware_module_st {
|
||||
int (*ota_read_fwinfo)(ota_fw_info_t *ota_fw_info);
|
||||
|
||||
int (*ota_read_fwdata)(uint8_t *ota_fw_data_buffer,uint16_t buf_size);
|
||||
|
||||
int (*get_rssi)(int *rssi);
|
||||
|
||||
int (*start_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
|
||||
|
||||
|
Reference in New Issue
Block a user