diff --git a/DDWRT_MonitorAppDelegate.h b/DDWRT_MonitorAppDelegate.h
index 4a4e9a6..bdd412c 100644
--- a/DDWRT_MonitorAppDelegate.h
+++ b/DDWRT_MonitorAppDelegate.h
@@ -48,6 +48,8 @@
IBOutlet NSMenuItem *menuWanUptime;
IBOutlet NSMenuItem *menuWanTrafficIn;
IBOutlet NSMenuItem *menuWanTrafficOut;
+ IBOutlet NSMenuItem *menuWanAvrgSpeedIn;
+ IBOutlet NSMenuItem *menuWanAvrgSpeedOut;
IBOutlet NSMenuItem *menuWanSeparator;
IBOutlet NSMenuItem *menuWanDNS;
IBOutlet NSMenuItem *menuWanDNSItem0;
@@ -137,5 +139,6 @@
- (NSString *) stringFromSize:(uint64_t)theBytes;
- (NSString *) stringFromSize:(uint64_t)theBytes withUnits:(BOOL)withUnits;
- (NSString *) stringFromSpeed:(uint64_t)theBytes;
+- (uint64_t) secondsFromUptimeString:(NSString *)uptime;
@end
diff --git a/DDWRT_MonitorAppDelegate.m b/DDWRT_MonitorAppDelegate.m
index 6bb9cdf..df4a364 100644
--- a/DDWRT_MonitorAppDelegate.m
+++ b/DDWRT_MonitorAppDelegate.m
@@ -525,29 +525,44 @@
NSString *wanUptime = [wrt_request_client getKey:_statusStringData key:@"wan_uptime"];
if ([wanStatus isEqualToString:@"Connected"] == true) {
- [menuWanUptime setTitle:[NSString stringWithFormat:@"Up %@", wanUptime]];
[menuWanUptime setHidden:false];
[menuWanSeparator setHidden:false];
[menuWanBandwidthGraph setEnabled:true];
[menuWanTrafficIn setHidden:false];
[menuWanTrafficOut setHidden:false];
+ [menuWanAvrgSpeedIn setHidden:false];
+ [menuWanAvrgSpeedOut setHidden:false];
+
+ [menuWanUptime setTitle:[NSString stringWithFormat:@"Up %@", wanUptime]];
+
+ NSString *trafficIn = [wrt_request_client getKey:_statusStringData key:@"ttraff_in"];
+ NSString *trafficOut = [wrt_request_client getKey:_statusStringData key:@"ttraff_out"];
+
+ uint64_t bytesIn = ([trafficIn longLongValue] * 1024 * 1024);
+ uint64_t bytesOut = ([trafficOut longLongValue] * 1024 * 1024);
+
+ [menuWanTrafficIn setTitle:[NSString stringWithFormat:@"In: %@", [self stringFromSize:bytesIn]]];
+ [menuWanTrafficOut setTitle:[NSString stringWithFormat:@"Out: %@", [self stringFromSize:bytesOut]]];
+
+ uint64_t secondsUp = [self secondsFromUptimeString:wanUptime];
+ double speedIn = bytesIn / secondsUp;
+ double speedOut = bytesOut / secondsUp;
+
+ speedIn = round(2.2f * speedIn) / 2.2f;
+ speedOut = round(2.2f * speedOut) / 2.2f;
+
+ [menuWanAvrgSpeedIn setTitle:[NSString stringWithFormat:@"Avrg In: %@/s", [self stringFromSpeed:speedIn]]];
+ [menuWanAvrgSpeedOut setTitle:[NSString stringWithFormat:@"Avrg Out: %@/s", [self stringFromSpeed:speedOut]]];
} else {
[menuWanUptime setHidden:true];
[menuWanSeparator setHidden:true];
[menuWanBandwidthGraph setEnabled:false];
[menuWanTrafficIn setHidden:true];
[menuWanTrafficOut setHidden:true];
+ [menuWanAvrgSpeedIn setHidden:true];
+ [menuWanAvrgSpeedOut setHidden:true];
- }
-
- NSString *trafficIn = [wrt_request_client getKey:_statusStringData key:@"ttraff_in"];
- NSString *trafficOut = [wrt_request_client getKey:_statusStringData key:@"ttraff_out"];
- trafficIn = [self stringFromSize:([trafficIn longLongValue] * 1024 * 1024)];
- trafficOut = [self stringFromSize:([trafficOut longLongValue] * 1024 * 1024)];
-
- [menuWanTrafficIn setTitle:[NSString stringWithFormat:@"In: %@", trafficIn]];
- [menuWanTrafficOut setTitle:[NSString stringWithFormat:@"Out: %@", trafficOut]];
-
+ }
NSString *wanDNS0 = [wrt_request_client getKey:_statusStringData key:@"wan_dns0"];
NSString *wanDNS1 = [wrt_request_client getKey:_statusStringData key:@"wan_dns1"];
NSString *wanDNS2 = [wrt_request_client getKey:_statusStringData key:@"wan_dns2"];
@@ -727,4 +742,41 @@
return([NSString stringWithFormat:@"%1.2f%@", floatSize, suffix]);
}
+- (uint64_t) secondsFromUptimeString:(NSString *)uptime
+{
+ NSString *strUptime = [NSString stringWithString:uptime];
+ uint64_t seconds = 0;
+ NSString *keyDay = @" day, ";
+ NSRange rangeDay = [strUptime rangeOfString:keyDay];
+ NSString *keyDays = @" days, ";
+ NSRange rangeDays = [strUptime rangeOfString:keyDays];
+
+ if (rangeDay.location != NSNotFound) {
+ NSLog(@"1 day");
+ seconds += 86400; // One day extra
+
+ strUptime = [strUptime substringFromIndex:(rangeDay.location + [keyDay length])];
+ } else if (rangeDays.location != NSNotFound) {
+ uint32_t days = strtoull([[strUptime substringToIndex:rangeDays.location] UTF8String], NULL, 0);
+ NSLog(@"%u days", days);
+
+ seconds += (days * 86400);
+
+ strUptime = [strUptime substringFromIndex:(rangeDays.location + [keyDays length])];
+ }
+
+ NSArray *parts = [strUptime componentsSeparatedByString:@":"];
+ uint8_t ii;
+ for (ii = 0; ii < [parts count]; ii++) {
+ double multiplicator = pow(60, (2 - ii));
+ if (multiplicator == 0)
+ multiplicator = 1;
+ NSLog(@"Multiplicator %f", multiplicator);
+
+ seconds += (multiplicator * strtoull([[parts objectAtIndex:ii] UTF8String], NULL, 0));
+ }
+
+ return seconds;
+}
+
@end
diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib
index 28c4d0f..e46834f 100644
--- a/English.lproj/MainMenu.xib
+++ b/English.lproj/MainMenu.xib
@@ -69,11 +69,11 @@
System Status
2147483647
-
@@ -314,8 +334,8 @@
dns2
2147483647
-
-
+
+
submenuAction:
@@ -341,8 +361,8 @@
View Bandwidth Graph
2147483647
-
-
+
+
@@ -353,8 +373,8 @@
Clients
2147483647
-
-
+
+
submenuAction:
@@ -429,8 +449,8 @@
IP
2147483647
-
-
+
+
submenuAction:
@@ -452,8 +472,8 @@
MAC
2147483647
-
-
+
+
submenuAction:
@@ -475,24 +495,24 @@
Connections
2147483647
-
-
+
+
@@ -507,8 +527,8 @@
2147483647
-
-
+
+
@@ -1106,7 +1126,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
YES
-
+
8219
2
{{313, 762}, {768, 368}}
@@ -1114,19 +1134,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA
Syslog Viewer
NSPanel
-
+
256
YES
-
-
+
+
274
{{0, 237}, {768, 131}}
-
+
YES
-
+
-2073952767
272764928
PDg1Pkp1biAgNiAxNzo0NzoyOCBkcm9wYmVhclsyMDExNl06IHB1YmtleSBhdXRoIHN1Y2NlZWRlZCBm
@@ -1138,7 +1158,7 @@ ZCBFTk9CVUZTIGZyb20gc2VuZHRvKCksIHRlbXBvcmFyeSBzaG9ydGFnZSBvZiBidWZmZXIgbWVtb3J5
CjwzMD5KdW4gIDYgMTc6NTM6MDIgaG9zdGFwZDogYXRoMTogU1RBIDAwOjFiOjYzOjE1OjI4OjZlIFdQ
QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
-
+
YES
@@ -1147,43 +1167,41 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
{{7, 11}, {768, 368}}
-
+
{{0, 0}, {2048, 1130}}
{1e+13, 1e+13}
-
+
268
YES
-
-
+
+
268
{{19, 1}, {170, 11}}
-
-
+
2
YES
-
+
68288064
138675200
000%
-
+
-
-
+
+
1282
{{19, 0}, {172, 12}}
-
-
-
+
+
YES
2
16648
@@ -1192,8 +1210,7 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
{192, 13}
-
-
+
YES
2
NSView
@@ -1622,7 +1639,7 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemUptime
-
+
844
@@ -1630,7 +1647,7 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemLoad
-
+
845
@@ -1685,8 +1702,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
view
-
-
+
+
866
@@ -1702,7 +1719,7 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemMemoryIndicator
-
+
868
@@ -1710,10 +1727,26 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemMemoryPercentage
-
+
881
+
+
+ menuWanAvrgSpeedIn
+
+
+
+ 884
+
+
+
+ menuWanAvrgSpeedOut
+
+
+
+ 885
+
@@ -1834,6 +1867,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
+
+
@@ -1859,11 +1894,11 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
YES
-
-
+
+
-
-
+
+
@@ -2435,87 +2470,97 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
842
-
+
843
-
+
857
-
+
YES
-
-
+
+
MemoryProgressIndicator
860
-
-
+
+
863
-
+
869
-
+
870
-
+
YES
-
+
SyslogViewer
871
-
+
YES
-
+
-
+
876
-
+
YES
-
+
-
+
877
-
-
+
+
878
-
+
YES
-
+
-
+
MemoryIndicatorPercentage
879
-
-
+
+
+
+
+ 882
+
+
+
+
+ 883
+
+
@@ -2663,6 +2708,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
877.IBPluginDependency
878.IBPluginDependency
879.IBPluginDependency
+ 882.IBPluginDependency
+ 883.IBPluginDependency
YES
@@ -2848,6 +2895,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
+ com.apple.InterfaceBuilder.CocoaPlugin
@@ -2862,7 +2911,7 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
- 881
+ 885
@@ -2978,6 +3027,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemName
menuSystemUptime
menuWan
+ menuWanAvrgSpeedIn
+ menuWanAvrgSpeedOut
menuWanBandwidthGraph
menuWanDNS
menuWanDNSItem0
@@ -3033,6 +3084,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
NSMenuItem
NSMenuItem
NSMenuItem
+ NSMenuItem
+ NSMenuItem
@@ -3069,6 +3122,8 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuSystemName
menuSystemUptime
menuWan
+ menuWanAvrgSpeedIn
+ menuWanAvrgSpeedOut
menuWanBandwidthGraph
menuWanDNS
menuWanDNSItem0
@@ -3203,6 +3258,14 @@ QTogZ3JvdXAga2V5IGhhbmRzaGFrZSBjb21wbGV0ZWQgKFJTTikKA
menuWan
NSMenuItem
+
+ menuWanAvrgSpeedIn
+ NSMenuItem
+
+
+ menuWanAvrgSpeedOut
+ NSMenuItem
+
menuWanBandwidthGraph
NSMenuItem