From 0f976d963a5fc99e570f03bb4780bd5d9910818f Mon Sep 17 00:00:00 2001 From: Matthieu Lalonde Date: Tue, 7 Jun 2011 09:23:47 -0400 Subject: [PATCH] ADDED - Average transfer speed since WAN uptime. --- DDWRT_MonitorAppDelegate.h | 3 + DDWRT_MonitorAppDelegate.m | 74 ++++++-- English.lproj/MainMenu.xib | 357 ++++++++++++++++++++++--------------- 3 files changed, 276 insertions(+), 158 deletions(-) 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 - + NSImage NSMenuCheckmark - + NSImage NSMenuMixedState @@ -89,8 +89,8 @@ router-name 2147483647 - - + + @@ -99,26 +99,26 @@ domain 2147483647 - - + + - + YES uptime 2147483647 - - + + - + YES load-average 2147483647 - - + + @@ -126,27 +126,27 @@ memory 2147483647 - - + + - + YES memory-indicator 2147483647 - - + + - + YES YES syslog-viewer 2147483647 - - + + @@ -157,8 +157,8 @@ WAN Status 2147483647 - - + + submenuAction: WAN Status @@ -170,8 +170,8 @@ Disconnected 2147483647 - - + + @@ -180,8 +180,8 @@ wan-uptime 2147483647 - - + + @@ -191,8 +191,8 @@ 2147483647 - - + + @@ -201,8 +201,18 @@ incoming-bandwidth 2147483647 - - + + + + + + YES + YES + incoming-avrg-speed + + 2147483647 + + @@ -211,8 +221,18 @@ outgoing-bandwidth 2147483647 - - + + + + + + YES + YES + outgoing-avrg-speed + + 2147483647 + + @@ -221,16 +241,16 @@ 2147483647 - - + + WAN IP 2147483647 - - + + submenuAction: WAN IP @@ -241,8 +261,8 @@ Copy 2147483647 - - + + @@ -253,8 +273,8 @@ DNS 2147483647 - - + + submenuAction: DNS @@ -266,8 +286,8 @@ dns0 2147483647 - - + + submenuAction: dns0 @@ -278,8 +298,8 @@ Copy 2147483647 - - + + @@ -290,8 +310,8 @@ dns1 2147483647 - - + + submenuAction: dns1 @@ -302,8 +322,8 @@ Copy 2147483647 - - + + @@ -314,8 +334,8 @@ dns2 2147483647 - - + + submenuAction: dns2 @@ -326,8 +346,8 @@ Copy 2147483647 - - + + @@ -341,8 +361,8 @@ View Bandwidth Graph 2147483647 - - + + @@ -353,8 +373,8 @@ Clients 2147483647 - - + + submenuAction: Clients @@ -366,8 +386,8 @@ clients-count 2147483647 - - + + @@ -375,8 +395,8 @@ connections 2147483647 - - + + @@ -385,8 +405,8 @@ 2147483647 - - + + @@ -394,8 +414,8 @@ host-list-item 2147483647 - - + + submenuAction: host-list-item @@ -406,8 +426,8 @@ Hostname 2147483647 - - + + submenuAction: Hostname @@ -418,8 +438,8 @@ Copy 2147483647 - - + + @@ -429,8 +449,8 @@ IP 2147483647 - - + + submenuAction: IP @@ -441,8 +461,8 @@ Copy 2147483647 - - + + @@ -452,8 +472,8 @@ MAC 2147483647 - - + + submenuAction: MAC @@ -464,8 +484,8 @@ Copy 2147483647 - - + + @@ -475,24 +495,24 @@ Connections 2147483647 - - + + Interface 2147483647 - - + + Lease 2147483647 - - + + @@ -507,8 +527,8 @@ 2147483647 - - + + @@ -517,8 +537,8 @@ About 2147483647 - - + + @@ -526,8 +546,8 @@ , 1048576 2147483647 - - + + @@ -535,8 +555,8 @@ q 1048576 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