Index: /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c
===================================================================
--- /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c (revision 69)
+++ /webserver/example/EnergyMeters/Source/EnergyMeters/SolarCountUART.c (revision 70)
@@ -103,4 +103,7 @@
 
 
+int dayRxYield[NUMBER_OF_SOLAR_CHANNELS]; /* daily yield data */
+
+
 const unsigned char query_sc_time[] = "\x02\xB0\xF0\x03\x00\x04\xAB\xB9\x03"; // Zeit abfragen
 const unsigned char query_sc_time_rsp[] = "\x02\xF0\xB0\x08\x00\x84\x00\x00\x00\x00\x00\x00\x00\x03"; // Zeit abfragen
@@ -120,6 +123,26 @@
 //specification: unsigned char req_month_yield[] = "\x02\x31\x3c\x4d\x30\x31\x30\x30\x03"; // Frame for querying the yield. Will be filled in by solQueryYield()
 
-//                                   02  31  3c  4d  30  30  30  30  30  31  fd  03
-unsigned char req_month_yield[] = "\x02\x31\x3c\x4d\x30\x30\x30\x30\x30\x31\xfd\x03"; // Frame for querying the yield. Will be filled in by solQueryYield()
+//                                  
+unsigned char req_month_yield[] = "\x02\x31\x3C\x6d\x30\x32\x30\x30\x30\x32\xff\x03"; // Frame for querying the monthly yield. Will be filled in by solQueryYield()
+
+
+unsigned char req_minute_yield[] = "\x02\x31\x3C\x6D\x30\x32\x30\x30\x30\x32\x00\x03"; // Frame for querying the minutely yield. Will be filled in by solQueryYield()
+const unsigned char yield_minute_rsp[] = "\x02\x31\x6D\x30\x31\x30\x30\x30\x32\x30\x30\x30\x30\x30\x32\x41\x44\xC8\x03\x03";
+const unsigned char yield_minute_r_m[] = "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF";
+
+
+unsigned char req_day_yield[]    = "\x02\x31\x3c\x44\x30\x32\x30\x30\x30\x32\x00\x03"; // Frame for querying the minutely yield. Will be filled in by solQueryYield()
+const unsigned char yield_day_rsp[]    = "\x02\x31\x44\x30\x31\x30\x30\x30\x32\x30\x30\x30\x30\x30\x32\x41\x44\xC8\x03\x03";
+const unsigned char yield_day_r_m[]    = "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF";
+
+
+unsigned char req_hour_yield[]    = "\x02\x31\x3c\x68\x30\x32\x30\x30\x30\x32\x00\x03"; // Frame for querying the minutely yield. Will be filled in by solQueryYield()
+const unsigned char yield_hour_rsp[]    = "\x02\x31\x68\x30\x31\x30\x30\x30\x32\x30\x30\x30\x30\x30\x30\x30\x30\x30\x03\x03";
+const unsigned char yield_hour_r_m[]    = "\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF";
+
+
+
+
+
 
 // tt (time) values: m=minute , h = hour, D = day, M = month (\x31), Y = year
@@ -129,12 +152,10 @@
 // ad: unit address
 // r1 to r7: result binary coded hex
