Index: Evidence/Edd/Edd.cc
===================================================================
--- Evidence/Edd/Edd.cc	(revision 212)
+++ Evidence/Edd/Edd.cc	(revision 216)
@@ -30,7 +30,12 @@
   DimBrowser Browser;
 
+  // If status service displayed as text history
+  if (strstr(Service, "/Message") != NULL) return new EddText(Service);
+
+  // If service currently not available, default open as plot
   Browser.getServices(Service);
   if (Browser.getNextService(Name, Format) != DimSERVICE) return new EddPlot(Service, Index);
   
+  // Otherwise, determine from format if plot or text history
   if (strlen(Format) == 1 && *Format != 'C') return new EddPlot(Service, Index);
   else return new EddText(Service);
@@ -205,4 +210,5 @@
 
   DimClient::sendCommand(Name.toAscii().data(), text().toAscii().data());
+  clear();
 }
 
@@ -276,7 +282,4 @@
   for (ItemNo=0; ItemNo<List.size(); ItemNo++) if (List[ItemNo].Name == Name) {
 
-	// Service available?
-	if (!SetStatus(this, Name, Time, Format)) return;
-  
 	// If size limit reached, clear buffer
     if (List[ItemNo].Signal->dataSize() > SizeLimit) List[ItemNo].Signal->setData(QPolygonF());
@@ -284,21 +287,21 @@
 	// If buffer empty, request new history buffer
     if (List[ItemNo].Signal->dataSize() == 0) {
-	  int Time, Size, Count=0;
-	  void *Data;
+	  int Count=0;
+	  const struct EvidenceHistory::Item *R;
 	  class EvidenceHistory *Hist;
 
 	  if ((Hist = Handler->GetHistory(List[ItemNo].Name)) != NULL) {
 		double Number=0;
-		while (Hist->Next(Time, Size, Data)) {
+		while ((R=Hist->Next()) != NULL) {
 		  switch (Format[0].toUpper().toAscii()) {
     		case 'I':
-			case 'L':  Number = *((int *) Data + List[ItemNo].Index);   break;
-    		case 'S':  Number = *((short *) Data + List[ItemNo].Index);   break;
-    		case 'F':  Number = *((float *) Data + List[ItemNo].Index);   break;
-    		case 'D':  Number = *((double *) Data + List[ItemNo].Index);   break;
-    		case 'X':  Number = *((long long *) Data + List[ItemNo].Index);   break;
+			case 'L':  Number = *((int *) R->Data + List[ItemNo].Index);   break;
+    		case 'S':  Number = *((short *) R->Data + List[ItemNo].Index);   break;
+    		case 'F':  Number = *((float *) R->Data + List[ItemNo].Index);   break;
+    		case 'D':  Number = *((double *) R->Data + List[ItemNo].Index);   break;
+    		case 'X':  Number = *((long long *) R->Data + List[ItemNo].Index);   break;
     		default: break;
 		  }
-		  AddPoint(ItemNo, Time, Number);
+		  AddPoint(ItemNo, R->Time, Number);
 		  Count++;
 		}
@@ -309,8 +312,10 @@
 	}
 
-    // Append data
-	QString Txt = Text;
-	Txt = Txt.section(' ', List[ItemNo].Index, List[ItemNo].Index);
-    AddPoint(ItemNo, Time, atof(Txt.toAscii().data()));	
+ 	// Appen data only if service available
+	if (SetStatus(this, Name, Time, Format)) {
+	  QString Txt = Text;
+	  Txt = Txt.section(' ', List[ItemNo].Index, List[ItemNo].Index);
+      AddPoint(ItemNo, Time, atof(Txt.toAscii().data()));
+	}
   }
 
@@ -721,13 +726,12 @@
   if (!Pure) {
 	// Get history for this service 
-	int Time, Size;
-	void *Data;
+	const struct EvidenceHistory::Item *R;
 	class EvidenceHistory *Hist;
 
 	if ((Hist = Handler->GetHistory(Name)) != NULL) {
-	  while (Hist->Next(Time, Size, Data)) {
+	  while ((R=Hist->Next()) != NULL) {
 		moveCursor (QTextCursor::Start);
-		insertPlainText(QString("(")+QDateTime::fromTime_t(Time).toString()+") ");	  
-		insertPlainText(QString((char *) Data) + "\n");	  
+		insertPlainText(QString("(")+QDateTime::fromTime_t(R->Time).toString()+") ");	  
+		insertPlainText(QString((char *) R->Data) + "\n");	  
 	  }
 	}
@@ -780,7 +784,5 @@
 
   Mutex = new QMutex(QMutex::Recursive);
-
-  MinuteVolume = 0;
-  TotalVolume = 0;
+  Volume = 0;
 
   // Timer to calculate data rates
@@ -815,4 +817,5 @@
 	  YEP(Name, ServiceList[i].TimeStamp, ServiceList[i].ByteArray, ServiceList[i].Format, ServiceList[i].Text);
 	}
+	else YEP(Name, -1);
 	return;
   }
@@ -878,10 +881,8 @@
   QMutexLocker Locker(Mutex);
 
-  float Rate = MinuteVolume/1024.0 * 6;
-  float Total = TotalVolume/1024.0/1024.0;
-
-  YEP("Edd/Rate_kBMin", time(NULL), QByteArray::number(Rate), "F", QString::number(Rate));
-  YEP("Edd/Total_MB", time(NULL), QByteArray::number(Total), "F", QString::number(Total));
-  MinuteVolume = 0;
+  float Rate = Volume/1024.0/10;
+
+  YEP("Edd/Rate_kBSec", time(NULL), QByteArray::number(Rate), "F", QString::number(Rate));
+  Volume = 0;
 }
 
@@ -900,8 +901,5 @@
 
   // Update statistics only for Dim services
-  if (!Name.startsWith("Edd/")) {  
-	TotalVolume += Data.size();
-	MinuteVolume += Data.size();
-  }
+  if (!Name.startsWith("Edd/")) Volume += Data.size();
 }
 
