blob: 7ffc6623c8f65788742606d20a9aaba4a8a1a4c2 [file] [log] [blame]
From 404109f913afc751127ccba752b7dbba98e5ba8b Mon Sep 17 00:00:00 2001
From: "Allen.Ye" <allen.ye@mediatek.com>
Date: Tue, 30 Aug 2022 18:34:17 +0800
Subject: [PATCH 1/2] HAL: refactor wifi_getRadioPossibleChannels
---
source/wifi/wifi_hal.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/source/wifi/wifi_hal.c b/source/wifi/wifi_hal.c
index d2f0c3b..d44eab0 100644
--- a/source/wifi/wifi_hal.c
+++ b/source/wifi/wifi_hal.c
@@ -1925,10 +1925,24 @@ INT wifi_setRadioMode(INT radioIndex, CHAR *channelMode, UINT pureMode)
//The output_string is a max length 64 octet string that is allocated by the RDKB code. Implementations must ensure that strings are not longer than this.
INT wifi_getRadioPossibleChannels(INT radioIndex, CHAR *output_string) //RDKB
{
+ WIFI_ENTRY_EXIT_DEBUG("Inside %s:%d\n",__func__, __LINE__);
if (NULL == output_string)
return RETURN_ERR;
- //TODO:read this from iw phy phyX info |grep MHz
- snprintf(output_string, 64, (radioIndex == 0)?"1,2,3,4,5,6,7,8,9,10,11":"36,40,44,48,52,56,60,64,100,104,108,112,116,120,124,128,132,136,140");
+ char cmd[256] = {0};
+ char buf[128] = {0};
+ BOOL dfs_enable = false;
+ // Parse possible channel number and separate them with commas.
+ wifi_getRadioDfsEnable(radioIndex, &dfs_enable);
+ if (dfs_enable)
+ snprintf(cmd, sizeof(cmd), "iw phy phy%d info | grep -e '\\*.*MHz .*dBm' | cut -d '[' -f2 | cut -d ']' -f1 | tr '\\n' ',' | sed 's/.$//'", radioIndex);
+ else
+ snprintf(cmd, sizeof(cmd), "iw phy phy%d info | grep -e '\\*.*MHz .*dBm' | grep -v 'radar' | cut -d '[' -f2 | cut -d ']' -f1 | tr '\\n' ',' | sed 's/.$//'", radioIndex);
+
+ _syscmd(cmd,buf,sizeof(buf));
+ strncpy(output_string, buf, sizeof(buf));
+
+ WIFI_ENTRY_EXIT_DEBUG("Exiting %s:%d\n",__func__, __LINE__);
+ return RETURN_OK;
#if 0
char IFName[50] ={0};
char buf[MAX_BUF_SIZE] = {0};
--
2.18.0