-//                                                    ad  tt  cc  m1  m2  r1  r2  r3  r4  r5  r6  r7  ck 
-//specification: unsigned char yield_month_rsp[] = "\x02\x31\x4d\x30\x00\x00\x09\x0c\x04\x0a\x26\x86\xcd\x00\x03"; /* exp. query yield response. Will be filled in by solQueryYield() */
-//specification: unsigned char yield_month_r_m[] = "\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff"; /* exp. query yield seq response mask. Will be filled in by solQueryYield() */
-
-//                                   02  31  4d  30  30  30  30  30  31  30  30  30  30  31  35  44  43  9a  03  03
-//                                   00  01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16  17  18  19
-unsigned char yield_month_rsp[] = "\x02\x31\x4d\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03"; /* exp. query yield response. Will be filled in by solQueryYield() */
-unsigned char yield_month_r_m[] = "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff"; /* exp. query yield seq response mask. Will be filled in by solQueryYield() */
+
+
+//                                   02  31  4d  30  30  30  30  30  31  30  30  30  30  31  35  44  43
+//                                   00  01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16
+unsigned char yield_month_rsp[] = "\x02\x31\x4d\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03"; /* exp. query yield response. Will be filled in by solQueryYield() */
+unsigned char yield_month_r_m[] = "\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff"; /* exp. query yield seq response mask. Will be filled in by solQueryYield() */
 
 
@@ -229,4 +250,6 @@
 {
   int i;
+  int k;
+
   xLastSolarStateChangeTime = xTaskGetTickCount();
   xLastTimeCheckTime = xTaskGetTickCount();
@@ -243,4 +266,10 @@
 
   /* do not invalidate history here so we do not lose all data */
+
+  /* init daily rx yield array with 0 */
+  for (i = 0; i < NUMBER_OF_SOLAR_CHANNELS; i++)
+  {
+      dayRxYield[i] = 0;
+  } /* for */
 
 
@@ -417,5 +446,8 @@
 void solarFSM(void)
 {
+  unsigned char i;
   int cmpResult;
+  unsigned char power; /* variable for conversions */
+  unsigned char checkDate; /* temp variable for day of month */
 
 
@@ -537,5 +569,5 @@
 
         currentChannel = 0; /* start yield scan on channel 0 */
-        solarState = SOL_QUERY_YIELD; /* change state: time response received, now init and query the channels */
+        solarState = SOL_QUERY_YIELD; //xxxxxxx SOL_NO_INIT; //SOL_QUERY_YIELD; /* change state: time response received, now init and query the channels */
       }
       else
@@ -552,22 +584,62 @@
         /* first, fill in data for tx */
         // TODO
-  
-
-//        req_month_yield[4] = 0x30 + 1; // channel
-//        req_month_yield[8] = 0x30 + 0; // month MSB (binary coded hex) 
-//        req_month_yield[9] = 0x30 + 4; // month LSB (binary coded hex)
-
-        /* then, calculate the CRC for tx */
-       (void)checkRxOneByteCheckSum(&(req_month_yield[0]), 1, 7, 8);
-       /* checksum now in calculatedCrc1Byte */
-
-
-        // crc
-        //req_month_yield[7] = calculatedCrc1Byte; /* fill in checksum */
-
-        resetUart3RxBuf();
-        send_uart3((unsigned char *)req_month_yield, sizeof(req_month_yield));
-
-        solarState = SOL_QUERY_YIELD_WAIT_REPLY; /* change state: now wait for response */
+
+
+        if (currentChannel >= 6)
+        {
+          currentChannel = 0;
+          solarState = SOL_NO_INIT; /* we are done with all the channels. go ahead */
+        }
+        else
+        {
+          /* query the next channel */
+
+          checkDate = scDate[2]-1; /* we query the previous day */
+
+          if (checkDate == 0)
+          {
+            /* first day of month */
+
+            /* check new month */
+            if (scDate[1] == 3)
+            {
+              /* looking for end of february? handle leap years */
+              if ((scDate[0] % 4) == 0)
+              {
+                checkDate = 29; /* leap year */
+              }
+              else
+              {
+                checkDate = 28; /* not a leap year */
+              }
+            }
+            else if 
+                 ((scDate[1] == 1) ||
+                 (scDate[1] == 5) ||
+                 (scDate[1] == 7) ||
+                 (scDate[1] == 8) ||
+                 (scDate[1] == 10) ||
+                 (scDate[1] == 12))
+                 { 
+                    checkDate = 31;
+                 }
+                 else
+                 {
+                    checkDate = 30;
+                 }
+          }
+
+          send_yield_query_day(/* channel: */ currentChannel, /* day: (yesterday) */ checkDate );
+          xLastSolarStateChangeTime = xTaskGetTickCount();
+          solarState = SOL_QUERY_YIELD_WAIT_REPLY; /* query next channel. change state: now wait for response */
+
+        }
+
+        //send_yield_query_minute(/* channel: */ 1, /* minute: */ 40 );
+        
+        // hour is broken... ?!
+        //send_yield_query_hour(/* channel: */ 1, /* hour: */ 11 );
+
+
 
     break; /* end of case SOL_QUERY_YIELD */
@@ -576,6 +648,11 @@
 
 
-
-       cmpResult = checkUart3Received(yield_month_rsp, yield_month_r_m,  sizeof(yield_month_rsp)-1);
+       // cmpResult = checkUart3Received(yield_minute_rsp, yield_minute_r_m,  sizeof(yield_minute_rsp)-1);
+
+        // the query for hour is broken... ?!
+        //cmpResult = checkUart3Received(yield_hour_rsp, yield_hour_r_m,  sizeof(yield_hour_rsp)-1);
+
+       cmpResult = checkUart3Received(yield_day_rsp, yield_day_r_m,  sizeof(yield_day_rsp)-1);
+
 
 
@@ -584,28 +661,23 @@
       {
         /* we have got a match! */
-        
-
-        resultValueRaw = extractBinaryHexDigitString( &(rxUART3[0]), 
-                                    9, /* first byte of binary hex string */
-                                    16 /* last byte of binary hex string */
-                                    );
-
-
-
-        solarState = SOL_NO_INIT; /* go ahead */
- 
+       
+          if (currentChannel <= 5)
+          {
+
+
+              dayRxYield[currentChannel] =
+                extractBinaryHexDigitString( &(rxUART3[0]), 13, 16 );
+
+          } /* if */
+          else
+          {
+            /* all channels done. nothing to do, we leave via SOL_QUERY_YIELD */
+          }
+
+
+          currentChannel++; /* increment channel counter so we query the next channel in the next round */
+          xLastSolarStateChangeTime = xTaskGetTickCount();
+          solarState = SOL_QUERY_YIELD; /* go ahead */
      }
-#if 0
-        currentChannel++; /* next channel */
-
-        if (currentChannel >= 6)
-        {
-          solarState = SOL_NO_INIT; /* change state: last channel done */
-        } /* if */
-        else
-        {
-          solarState = SOL_QUERY_YIELD; /* scan next channel */
-        } /* else */
-#endif
 
     break; /* end of case SOL_QUERY_YIELD_WAIT_REPLY */
@@ -1012,5 +1084,5 @@
 
 
-portCHAR checkRxOneByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned charCheckSumStartByte)
+portCHAR checkRxOneByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned char CheckSumStartByte)
 {
   portCHAR retVal; /* return value */
@@ -1020,8 +1092,14 @@
   int x;
 
-  unsigned long crcLONG = 0;
+  unsigned long crcLONG;
   unsigned char crcCHAR;
   unsigned char crcCHARinv;
-  unsigned char carry = 0;
+  unsigned char carry;
+
+  crcLONG = 0;
+  crcCHAR = 0;
+  crcCHARinv = 0;
+  carry = 0;
+
 
   /* use bytes 1 to 13 for the checksum */
@@ -1029,10 +1107,4 @@
   {
 
-    /* overflow? */
- //   if (((portSHORT)crc + (portSHORT)(dataStart[x])) > 0xFF)
- //   {
- //     carry++;
- //   }
-
     crcLONG = (crcLONG + dataStart[x]); /* add and truncate to 8 bit */
   }
@@ -1040,7 +1112,5 @@
   carry = (unsigned char)(((crcLONG & 0xFF00) >> 8));
 
-  crcCHAR = (unsigned char)(crcLONG & 0xFF);
-
-  crcCHAR = (unsigned char)(crcCHAR + carry);
+  crcCHAR = ((unsigned char)crcLONG) + carry;
   crcCHARinv = (unsigned char)(~crcCHAR);
 
@@ -1048,5 +1118,5 @@
   calculatedCrc1Byte = crcCHARinv; /* save calculated CRC (for use in case of checksum generation) */
 
-  if (crcCHARinv == dataStart[charCheckSumStartByte])
+  if (crcCHARinv == dataStart[CheckSumStartByte])
   {
     retVal = 1; /* checksum OK, data is valid */
@@ -1060,5 +1130,5 @@
 
 
-portCHAR checkRxTwoByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned charCheckSumStartByte )
+portCHAR checkRxTwoByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned char CheckSumStartByte )
 {
   unsigned short cmpValue;
@@ -1077,5 +1147,5 @@
 
 
-  cmpValue = ((((unsigned short)dataStart[charCheckSumStartByte+1])<<8) | dataStart[charCheckSumStartByte]);
+  cmpValue = ((((unsigned short)dataStart[CheckSumStartByte+1])<<8) | dataStart[CheckSumStartByte]);
 
   calculatedCrc2Byte = staticCRC; /* save calculated CRC (for use in case of checksum generation) */
@@ -1132,2 +1202,125 @@
 
  } /* extractBinaryHexDigitString() */