@@ -1149,5 +1147,5 @@
 
   // Status display
-  EddLineDisplay *Line = new EddLineDisplay("ARDUINO/Status");
+  EddLineDisplay *Line = new EddLineDisplay("ARDUINO/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 0, 0, 1, 2);      
@@ -1188,5 +1186,5 @@
 
   Layout->addWidget(Plot, 0, 4, 12, 3);
-  Line = new EddLineDisplay("Bias/Status");
+  Line = new EddLineDisplay("Bias/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 0, 0, 1, 3);      
@@ -1195,5 +1193,5 @@
   Layout->addWidget(Command, 10, 0, 1, 4);    
 
-  EddText *Text = new EddText("Bias/StdOut", true);
+  EddText *Text = new EddText("Bias/Textout", true);
   Text->setFixedWidth(400);
   Layout->addWidget(Text, 11, 0, 4, 4);      
@@ -1224,5 +1222,5 @@
   //FeedbackLayout->addWidget(Graph, 10, 0, 10, 3);
 
-  Line = new EddLineDisplay("drsdaq/Status");
+  Line = new EddLineDisplay("drsdaq/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 0, 0, 1, 2);      
@@ -1409,5 +1407,5 @@
   EddText *Text;
   
-  Line = new EddLineDisplay("Alarm/Status");
+  Line = new EddLineDisplay("Alarm/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 0, 0, 1, 2);      
@@ -1422,12 +1420,12 @@
   Layout->addWidget(Text, 1, 0, 1, 2);
 
-  Line = new EddLineDisplay("DColl/Status");
+  Line = new EddLineDisplay("DColl/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 3, 0, 1, 2);      
 
-  Line = new EddLineDisplay("DColl/DataSizekB");
+  Line = new EddLineDisplay("DColl/DataSizeMB");
   Layout->addWidget(Line, 4, 0, 1, 1);
 
-  Line = new EddLineDisplay("DColl/LogSizekB");
+  Line = new EddLineDisplay("DColl/LogSizeMB");
   Layout->addWidget(Line, 4, 1, 1, 1);
 
@@ -1436,5 +1434,5 @@
   Layout->addWidget(Line, 5, 0, 1, 3);
 
-  Line = new EddLineDisplay("Config/Status");
+  Line = new EddLineDisplay("Config/Message");
   Line->setMaximumWidth(200);
   Layout->addWidget(Line, 6, 0, 1, 2);      
@@ -1450,8 +1448,6 @@
   Layout->addWidget(Button, 7, 1, 1, 1);
 
-  Line = new EddLineDisplay("Edd/Rate_kBMin");
+  Line = new EddLineDisplay("Edd/Rate_kBSec");
   Layout->addWidget(Line, 8, 0, 1, 1);
-  Line = new EddLineDisplay("Edd/Total_MB");
-  Layout->addWidget(Line, 8, 1, 1, 1);
 }
  
Index: Evidence/Edd/Edd.h
===================================================================
--- Evidence/Edd/Edd.h	(revision 212)
+++ Evidence/Edd/Edd.h	(revision 216)
@@ -232,6 +232,5 @@
     QList<HistItem> HistoryList;
 
-	long long TotalVolume;
-	long long MinuteVolume;
+	long long Volume;
 
 	void infoHandler();
