projects
/
pyiw
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added signal level & noise and transmit power
[pyiw]
/
pyiw.c
diff --git
a/pyiw.c
b/pyiw.c
index
8a78c0f
..
59f22eb
100644
(file)
--- a/
pyiw.c
+++ b/
pyiw.c
@@
-44,12
+44,15
@@
typedef enum {
PYIW_KE_PROTOCOL,
PYIW_KE_QUALITY,
PYIW_KE_BITRATE,
PYIW_KE_PROTOCOL,
PYIW_KE_QUALITY,
PYIW_KE_BITRATE,
- PYIW_KE_AP_MAC
+ PYIW_KE_AP_MAC,
+ PYIW_KE_LEVEL,
+ PYIW_KE_NOISE,
+ PYIW_KE_TXPOWER
} WirelessInterfaceKeyEnum;
typedef struct {
} WirelessInterfaceKeyEnum;
typedef struct {
- WirelessInterfaceKeyEnum keys[2];
- PyObject* objs[2];
+ WirelessInterfaceKeyEnum keys[3];
+ PyObject* objs[3];
int num;
} WirelessInterfaceScanData;
int num;
} WirelessInterfaceScanData;
@@
-63,7
+66,10
@@
static char* WirelessInterfaceKeys[] = {
"protocol",
"quality",
"bitrate",
"protocol",
"quality",
"bitrate",
- "ap_mac"
+ "ap_mac",
+ "level",
+ "noise",
+ "txpower"
};
int WirelessInterfaceNumKeys(void) {
};
int WirelessInterfaceNumKeys(void) {
@@
-119,6
+125,9
@@
static char* PYIW_DOC_STRING =
"- frequency [double]: The GHz freq level.\n"
"- protocol [string]: The name representing A, B, or G WiFi.\n"
"- quality [int ]: Signal quality, 1-100%.\n"
"- frequency [double]: The GHz freq level.\n"
"- protocol [string]: The name representing A, B, or G WiFi.\n"
"- quality [int ]: Signal quality, 1-100%.\n"
+ "- level [int ]: Signal level (dBm).\n"
+ "- noise [int ]: Noise level (dBm).\n"
+ "- txpower [int ]: Transmit power (dBm).\n"
"- bitrate [int ]: Number of BPS; 1:1 ratio.\n"
"- ap_mac [string]: The address of the current AP.\n\n"
"--- EXAMPLE USAGE --------------------------------------\n\n"
"- bitrate [int ]: Number of BPS; 1:1 ratio.\n"
"- ap_mac [string]: The address of the current AP.\n\n"
"--- EXAMPLE USAGE --------------------------------------\n\n"
@@
-344,11
+353,26
@@
static PyObject* WirelessInterface_mapget(PyObject* self, PyObject* arg) {
"i", wi->info.bitrate.value
);
"i", wi->info.bitrate.value
);
+ /* TXPOWER */
+ else if(!strncmp(key, "txpower", 7)) return Py_BuildValue(
+ "i", wi->info.txpower.value
+ );
+
/* QUALITY */
else if(!strncmp(key, "quality", 7)) return Py_BuildValue(
"i", wi->info.stats.qual.qual
);
/* QUALITY */
else if(!strncmp(key, "quality", 7)) return Py_BuildValue(
"i", wi->info.stats.qual.qual
);
+ /* LEVEL */
+ else if(!strncmp(key, "level", 5)) return Py_BuildValue(
+ "i", wi->info.stats.qual.level - 0x100
+ );
+
+ /* NOISE */
+ else if(!strncmp(key, "noise", 5)) return Py_BuildValue(
+ "i", wi->info.stats.qual.noise - 0x100
+ );
+
/* AP_MAC */
else if(!strncmp(key, "ap_mac", 6)) {
/* iw_pr_ether(buf, wi->info.ap_addr.sa_data); */
/* AP_MAC */
else if(!strncmp(key, "ap_mac", 6)) {
/* iw_pr_ether(buf, wi->info.ap_addr.sa_data); */
@@
-726,10
+750,22
@@
static int WirelessInterface_ScanItem(iwevent* event, iwrange* range, wifacesd*
return 0;
}
return 0;
}
+ case SIOCGIWTXPOW: {
+ data->keys[0] = PYIW_KE_TXPOWER;
+ data->objs[0] = Py_BuildValue("i", event->u.txpower.value);
+ data->num = 1;
+
+ return 0;
+ }
+
case IWEVQUAL: {
data->keys[0] = PYIW_KE_QUALITY;
case IWEVQUAL: {
data->keys[0] = PYIW_KE_QUALITY;
+ data->keys[1] = PYIW_KE_LEVEL;
+ data->keys[2] = PYIW_KE_NOISE;
data->objs[0] = Py_BuildValue("i", event->u.qual.qual);
data->objs[0] = Py_BuildValue("i", event->u.qual.qual);
- data->num = 1;
+ data->objs[1] = Py_BuildValue("i", event->u.qual.level - 0x100);
+ data->objs[2] = Py_BuildValue("i", event->u.qual.noise - 0x100);
+ data->num = 3;
return 0;
}
return 0;
}