+
+
+static unsigned char calculate_crc8(unsigned char * d_serdata_tuc, unsigned char nbytes)
+{
+   unsigned char i;
+   unsigned char j;
+   unsigned char d_currbyte_tuc;
+   unsigned char d_crc_tuc;
+   
+   /* start with BISISTX and repeat the checksum calculation for all bytes until CHKS8 (excl.) */
+    d_crc_tuc = 0; //   init the checksum
+
+    for( j = 1; j < (nbytes-2); j ++  )
+    {
+
+      d_currbyte_tuc = d_serdata_tuc[ j ];
+
+      for( i = 8; i > 0; i --  )
+      {
+         /*  if  current bit != 0 */
+         if (( (d_crc_tuc ^ d_currbyte_tuc) & BIT0  ) != 0)
+         {
+            d_crc_tuc ^= 0x18;
+            d_crc_tuc >>= 1;
+            d_crc_tuc |= BIT7;
+         }
+         else
+         {
+          d_crc_tuc >>= 1;
+         }
+         d_currbyte_tuc >>= 1;   //       prepare for next databit
+      } /* for */
+    } // this byte is finished
+
+  /* checksum is complete now - result always ORed with 0x80  and then compare */
+  /* calculated and received checksum */
+  d_crc_tuc |= BIT7;
+  return d_crc_tuc;
+}
+
+
+void send_yield_query_day(unsigned char channel /* 0 to 5 */, unsigned char day /* 1 to 31 */)
+{
+        unsigned char newChkSum;
+
+        req_day_yield[5] = 0x30 + channel; // channel
+
+
+        /* convert day to binary coded hex */
+        if (day > 15)
+        {
+            req_day_yield[8] = 0x31; /* hex MSB day is 1 */
+            day = day - 16;          /* decrease day (is now remainder */
+        }
+        else
+        {
+            req_day_yield[8] = 0x30; /* hex MSB day is 0 */
+        }
+        req_day_yield[9] = 0x30 + day; /* hex LSB day */
+
+        newChkSum = calculate_crc8(  (&(req_day_yield[0])), (sizeof(req_day_yield)-1));
+        req_day_yield[10] = newChkSum; /* fill in checksum */
+
+        resetUart3RxBuf();
+        send_uart3((unsigned char *)req_day_yield, sizeof(req_day_yield));
+
+} /* prepare_yield_query_day() */
+
+
+void send_yield_query_hour(unsigned char channel /* 0 to 5 */, unsigned char hour /* 0 to 23 */)
+{
+
+        unsigned char newChkSum;
+        unsigned char hourMSB;
+        unsigned char hourLSB;
+
+        req_hour_yield[5] = 0x30 + channel; // channel
+
+     
+        hourMSB = hour % 16;
+        hourLSB = hour - hourMSB;
+        
+        req_hour_yield[8] = 0x30 + hourMSB; // minute MSB (binary coded hex) 
+        req_hour_yield[9] = 0x30 + hourLSB; // minute LSB (binary coded hex)
+
+        newChkSum = calculate_crc8(  (&(req_hour_yield[0])), (sizeof(req_hour_yield)-1));
+
+        // crc
+        req_hour_yield[10] = newChkSum; /* fill in checksum */
+
+        resetUart3RxBuf();
+        send_uart3((unsigned char *)req_hour_yield, sizeof(req_hour_yield));
+
+
+
+} /* prepare_yield_query_hour() */
+
+
+void send_yield_query_minute(unsigned char channel /* 0 to 5 */, unsigned char minute /* 0 to 59 */)
+{
+        unsigned char newChkSum;
+        unsigned char minuteMSB;
+        unsigned char minuteLSB;
+
+        req_minute_yield[5] = 0x30 + channel; // channel
+
+     
+        minuteMSB = minute % 16;
+        minuteLSB = minute - minuteMSB;
+        
+        req_minute_yield[6] = 0x30 + minuteMSB; // minute MSB (binary coded hex) 
+        req_minute_yield[7] = 0x30 + minuteLSB; // minute LSB (binary coded hex)
+
+        newChkSum = calculate_crc8(  (&(req_minute_yield[0])), (sizeof(req_minute_yield)-1));
+
+        // crc
+        req_minute_yield[10] = newChkSum; /* fill in checksum */
+
+        resetUart3RxBuf();
+        send_uart3((unsigned char *)req_minute_yield, sizeof(req_minute_yield));
+
+
+} /* prepare_yield_query_minute() */
Index: /webserver/example/EnergyMeters/Source/EnergyMeters/MetersIncludes.h
===================================================================
--- /webserver/example/EnergyMeters/Source/EnergyMeters/MetersIncludes.h (revision 69)
+++ /webserver/example/EnergyMeters/Source/EnergyMeters/MetersIncludes.h (revision 70)
@@ -2,6 +2,9 @@
 void initMeterItems(void);
 
