- if (power == 0.0)
- power = 1.0; /* power <= 0 */
-
- if (noise == 0.0)
- noise = 1.0; /* noise <= 0 */
-
- wireless_submit (device, quality, power, noise);
+ quality = strtod (fields[2], &endptr);
+ if (fields[2] == endptr)
+ quality = -1.0; /* invalid */
+
+ /* power [dBm] < 0.0 */
+ power = strtod (fields[3], &endptr);
+ if (fields[3] == endptr)
+ power = 1.0; /* invalid */
+ else if ((power >= 0.0) && (power <= 100.0))
+ power = wireless_percent_to_power (power);
+ else if ((power > 100.0) && (power <= 256.0))
+ power = power - 256.0;
+ else if (power > 0.0)
+ power = 1.0; /* invalid */
+
+ /* noise [dBm] < 0.0 */
+ noise = strtod (fields[4], &endptr);
+ if (fields[4] == endptr)
+ noise = 1.0; /* invalid */
+ else if ((noise >= 0.0) && (noise <= 100.0))
+ noise = wireless_percent_to_power (noise);
+ else if ((noise > 100.0) && (noise <= 256.0))
+ noise = noise - 256.0;
+ else if (noise > 0.0)
+ noise = 1.0; /* invalid */
+
+ wireless_submit (device, "signal_quality", quality);
+ wireless_submit (device, "signal_power", power);
+ wireless_submit (device, "signal_noise", noise);
+
+ devices_found++;