-portCHAR checkRxOneByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned charCheckSumStartByte);
-portCHAR checkRxTwoByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned charCheckSumStartByte );
+portCHAR checkRxOneByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned char CheckSumStartByte);
+portCHAR checkRxTwoByteCheckSum(unsigned char* dataStart, unsigned char firstByte, unsigned char lastByte, unsigned char CheckSumStartByte );
+
+
+static unsigned char calculate_crc8(unsigned char * d_serdata_tuc, unsigned char nbytes);
 
 int extractBinaryHexDigitString(unsigned char* srcDataStart, 
@@ -12,4 +15,9 @@
 
 unsigned long long getEpochTimeWithMs(void);
+
+
+void send_yield_query_day(unsigned char channel /* 0 to 5 */, unsigned char day /* 1 to 31 */);
+void send_yield_query_hour(unsigned char channel /* 0 to 5 */, unsigned char hour /* 0 to 23 */);
+void send_yield_query_minute(unsigned char channel /* 0 to 5 */, unsigned char minute /* 0 to 59 */);
 
 #define NUMBER_OF_METERS 6 /* the number of meters we use */
@@ -24,4 +32,9 @@
 
 #define METERS_INT_CHECK_INTERVAL_MS 100 /* how often (in ms) do we check if one of the I/O lines has triggered */
+
+
+#define NUMBER_OF_SOLAR_CHANNELS 6 /* number of solar channels */
+#define DAILY_RX_YIELD_LENGTH 9 /* length of the rx data */
+
 
 
@@ -50,2 +63,14 @@
 extern int historyRemainTime; /* how many ticks have we left until the next history entry must be written? */
 
+/* bit values for calculate_crc8() */
+
+#define BIT0 (1U << 0)
+#define BIT1 (1U << 1)
+#define BIT2 (1U << 2)
+#define BIT3 (1U << 3)
+#define BIT4 (1U << 4)
+#define BIT5 (1U << 5)
+#define BIT6 (1U << 6)
+#define BIT7 (1U << 7)
+
+
Index: /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c
===================================================================
--- /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c (revision 69)
+++ /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/webserver/httpd-cgi.c (revision 70)
@@ -70,4 +70,8 @@
 extern int solarReadCounter;
 extern unsigned char scDate[6]; /* date received from solar count */
+
+
+
+extern int dayRxYield[NUMBER_OF_SOLAR_CHANNELS]; /* daily yield data */
 
 extern int resultValueRaw; /* last raw yield value */
@@ -233,4 +237,5 @@
 {
         int i;
+        unsigned char k;
 
         unsigned long long currentTime = getEpochTimeWithMs();
@@ -280,4 +285,11 @@
       } /* for */
 
+      for (i = 0; i < NUMBER_OF_SOLAR_CHANNELS; i++)
+      {
+         sprintf( cCountBuf, "DAY %u %u\n", (int)i, dayRxYield[i] );
+         strcat( uip_appdata, cCountBuf );
+      }
+
+      strcat( uip_appdata, cCountBuf );
 
 
Index: /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs
===================================================================
--- /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs (revision 68)
+++ /webserver/example/EnergyMeters/EnergyMeters/ARM7_LPC2368_Rowley/EnergyMeters.hzs (revision 70)
@@ -14,10 +14,13 @@
  </Memory3>
  <Memory4>
-  <MemoryWindow autoEvaluate="0" addressText="" numColumns="16" sizeText="" dataSize="1" radix="16" addressSpace="" />
+  <MemoryWindow autoEvaluate="0" addressText="0x40005cc8" numColumns="16" sizeText="60" dataSize="1" radix="16" addressSpace="" />
  </Memory4>
  <Project>
   <ProjectSessionItem path="EnergyMetersEmbedded" name="unnamed" />
   <ProjectSessionItem path="EnergyMetersEmbedded;EnergyMetersEmbedded" name="unnamed" />
+  <ProjectSessionItem path="EnergyMetersEmbedded;EnergyMetersEmbedded;Demo Source" name="unnamed" />
   <ProjectSessionItem path="EnergyMetersEmbedded;EnergyMetersEmbedded;EnergyMeters" name="unnamed" />
+  <ProjectSessionItem path="EnergyMetersEmbedded;EnergyMetersEmbedded;FreeRTOS.org Source" name="unnamed" />
+  <ProjectSessionItem path="EnergyMetersEmbedded;EnergyMetersEmbedded;uIP Source" name="unnamed" />
  </Project>
  <Register1>
@@ -39,8 +42,8 @@
  <Watch1>
   <Watches active="0" update="Three Seconds" >
-   <Watchpoint evalMode="2" linenumber="312" numelements="10" evalType="0" radix="16" name="rxUART3" expression="rxUART3" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="72" numelements="10" evalType="0" radix="16" name="meterItems" expression="meterItems" filename="d:/energymetersproject/source/energymeters/meters_isrs.c" />
    <Watchpoint linenumber="64" radix="-1" name="currentTime" expression="currentTime" filename="d:/energymetersproject/source/energymeters/meters_isrs.c" />
    <Watchpoint linenumber="547" radix="16" name="PINSEL0" expression="PINSEL0" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
+   <Watchpoint evalMode="2" linenumber="72" numelements="10" evalType="0" radix="16" name="meterItems" expression="meterItems" filename="d:/energymetersproject/source/energymeters/meters_isrs.c" />
+   <Watchpoint evalMode="2" linenumber="312" numelements="10" evalType="0" radix="16" name="rxUART3" expression="rxUART3" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
   </Watches>
  </Watch1>
@@ -55,47 +58,18 @@
  <Watch4>
   <Watches active="1" update="Twice a Second" >
-   <Watchpoint linenumber="948" radix="-1" name="carry" expression="carry" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="111" numelements="11" evalType="0" radix="-1" name="meterItems" expression="meterItems" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/meters_isrs.c" />
-   <Watchpoint linenumber="951" radix="-1" name="crcCHAR" expression="crcCHAR" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="381" radix="-1" name="cmpResult" expression="cmpResult" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="981" radix="-1" name="cmpValue" expression="cmpValue" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="940" radix="-1" name="crcLONG" expression="crcLONG" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="637" radix="-1" name="ch" expression="ch" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="539" numelements="100" evalType="0" radix="-1" name="rxUART3" expression="rxUART3" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="573" radix="-1" name="xLastSolarStateChangeTime" expression="xLastSolarStateChangeTime" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="488" numelements="6" evalType="0" radix="10" name="chanWatt" expression="chanWatt" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="485" numelements="6" evalType="0" radix="10" name="scDate" expression="scDate" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="2" linenumber="488" numelements="6" evalType="0" radix="11" name="chanVolt" expression="chanVolt" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="0" linenumber="396" evalType="1" radix="-1" name="uip_appdata" expression="uip_appdata" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/energymeters/arm7_lpc2368_rowley/webserver/httpd-cgi.c" />
-   <Watchpoint linenumber="951" radix="-1" name="crcCHARinv" expression="crcCHARinv" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="109" radix="16" name="solarReadErrors" expression="solarReadErrors" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="969" radix="-1" name="staticCRC" expression="staticCRC" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="55" radix="16" name="solarState" expression="solarState" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="0" linenumber="428" evalType="0" radix="-1" name="init1" expression="init1" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint linenumber="676" radix="-1" name="xLastTimeCheckTime" expression="xLastTimeCheckTime" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
-   <Watchpoint evalMode="0" linenumber="396" evalType="1" radix="-1" name="uip_appdata" expression="uip_appdata" filename="c:/dokumente und einstellungen/phil/desktop/repo/webserver/example/energymeters/energymeters/arm7_lpc2368_rowley/webserver/httpd-cgi.c" />
+   <Watchpoint evalMode="2" linenumber="679" numelements="21" evalType="0" radix="-1" name="yield_day_rsp" expression="yield_day_rsp" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
+   <Watchpoint evalMode="2" linenumber="668" numelements="6" evalType="0" radix="16" name="dayRxYield" expression="dayRxYield" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
+   <Watchpoint evalMode="2" linenumber="669" numelements="100" evalType="0" radix="-1" name="rxUART3" expression="rxUART3" filename="d:/repo/webserver/example/energymeters/source/energymeters/solarcountuart.c" />
   </Watches>
  </Watch4>
  <Files>
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Dokumente und Einstellungen\phil\Lokale Einstellungen\Anwendungsdaten\Rowley Associates Limited\CrossWorks for ARM\packages\targets\Philips_LPC210X\Philips_LPC230X_Startup.s" y="278" path="C:\Dokumente und Einstellungen\phil\Lokale Einstellungen\Anwendungsdaten\Rowley Associates Limited\CrossWorks for ARM\packages\targets\Philips_LPC210X\Philips_LPC230X_Startup.s" left="0" selected="0" name="unnamed" top="261" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\tasks.c" y="1133" path="D:\repo\webserver\example\EnergyMeters\Source\tasks.c" left="0" selected="0" name="unnamed" top="1105" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd.c" y="9" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd.c" left="0" selected="0" name="unnamed" top="0" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\LCD\portlcd.c" y="24" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\LCD\portlcd.c" left="0" selected="0" name="unnamed" top="9" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\port.c" y="172" path="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\port.c" left="0" selected="0" name="unnamed" top="152" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\MetersIncludes.h" y="0" path="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\MetersIncludes.h" left="0" selected="0" name="unnamed" top="21" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\list.c" y="108" path="D:\repo\webserver\example\EnergyMeters\Source\list.c" left="0" selected="0" name="unnamed" top="89" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\include\portable.h" y="105" path="D:\repo\webserver\example\EnergyMeters\Source\include\portable.h" left="0" selected="0" name="unnamed" top="89" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portmacro.h" y="0" path="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portmacro.h" left="0" selected="0" name="unnamed" top="75" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="40" debugPath="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\SolarCountUART.c" y="612" path="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\SolarCountUART.c" left="0" selected="1" name="unnamed" top="592" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="29" debugPath="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\MetersIncludes.h" y="36" path="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\MetersIncludes.h" left="0" selected="0" name="unnamed" top="51" />
   <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\main.c" y="115" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\main.c" left="0" selected="0" name="unnamed" top="99" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd-cgi.c" y="0" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd-cgi.c" left="0" selected="0" name="unnamed" top="114" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="29" debugPath="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\SolarCountUART.c" y="565" path="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\SolarCountUART.c" left="0" selected="1" name="unnamed" top="582" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portISR.c" y="216" path="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portISR.c" left="0" selected="0" name="unnamed" top="26" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\queue.c" y="132" path="D:\repo\webserver\example\EnergyMeters\Source\queue.c" left="0" selected="0" name="unnamed" top="132" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\serial.c" y="226" path="D:\repo\webserver\example\EnergyMeters\Source\serial.c" left="0" selected="0" name="unnamed" top="210" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="C:\Dokumente und Einstellungen\phil\Lokale Einstellungen\Anwendungsdaten\Rowley Associates Limited\CrossWorks for ARM\packages\targets\Philips_LPC210X\LPC230x.c" y="69" path="C:\Dokumente und Einstellungen\phil\Lokale Einstellungen\Anwendungsdaten\Rowley Associates Limited\CrossWorks for ARM\packages\targets\Philips_LPC210X\LPC230x.c" left="0" selected="0" name="unnamed" top="53" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\Meters_ISRs.c" y="12" path="D:\repo\webserver\example\EnergyMeters\Source\EnergyMeters\Meters_ISRs.c" left="0" selected="0" name="unnamed" top="0" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\include\FreeRTOS.h" y="367" path="D:\repo\webserver\example\EnergyMeters\Source\include\FreeRTOS.h" left="0" selected="0" name="unnamed" top="353" />
-  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\FreeRTOSConfig.h" y="81" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\FreeRTOSConfig.h" left="0" selected="0" name="unnamed" top="63" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portISR.c" y="216" path="D:\repo\webserver\example\EnergyMeters\Source\portable\GCC\ARM7_LPC23xx\portISR.c" left="0" selected="0" name="unnamed" top="195" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\queue.c" y="799" path="D:\repo\webserver\example\EnergyMeters\Source\queue.c" left="0" selected="0" name="unnamed" top="781" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="0" debugPath="D:\repo\webserver\example\EnergyMeters\Source\tasks.c" y="1128" path="D:\repo\webserver\example\EnergyMeters\Source\tasks.c" left="0" selected="0" name="unnamed" top="1104" />
+  <SessionOpenFile useTextEdit="1" useBinaryEdit="0" codecName="Latin1" x="21" debugPath="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd-cgi.c" y="286" path="D:\repo\webserver\example\EnergyMeters\EnergyMeters\ARM7_LPC2368_Rowley\webserver\httpd-cgi.c" left="0" selected="0" name="unnamed" top="278" />
  </Files>
- <ARMCrossStudioWindow activeProject="EnergyMetersEmbedded" autoConnectTarget="Macraigor Wiggler (20 Pin)" debugSearchFileMap="" fileDialogInitialDirectory="C:\Dokumente und Einstellungen\phil\Desktop\repo\webserver\example\EnergyMeters\Source" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388479" debugSearchPath="" buildConfiguration="ARM Flash Release" />
+ <ARMCrossStudioWindow activeProject="EnergyMetersEmbedded" autoConnectTarget="Segger J-Link" debugSearchFileMap="" fileDialogInitialDirectory="C:\Dokumente und Einstellungen\phil\Desktop\repo\webserver\example\EnergyMeters\Source" fileDialogDefaultFilter="*.c" autoConnectCapabilities="388479" debugSearchPath="" buildConfiguration="ARM Flash Debug" />
 </session>