[zb4osgi-changeset] [scm] ZigBee 4 OSGi repository change: r998 - in /projects/zb4osgi/members/firmware/open2530/sources: MeteringDevice/OPEN2530/ MeteringDevice/Source/ SensorNode-FC04-PIR-POWER/ SensorNode-FC04-PIR-POWER/OPEN2530/ SensorNode-FC04-PIR-POWER/Source/ ZStack/Components/stack/zcl/ ZStack/Target_OPEN2530/

scm-notify at zb4osgi.aaloa.org scm-notify at zb4osgi.aaloa.org
Thu Apr 24 16:09:16 CEST 2014


Author: fabio.mavilia
Date: Thu Apr 24 16:09:16 2014
New Revision: 998

Log:
new Reporting functionalities
NOBOARD functionality, multi channel and power structures in "Sensing" code
added "power" code with new messages exchange
modified "fsr" code for multi-channel functionalities
added "SensorNode" project with NOISE, PIR, POWER and new Reporting functionalities

Added:
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewd
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewp
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.eww
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/OSAL_SensorNode.c
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.c
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.h
    projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode_data.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.h
Modified:
    projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/OPEN2530/MeteringDevice.ewp
    projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/Source/MeteringDevice.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.h
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.h
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.h
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.c
    projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.h

Modified: projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/OPEN2530/MeteringDevice.ewp
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/OPEN2530/MeteringDevice.ewp (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/OPEN2530/MeteringDevice.ewp Thu Apr 24 16:09:16 2014
@@ -1326,9 +1326,6 @@
           <state>MT_SYS_FUNC</state>
           <state>MT_ZDO_FUNC</state>
           <state>xLCD_SUPPORTED=DEBUG</state>
-          <state>xMETERING</state>
-          <state>xANALOG_INPUT</state>
-          <state>xSENSING_OEM</state>
           <state>SENSING_POT</state>
           <state>xHAL_TIMER</state>
           <state>xTIMER_1</state>
@@ -3171,9 +3168,6 @@
     </file>
     <file>
       <name>$PROJ_DIR$\..\Source\OSAL_MeteringDevice.c</name>
-    </file>
-    <file>
-      <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\sensing_OEM.c</name>
     </file>
     <file>
       <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\sensing_POT.c</name>

Modified: projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/Source/MeteringDevice.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/Source/MeteringDevice.c (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/MeteringDevice/Source/MeteringDevice.c Thu Apr 24 16:09:16 2014
@@ -126,7 +126,7 @@
 
 #ifdef SENSING_POT
 extern SingleSensingConf_t Voltage;
-extern SingleSensingConf_t Current;
+extern SingleSensingConf_t Current[CHANNELS_NUMBER];
 float IRMS;
 float VRMS;
 #endif
@@ -365,6 +365,7 @@
             //Reset the timer. Time out in ms so *1000 to get seconds
             osal_start_timerEx( MeteringDevice_TaskID, METERINGDEVICE_ANALOG_INPUT_REPORT_ATTRIBUTE_EVT, AnalogInputReportInterval*1000 );
             seqNumRep++;
+            lastPresentValue = MeteringDevice_PresentValue;
           }
         }
       }
@@ -372,8 +373,6 @@
         //restart the timer and waiting for a change of the value
         osal_start_timerEx( MeteringDevice_TaskID, METERINGDEVICE_ANALOG_INPUT_REPORT_ATTRIBUTE_EVT, AnalogInputReportInterval*1000 );
     }
-      
-    lastPresentValue = MeteringDevice_PresentValue;
     
     //Clear the event
     return ( events ^ METERINGDEVICE_ANALOG_INPUT_REPORT_ATTRIBUTE_EVT );
@@ -391,9 +390,9 @@
   if ( events & NEW_READY_SAMPLES_EVT )
   {
     VRMS = GetRMS ( &Voltage );
-    IRMS = GetRMS ( &Current );
-    
-    float Real_power = GetRealPower();
+    IRMS = GetRMS ( &Current[0] );
+    
+    float Real_power = GetRealPower( 0 );
     
     if ( Real_power >= 0)
       MeteringDevice_PresentValue = Real_power;
@@ -401,7 +400,7 @@
       MeteringDevice_PresentValue = 0;
     
 //    printf("\n");
-//    printf(" %f", IRMS);
+//    printf("1 %f", IRMS);
 //    printf(" %f", VRMS);
 //    printf(" %f", MeteringDevice_PresentValue);
     

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewd
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewd (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewd Thu Apr 24 16:09:16 2014
@@ -1,0 +1,1906 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>CoordinatorEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>GoToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GoToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>d24BitData</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger code model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Sim extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger DPTR Settings</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DebuggerMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DynDriver</name>
+          <state>CHIPCON_ID</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Debugger data model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DdfFile slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DdfFile master</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\ioCC2530.ddf</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_3RD_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Third-Party Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Third-Party Driver File Name Edit</name>
+          <state>ThirdPartyDriver.dll</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CHIPCON_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ChipconDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainMemory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconVerifyDownload</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconVerifyRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconReduceSpeed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconStackOverflow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconNoBanks</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>ChipconLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLogComFile</name>
+          <state>communication.log</state>
+        </option>
+        <option>
+          <name>ChipconFlashLock</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconFlashLockInfo</name>
+          <state><page size info. missing></state>
+        </option>
+        <option>
+          <name>ChipconBootLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconDebugLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPagesCtrl</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashRadio</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>FS2_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Fs2DriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Configuration</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Has program RAM</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program RAM areas</name>
+          <state>0x8000-0x87FF,0xC000-0xC7FF</state>
+        </option>
+        <option>
+          <name>Has program Flash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program Flash cfg entry</name>
+          <state>nRF24LU1</state>
+        </option>
+        <option>
+          <name>Program Flash areas</name>
+          <state>0x0000-0x7FFF</state>
+        </option>
+        <option>
+          <name>FS2SuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FS2VerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>INFINEON_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>InfineonDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>InfineonEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfServerAddr</name>
+          <state>localhost</state>
+        </option>
+        <option>
+          <name>InfServerName</name>
+          <state>JTAG over USB Box</state>
+        </option>
+        <option>
+          <name>InfKey1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey4</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfConnection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSwBp</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>NS_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>NsDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>NSSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NSVerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ROM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>RomDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>VerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AllComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>Parity</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DataBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>StopBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Handshake</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>ToggleDTR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ToggleRTS</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AD2_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>6</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuC8xx</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuCpuClockFrequency</name>
+          <state>12582912</state>
+        </option>
+        <option>
+          <name>OverrideCpuClkFreq</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AD2EraseDataFlash</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debug Interface</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CYGNAL_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnSuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnProtocol</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>drv_silabs_page_size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsUsb</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsPowerTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsMulDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevAfter</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegAfter</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_SENSIUM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>TI Sensium Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver File Name Edit</name>
+          <state>tiSensiumDbg.dll</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>SensiumSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumES2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumProgramEPROM</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>SIM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>SimDriverMandatory</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>RouterEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>GoToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GoToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>d24BitData</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger code model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Sim extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger DPTR Settings</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DebuggerMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DynDriver</name>
+          <state>CHIPCON_ID</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Debugger data model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DdfFile slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DdfFile master</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\ioCC2530.ddf</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_3RD_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Third-Party Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Third-Party Driver File Name Edit</name>
+          <state>ThirdPartyDriver.dll</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CHIPCON_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ChipconDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainMemory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconVerifyDownload</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconVerifyRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconReduceSpeed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconStackOverflow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconNoBanks</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>ChipconLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLogComFile</name>
+          <state>communication.log</state>
+        </option>
+        <option>
+          <name>ChipconFlashLock</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconFlashLockInfo</name>
+          <state><page size info. missing></state>
+        </option>
+        <option>
+          <name>ChipconBootLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconDebugLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPagesCtrl</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashRadio</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>FS2_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Fs2DriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Configuration</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Has program RAM</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program RAM areas</name>
+          <state>0x8000-0x87FF,0xC000-0xC7FF</state>
+        </option>
+        <option>
+          <name>Has program Flash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program Flash cfg entry</name>
+          <state>nRF24LU1</state>
+        </option>
+        <option>
+          <name>Program Flash areas</name>
+          <state>0x0000-0x7FFF</state>
+        </option>
+        <option>
+          <name>FS2SuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FS2VerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>INFINEON_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>InfineonDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>InfineonEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfServerAddr</name>
+          <state>localhost</state>
+        </option>
+        <option>
+          <name>InfServerName</name>
+          <state>JTAG over USB Box</state>
+        </option>
+        <option>
+          <name>InfKey1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey4</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfConnection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSwBp</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>NS_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>NsDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>NSSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NSVerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ROM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>RomDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>VerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AllComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>Parity</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DataBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>StopBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Handshake</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>ToggleDTR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ToggleRTS</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AD2_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>6</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuC8xx</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuCpuClockFrequency</name>
+          <state>12582912</state>
+        </option>
+        <option>
+          <name>OverrideCpuClkFreq</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AD2EraseDataFlash</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debug Interface</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CYGNAL_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnSuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnProtocol</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>drv_silabs_page_size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsUsb</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsPowerTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsMulDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevAfter</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegAfter</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_SENSIUM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>TI Sensium Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver File Name Edit</name>
+          <state>tiSensiumDbg.dll</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>SensiumSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumES2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumProgramEPROM</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>SIM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>SimDriverMandatory</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+  <configuration>
+    <name>EndDeviceEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>C-SPY</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CInput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>GoToEnable</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GoToName</name>
+          <state>main</state>
+        </option>
+        <option>
+          <name>MemOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCProcessor</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>d24BitData</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger code model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Sim extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger DPTR Settings</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debugger Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DebuggerMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DynDriver</name>
+          <state>CHIPCON_ID</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debugger Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Debugger data model</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>OCImagesSuppressCheck3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OCImagesPath3</name>
+          <state></state>
+        </option>
+        <option>
+          <name>DdfFile slave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DdfFile master</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\ioCC2530.ddf</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_3RD_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Third-Party Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Third-Party Driver File Name Edit</name>
+          <state>ThirdPartyDriver.dll</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Third-Party Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CHIPCON_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>3</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>ChipconDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainMemory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconVerifyDownload</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconVerifyRadio</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconReduceSpeed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconStackOverflow</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ChipconNoBanks</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>ChipconLogFileCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLogComFile</name>
+          <state>communication.log</state>
+        </option>
+        <option>
+          <name>ChipconFlashLock</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconFlashLockInfo</name>
+          <state><page size info. missing></state>
+        </option>
+        <option>
+          <name>ChipconBootLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconDebugLock</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconLockLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPagesCtrl</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ChipconRetainPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashPages</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ChipconFlashRadio</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>FS2_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>Fs2DriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Configuration</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Has program RAM</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program RAM areas</name>
+          <state>0x8000-0x87FF,0xC000-0xC7FF</state>
+        </option>
+        <option>
+          <name>Has program Flash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Program Flash cfg entry</name>
+          <state>nRF24LU1</state>
+        </option>
+        <option>
+          <name>Program Flash areas</name>
+          <state>0x0000-0x7FFF</state>
+        </option>
+        <option>
+          <name>FS2SuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FS2VerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>INFINEON_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>InfineonDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>InfineonEraseFlash</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfServerAddr</name>
+          <state>localhost</state>
+        </option>
+        <option>
+          <name>InfServerName</name>
+          <state>JTAG over USB Box</state>
+        </option>
+        <option>
+          <name>InfKey1</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey3</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfKey4</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfConnection</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>InfineonSwBp</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>NS_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>NsDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>NSSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NSVerifyDownload</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ROM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>2</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>RomDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>VerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AllComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>Parity</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DataBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>StopBits</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Handshake</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>DoLogfile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>LogFile</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>ToggleDTR</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ToggleRTS</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>AD2_ID</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>6</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>6</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuC8xx</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ADuCpuClockFrequency</name>
+          <state>12582912</state>
+        </option>
+        <option>
+          <name>OverrideCpuClkFreq</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AD2EraseDataFlash</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Debug Interface</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CYGNAL_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CygnalDriverMandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CygnSuppressLoad</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CygnProtocol</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Port</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Baud</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CygnComm</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>drv_silabs_page_size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsUsb</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsPowerTarget</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsMulDevices</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsDevAfter</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegBefore</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SilabsRegAfter</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>_SENSIUM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>TI Sensium Driver Mandatory</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver File Name Edit</name>
+          <state>tiSensiumDbg.dll</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>TI Sensium Driver LogFile Edit</name>
+          <state>cspycomm.log</state>
+        </option>
+        <option>
+          <name>SensiumSuppressDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumVerifyDownload</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumES2</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SensiumProgramEPROM</name>
+          <state>0</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>SIM_ID</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>1</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>SimDriverMandatory</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <debuggerPlugins>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin</file>
+        <loadFlag>0</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Profiling\Profiling.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\Stack\Stack.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+      <plugin>
+        <file>$EW_DIR$\common\plugins\SymList\SymList.ENU.ewplugin</file>
+        <loadFlag>1</loadFlag>
+      </plugin>
+    </debuggerPlugins>
+  </configuration>
+</project>
+
+

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewp
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewp (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.ewp Thu Apr 24 16:09:16 2014
@@ -1,0 +1,3756 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<project>
+  <fileVersion>2</fileVersion>
+  <configuration>
+    <name>CoordinatorEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>DerivativeDescriptionFile</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Previous Derivative File</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Showed Derivative</name>
+          <state>CC2530F256</state>
+        </option>
+        <option>
+          <name>CPU Core</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CPU Core Slave</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Code Memory Model</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Code Memory Model slave</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model slave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Use extended stack</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Use extended stack slave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Start of extended stack</name>
+          <state>0x002000</state>
+        </option>
+        <option>
+          <name>Calling convention</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>Workseg Size</name>
+          <version>0</version>
+          <state>8</state>
+        </option>
+        <option>
+          <name>Constant Placement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Datapointer Size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Nr of Datapointers</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Switch Method</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Mask Value</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DPS Address</name>
+          <state>0x92</state>
+        </option>
+        <option>
+          <name>Sfr Visibility</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DPTR Addresses</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CodeBankReg</name>
+          <state>0x9F</state>
+        </option>
+        <option>
+          <name>CodeBankStart</name>
+          <state>0x8000</state>
+        </option>
+        <option>
+          <name>CodeBankSize</name>
+          <state>0xFFFF</state>
+        </option>
+        <option>
+          <name>ExePath</name>
+          <state>CoordinatorEB\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>CoordinatorEB\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>CoordinatorEB\List</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the legacy C runtime library.</state>
+        </option>
+        <option>
+          <name>RTConfigPath</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RTLibraryPath</name>
+          <state>$TOOLKIT_DIR$\LIB\CLIB\cl-pli-blxd-1e16x01.r51</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>No float.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>No float, no field width, no precision.</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>General Idata Stack Size</name>
+          <state>0xC0</state>
+        </option>
+        <option>
+          <name>General Pdata Stack Size</name>
+          <state>0x80</state>
+        </option>
+        <option>
+          <name>General Xdata Stack Size</name>
+          <state>0x300</state>
+        </option>
+        <option>
+          <name>General Ext Stack Size</name>
+          <state>0x3FF</state>
+        </option>
+        <option>
+          <name>General Xdata Heap Size</name>
+          <state>0x00</state>
+        </option>
+        <option>
+          <name>General Far Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>General Huge Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>CodeBankNrOfs</name>
+          <state>0x07</state>
+        </option>
+        <option>
+          <name>CodeBankRegMask</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>PDATA 8-15 register address</name>
+          <state>0x93</state>
+        </option>
+        <option>
+          <name>PDATA 16-31 register address</name>
+          <state></state>
+        </option>
+        <option>
+          <name>General Far22 Heap Size</name>
+          <state>0xFFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICC8051</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCOptSizeSpeedSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationSlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state>ZTOOL_P1</state>
+          <state>MT_TASK</state>
+          <state>MT_SYS_FUNC</state>
+          <state>MT_ZDO_FUNC</state>
+          <state>xLCD_SUPPORTED=DEBUG</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pe001,Pa010</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LangConform</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CharIs</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMigrationPreprocExtentions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>11101</state>
+        </option>
+        <option>
+          <name>CCObjUseModuleName</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCObjModuleName</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDptr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDataMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCodeMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCallingConvention</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCConstantPlacement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RomMonBpPadding</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCLangSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoUBROFMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Edit</name>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wCoord.cfg</state>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wConfig.cfg</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530</state>
+          <state>$PROJ_DIR$\..\Source</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\OPEN2530</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mt</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\mcu\ccsoc</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\saddr</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\sdata</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\af</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sapi</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sec</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sys</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCStdIncludePath</name>
+          <state>$TOOLKIT_DIR$\INC\</state>
+          <state>$TOOLKIT_DIR$\INC\CLIB\</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CCOverrideModuleTypeDefault</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleType</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleTypeSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>A8051</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OAProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Generated Preproc defines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Asm multibyte support</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoStruct</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AIncludes</name>
+          <state>$TOOLKIT_DIR$\inc\</state>
+          <state>$TOOLKIT_DIR$\src\lib</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AMaxErrOn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AMaxErrNum</name>
+          <state>100</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>XLINK</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>17</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XInfineonPFlashCacheBug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XOutOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>SensorNode.d51</state>
+        </option>
+        <option>
+          <name>OutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>FormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>SecondaryOutputFile</name>
+          <state>(None for the selected format)</state>
+        </option>
+        <option>
+          <name>XDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AlwaysOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlapWarnings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoGlobalCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XList</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SegmentMap</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ListSymbols</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>XIncludes</name>
+          <state>$TOOLKIT_DIR$\LIB\</state>
+        </option>
+        <option>
+          <name>ModuleStatus</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XclOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XclFile</name>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8w2530.xcl</state>
+        </option>
+        <option>
+          <name>XclFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Config Include Dir</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLink Dptr Switch mask</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHXNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHX DPS Address</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLINK Dptr Addresses</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OXLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlgo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RangeCheckAlternatives</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressAllWarn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressDiags</name>
+          <state>e24</state>
+        </option>
+        <option>
+          <name>TreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>TreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ModuleLocalSym</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IncludeSuppressed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ModuleSummary</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabel</name>
+          <state>__program_start</state>
+        </option>
+        <option>
+          <name>DebugInformation</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RuntimeControl</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IoEmulation</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AllowExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GenerateExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XExtraOutOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ExtraOutputFile</name>
+          <state>SensorNode.hex</state>
+        </option>
+        <option>
+          <name>ExtraOutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>ExtraFormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>xcOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ListOutputFormat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BufferedTermOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlaySystemMap</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XcRTLibraryFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Idata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Ext Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Pdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Far Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Huge Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Edit</name>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\Security.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TIMAC\bin\TIMAC-CC2530.lib</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>Linker Far22 Heap Size</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XAR</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XARInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XAROverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAR Standard name</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAROutput</name>
+          <state>###Uninitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>RouterEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>DerivativeDescriptionFile</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Previous Derivative File</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Showed Derivative</name>
+          <state>CC2530F256</state>
+        </option>
+        <option>
+          <name>CPU Core</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CPU Core Slave</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Code Memory Model</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Code Memory Model slave</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model slave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Use extended stack</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Use extended stack slave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Start of extended stack</name>
+          <state>0x002000</state>
+        </option>
+        <option>
+          <name>Calling convention</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>Workseg Size</name>
+          <version>0</version>
+          <state>8</state>
+        </option>
+        <option>
+          <name>Constant Placement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Datapointer Size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Nr of Datapointers</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Switch Method</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Mask Value</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DPS Address</name>
+          <state>0x92</state>
+        </option>
+        <option>
+          <name>Sfr Visibility</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DPTR Addresses</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CodeBankReg</name>
+          <state>0x9F</state>
+        </option>
+        <option>
+          <name>CodeBankStart</name>
+          <state>0x8000</state>
+        </option>
+        <option>
+          <name>CodeBankSize</name>
+          <state>0xFFFF</state>
+        </option>
+        <option>
+          <name>ExePath</name>
+          <state>RouterEB\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>RouterEB\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>RouterEB\List</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the legacy C runtime library.</state>
+        </option>
+        <option>
+          <name>RTConfigPath</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RTLibraryPath</name>
+          <state>$TOOLKIT_DIR$\LIB\CLIB\cl-pli-blxd-1e16x01.r51</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>No float.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>No float, no field width, no precision.</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>General Idata Stack Size</name>
+          <state>0xC0</state>
+        </option>
+        <option>
+          <name>General Pdata Stack Size</name>
+          <state>0x80</state>
+        </option>
+        <option>
+          <name>General Xdata Stack Size</name>
+          <state>0x300</state>
+        </option>
+        <option>
+          <name>General Ext Stack Size</name>
+          <state>0x3FF</state>
+        </option>
+        <option>
+          <name>General Xdata Heap Size</name>
+          <state>0x00</state>
+        </option>
+        <option>
+          <name>General Far Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>General Huge Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>CodeBankNrOfs</name>
+          <state>0x07</state>
+        </option>
+        <option>
+          <name>CodeBankRegMask</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>PDATA 8-15 register address</name>
+          <state>0x93</state>
+        </option>
+        <option>
+          <name>PDATA 16-31 register address</name>
+          <state></state>
+        </option>
+        <option>
+          <name>General Far22 Heap Size</name>
+          <state>0xFFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICC8051</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCOptSizeSpeedSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationSlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state>ZTOOL_P1</state>
+          <state>MT_TASK</state>
+          <state>MT_SYS_FUNC</state>
+          <state>MT_ZDO_FUNC</state>
+          <state>xLCD_SUPPORTED=DEBUG</state>
+          <state>REFLECTOR</state>
+          <state>xFC04</state>
+          <state>POWER</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pe001,Pa010</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LangConform</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CharIs</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMigrationPreprocExtentions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>00000</state>
+        </option>
+        <option>
+          <name>CCObjUseModuleName</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCObjModuleName</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDptr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDataMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCodeMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCallingConvention</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCConstantPlacement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RomMonBpPadding</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCLangSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoUBROFMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Edit</name>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wRouter.cfg</state>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wConfig.cfg</state>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wZCL.cfg</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530</state>
+          <state>$PROJ_DIR$\..\Source</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\HomeAutomation\Source</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\OPEN2530</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mt</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\mcu\ccsoc</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\saddr</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\sdata</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\af</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sapi</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sec</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sys</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\zcl</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCStdIncludePath</name>
+          <state>$TOOLKIT_DIR$\INC\</state>
+          <state>$TOOLKIT_DIR$\INC\CLIB\</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CCOverrideModuleTypeDefault</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleType</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleTypeSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>A8051</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OAProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Generated Preproc defines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Asm multibyte support</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoStruct</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AIncludes</name>
+          <state>$TOOLKIT_DIR$\inc\</state>
+          <state>$TOOLKIT_DIR$\src\lib</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AMaxErrOn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AMaxErrNum</name>
+          <state>100</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>XLINK</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>17</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XInfineonPFlashCacheBug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XOutOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>SensorNode.d51</state>
+        </option>
+        <option>
+          <name>OutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>FormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>SecondaryOutputFile</name>
+          <state>(None for the selected format)</state>
+        </option>
+        <option>
+          <name>XDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AlwaysOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlapWarnings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoGlobalCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XList</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SegmentMap</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ListSymbols</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>XIncludes</name>
+          <state>$TOOLKIT_DIR$\LIB\</state>
+        </option>
+        <option>
+          <name>ModuleStatus</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XclOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XclFile</name>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8w2530.xcl</state>
+        </option>
+        <option>
+          <name>XclFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Config Include Dir</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLink Dptr Switch mask</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHXNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHX DPS Address</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLINK Dptr Addresses</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OXLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlgo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RangeCheckAlternatives</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressAllWarn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressDiags</name>
+          <state>e24</state>
+        </option>
+        <option>
+          <name>TreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>TreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ModuleLocalSym</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IncludeSuppressed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ModuleSummary</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabel</name>
+          <state>__program_start</state>
+        </option>
+        <option>
+          <name>DebugInformation</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RuntimeControl</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IoEmulation</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AllowExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GenerateExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XExtraOutOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ExtraOutputFile</name>
+          <state>SensorNode.hex</state>
+        </option>
+        <option>
+          <name>ExtraOutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>ExtraFormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>xcOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ListOutputFormat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BufferedTermOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlaySystemMap</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XcRTLibraryFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Idata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Ext Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Pdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Far Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Huge Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Edit</name>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\Router-Pro.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\Security.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TIMAC\bin\TIMAC-CC2530.lib</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>Linker Far22 Heap Size</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XAR</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XARInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XAROverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAR Standard name</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAROutput</name>
+          <state>###Uninitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <configuration>
+    <name>EndDeviceEB</name>
+    <toolchain>
+      <name>8051</name>
+    </toolchain>
+    <debug>1</debug>
+    <settings>
+      <name>General</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>DerivativeDescriptionFile</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Previous Derivative File</name>
+          <state>$TOOLKIT_DIR$\config\devices\Texas Instruments\CC2530F256.i51</state>
+        </option>
+        <option>
+          <name>Showed Derivative</name>
+          <state>CC2530F256</state>
+        </option>
+        <option>
+          <name>CPU Core</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CPU Core Slave</name>
+          <version>1</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Code Memory Model</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Code Memory Model slave</name>
+          <version>1</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Data Memory Model slave</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Use extended stack</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Use extended stack slave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Start of extended stack</name>
+          <state>0x002000</state>
+        </option>
+        <option>
+          <name>Calling convention</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>Workseg Size</name>
+          <version>0</version>
+          <state>8</state>
+        </option>
+        <option>
+          <name>Constant Placement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Datapointer Size</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Nr of Datapointers</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Switch Method</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Mask Value</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DPS Address</name>
+          <state>0x92</state>
+        </option>
+        <option>
+          <name>Sfr Visibility</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DPTR Addresses</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CodeBankReg</name>
+          <state>0x9F</state>
+        </option>
+        <option>
+          <name>CodeBankStart</name>
+          <state>0x8000</state>
+        </option>
+        <option>
+          <name>CodeBankSize</name>
+          <state>0xFFFF</state>
+        </option>
+        <option>
+          <name>ExePath</name>
+          <state>EndDeviceEB\Exe</state>
+        </option>
+        <option>
+          <name>ObjPath</name>
+          <state>EndDeviceEB\Obj</state>
+        </option>
+        <option>
+          <name>ListPath</name>
+          <state>EndDeviceEB\List</state>
+        </option>
+        <option>
+          <name>GOutputBinary</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelect</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>GRuntimeLibSelectSlave</name>
+          <version>0</version>
+          <state>4</state>
+        </option>
+        <option>
+          <name>RTDescription</name>
+          <state>Use the legacy C runtime library.</state>
+        </option>
+        <option>
+          <name>RTConfigPath</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RTLibraryPath</name>
+          <state>$TOOLKIT_DIR$\LIB\CLIB\cl-pli-blxd-1e16x01.r51</state>
+        </option>
+        <option>
+          <name>Input variant</name>
+          <version>0</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>Input description</name>
+          <state>No float.</state>
+        </option>
+        <option>
+          <name>Output variant</name>
+          <version>0</version>
+          <state>3</state>
+        </option>
+        <option>
+          <name>Output description</name>
+          <state>No float, no field width, no precision.</state>
+        </option>
+        <option>
+          <name>GeneralEnableMisra</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraVerbose</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>General Idata Stack Size</name>
+          <state>0xC0</state>
+        </option>
+        <option>
+          <name>General Pdata Stack Size</name>
+          <state>0x80</state>
+        </option>
+        <option>
+          <name>General Xdata Stack Size</name>
+          <state>0x300</state>
+        </option>
+        <option>
+          <name>General Ext Stack Size</name>
+          <state>0x3FF</state>
+        </option>
+        <option>
+          <name>General Xdata Heap Size</name>
+          <state>0x00</state>
+        </option>
+        <option>
+          <name>General Far Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>General Huge Heap Size</name>
+          <state>0x000</state>
+        </option>
+        <option>
+          <name>CodeBankNrOfs</name>
+          <state>0x07</state>
+        </option>
+        <option>
+          <name>CodeBankRegMask</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>PDATA 8-15 register address</name>
+          <state>0x93</state>
+        </option>
+        <option>
+          <name>PDATA 16-31 register address</name>
+          <state></state>
+        </option>
+        <option>
+          <name>General Far22 Heap Size</name>
+          <state>0xFFF</state>
+        </option>
+        <option>
+          <name>GeneralMisraVer</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>GeneralMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>ICC8051</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>7</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>CCOptSizeSpeedSlave</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCOptimizationSlave</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>CCDefines</name>
+          <state>xNWK_AUTO_POLL</state>
+          <state>ZTOOL_P1</state>
+          <state>MT_TASK</state>
+          <state>MT_SYS_FUNC</state>
+          <state>MT_ZDO_FUNC</state>
+          <state>xLCD_SUPPORTED=DEBUG</state>
+          <state>xPOWER_SAVING</state>
+        </option>
+        <option>
+          <name>CCPreprocFile</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocComments</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCPreprocLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCListCFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMnemonics</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListCMessages</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCListAssSource</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCEnableRemarks</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCDiagSuppress</name>
+          <state>Pe001,Pa010</state>
+        </option>
+        <option>
+          <name>CCDiagRemark</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagWarning</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDiagError</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>LangConform</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CharIs</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCRequirePrototypes</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCMultibyteSupport</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCMigrationPreprocExtentions</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCAllowList</name>
+          <version>1</version>
+          <state>11101</state>
+        </option>
+        <option>
+          <name>CCObjUseModuleName</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCObjModuleName</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCDebugInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDptr</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCDataMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCodeMemoryModel</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCCallingConvention</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCConstantPlacement</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OCCNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Extended stack</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCDiagWarnAreErr</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCCompilerRuntimeInfo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>RomMonBpPadding</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PreInclude</name>
+          <state></state>
+        </option>
+        <option>
+          <name>CCLibConfigHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCLangSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoUBROFMessages</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CompilerMisraOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Compiler Extra Options Edit</name>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wEndev.cfg</state>
+          <state>-f $PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wConfig.cfg</state>
+        </option>
+        <option>
+          <name>CCIncludePath2</name>
+          <state>$PROJ_DIR$</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530</state>
+          <state>$PROJ_DIR$\..\Source</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\hal\target\OPEN2530</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\mt</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\include</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\osal\mcu\ccsoc</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\saddr</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\services\sdata</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\af</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sapi</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sec</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\sys</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac</state>
+          <state>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w</state>
+        </option>
+        <option>
+          <name>CCStdIncCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCStdIncludePath</name>
+          <state>$TOOLKIT_DIR$\INC\</state>
+          <state>$TOOLKIT_DIR$\INC\CLIB\</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules98</name>
+          <version>0</version>
+          <state>1000111110110101101110011100111111101110011011000101110111101101100111111111111100110011111001110111001111111111111111111111111</state>
+        </option>
+        <option>
+          <name>CCOverrideModuleTypeDefault</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleType</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CCRadioModuleTypeSlave</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevel</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CCOptStrategy</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CCOptLevelSlave</name>
+          <state>3</state>
+        </option>
+        <option>
+          <name>CompilerMisraRules04</name>
+          <version>0</version>
+          <state>111101110010111111111000110111111111111111111111111110010111101111010101111111111111111111111111101111111011111001111011111011111111111111111</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>A8051</name>
+      <archiveVersion>2</archiveVersion>
+      <data>
+        <version>4</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>OAProcessorVariant</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Generated Preproc defines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AObjPrefix</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>$FILE_BNAME$.r51</state>
+        </option>
+        <option>
+          <name>ACaseSensitivity</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacroChars</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Asm multibyte support</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Debug</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AList</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AListHeader</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AListing</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Includes</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacDefs</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MacExps</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>MacExec</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OnlyAssed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>MultiLine</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoStruct</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>TabSpacing</name>
+          <state>8</state>
+        </option>
+        <option>
+          <name>AXRef</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDefines</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefInternal</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AXRefDual</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AIncludes</name>
+          <state>$TOOLKIT_DIR$\inc\</state>
+          <state>$TOOLKIT_DIR$\src\lib</state>
+        </option>
+        <option>
+          <name>ADefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnEnable</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnWhat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AWarnOne</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange1</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AWarnRange2</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Check</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>Assembler Extra Options Edit</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AMaxErrOn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>AMaxErrNum</name>
+          <state>100</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>CUSTOM</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <extensions></extensions>
+        <cmdline></cmdline>
+      </data>
+    </settings>
+    <settings>
+      <name>BICOMP</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+    <settings>
+      <name>BUILDACTION</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <prebuild></prebuild>
+        <postbuild></postbuild>
+      </data>
+    </settings>
+    <settings>
+      <name>XLINK</name>
+      <archiveVersion>3</archiveVersion>
+      <data>
+        <version>17</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XInfineonPFlashCacheBug</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XOutOverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OutputFile</name>
+          <state>SensorNode.d51</state>
+        </option>
+        <option>
+          <name>OutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>FormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>SecondaryOutputFile</name>
+          <state>(None for the selected format)</state>
+        </option>
+        <option>
+          <name>XDefines</name>
+          <state></state>
+        </option>
+        <option>
+          <name>AlwaysOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlapWarnings</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>NoGlobalCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XList</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>SegmentMap</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ListSymbols</name>
+          <state>2</state>
+        </option>
+        <option>
+          <name>PageLengthCheck</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>PageLength</name>
+          <state>80</state>
+        </option>
+        <option>
+          <name>XIncludes</name>
+          <state>$TOOLKIT_DIR$\LIB\</state>
+        </option>
+        <option>
+          <name>ModuleStatus</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XclOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XclFile</name>
+          <state>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8w2530.xcl</state>
+        </option>
+        <option>
+          <name>XclFileSlave</name>
+          <state></state>
+        </option>
+        <option>
+          <name>Config Include Dir</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLink Dptr Switch mask</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHXNrOfVirtualRegisters</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OHX DPS Address</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XLINK Dptr Addresses</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Code Banking</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>OXLibIOConfig</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>DoFill</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>FillerByte</name>
+          <state>0xFF</state>
+        </option>
+        <option>
+          <name>DoCrc</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcSize</name>
+          <version>0</version>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcAlgo</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcPoly</name>
+          <state>0x11021</state>
+        </option>
+        <option>
+          <name>CrcCompl</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RangeCheckAlternatives</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressAllWarn</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>SuppressDiags</name>
+          <state>e24</state>
+        </option>
+        <option>
+          <name>TreatAsWarn</name>
+          <state></state>
+        </option>
+        <option>
+          <name>TreatAsErr</name>
+          <state></state>
+        </option>
+        <option>
+          <name>ModuleLocalSym</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>CrcBitOrder</name>
+          <version>0</version>
+          <state>0</state>
+        </option>
+        <option>
+          <name>IncludeSuppressed</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ModuleSummary</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabel</name>
+          <state>__program_start</state>
+        </option>
+        <option>
+          <name>DebugInformation</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RuntimeControl</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>IoEmulation</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>AllowExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>GenerateExtraOutput</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>XExtraOutOverride</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>ExtraOutputFile</name>
+          <state>SensorNode.hex</state>
+        </option>
+        <option>
+          <name>ExtraOutputFormat</name>
+          <version>11</version>
+          <state>23</state>
+        </option>
+        <option>
+          <name>ExtraFormatVariant</name>
+          <version>8</version>
+          <state>2</state>
+        </option>
+        <option>
+          <name>xcOverrideProgramEntryLabel</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>xcProgramEntryLabelSelect</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>ListOutputFormat</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>BufferedTermOutput</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>OverlaySystemMap</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>RawBinaryFile</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySymbol</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinarySegment</name>
+          <state></state>
+        </option>
+        <option>
+          <name>RawBinaryAlign</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XLinkMisraHandler</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XcRTLibraryFile</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Idata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Ext Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Pdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Stack Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Xdata Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Far Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Huge Heap Size</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Check</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>Linker Extra Options Edit</name>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\EndDevice-Pro.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TI2530DB\bin\Security.lib</state>
+          <state>-C $PROJ_DIR$\..\..\ZStack\Projects\zstack\Libraries\TIMAC\bin\TIMAC-CC2530.lib</state>
+        </option>
+        <option>
+          <name>CrcAlign</name>
+          <state>1</state>
+        </option>
+        <option>
+          <name>CrcInitialValue</name>
+          <state>0x0</state>
+        </option>
+        <option>
+          <name>Linker Far22 Heap Size</name>
+          <state>1</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>XAR</name>
+      <archiveVersion>1</archiveVersion>
+      <data>
+        <version>0</version>
+        <wantNonLocal>1</wantNonLocal>
+        <debug>1</debug>
+        <option>
+          <name>XARInputs</name>
+          <state></state>
+        </option>
+        <option>
+          <name>XAROverride</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAR Standard name</name>
+          <state>0</state>
+        </option>
+        <option>
+          <name>XAROutput</name>
+          <state>###Uninitialized###</state>
+        </option>
+      </data>
+    </settings>
+    <settings>
+      <name>BILINK</name>
+      <archiveVersion>0</archiveVersion>
+      <data/>
+    </settings>
+  </configuration>
+  <group>
+    <name>App</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\fc04.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\Source\OSAL_SensorNode.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\power.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\Source\SensorNode.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\Source\SensorNode.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\Source\SensorNode_data.c</name>
+    </file>
+  </group>
+  <group>
+    <name>HAL</name>
+    <group>
+      <name>Common</name>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\common\hal_assert.c</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\common\hal_drivers.c</name>
+      </file>
+    </group>
+    <group>
+      <name>Include</name>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_adc.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_assert.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_board.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_ccm.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_defs.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_drivers.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_flash.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_key.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_lcd.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_led.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_sleep.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_timer.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\hal\include\hal_uart.h</name>
+      </file>
+    </group>
+    <group>
+      <name>Target</name>
+      <group>
+        <name>CC2530EB</name>
+        <group>
+          <name>Config</name>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_board_cfg.h</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\hal_outboard_cfg.h</name>
+          </file>
+        </group>
+        <group>
+          <name>Drivers</name>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_adc_OPEN.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_dma.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_flash.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_key_OPEN.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_lcd.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_led.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_sleep.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_startup.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\OPEN2530\hal_timer_OPEN.c</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_uart.c</name>
+          </file>
+        </group>
+        <group>
+          <name>Includes</name>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_aes.h</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_dma.h</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_mcu.h</name>
+          </file>
+          <file>
+            <name>$PROJ_DIR$\..\..\ZStack\Components\hal\target\CC2530EB\hal_types.h</name>
+          </file>
+        </group>
+      </group>
+    </group>
+  </group>
+  <group>
+    <name>MAC</name>
+    <group>
+      <name>High Level</name>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level\mac_cfg.c</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level\mac_high_level.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level\mac_pib.c</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level\mac_pib.h</name>
+      </file>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\high_level\mac_spec.h</name>
+      </file>
+    </group>
+    <group>
+      <name>Include</name>
+      <file>
+        <name>$PROJ_DIR$\..\..\ZStack\Components\mac\include\mac_api.h</name>
+      </file>
+    </group>
+    <group>
+      <name>Low Level</name>
+      <group>
+        <name>Common</name>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_assert.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_autopend.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_autopend.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_backoff_timer.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_backoff_timer.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_low_level.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_low_level.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_radio.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_radio.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_rx.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_rx.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_rx_onoff.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_rx_onoff.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_sleep.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_sleep.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_tx.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\mac_tx.h</name>
+        </file>
+      </group>
+      <group>
+        <name>System</name>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_csp_tx.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_csp_tx.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_mcu.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_mcu.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_mem.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_mem.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_radio_defs.c</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_radio_defs.h</name>
+        </file>
+        <file>
+          <name>$PROJ_DIR$\..\..\ZStack\Components\mac\low_level\srf04\single_chip\mac_rffrontend.c</name>
+        </file>
+      </group>
+    </group>
+  </group>
+  <group>
+    <name>MT</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\DebugTrace.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\DebugTrace.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_AF.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_AF.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_APP.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_APP.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_DEBUG.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_DEBUG.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_NWK.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_NWK.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_RPC.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_SAPI.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_SAPI.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_SYS.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_SYS.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_TASK.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_TASK.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_UART.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\mt_uart.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_UTIL.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_UTIL.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_VERSION.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_VERSION.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_ZDO.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\mt\MT_ZDO.h</name>
+    </file>
+  </group>
+  <group>
+    <name>NWK</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\AddrMgr.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\APS.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\aps_frag.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\aps_groups.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\aps_util.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\APSMEDE.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\AssocList.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\BindingTable.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\NLMEDE.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\nwk.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\nwk_bufs.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\nwk_globals.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\nwk_globals.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\nwk_util.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\reflecttrack.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\rtg.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\stub_aps.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\nwk\stub_aps.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\sys\ZGlobals.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\sys\ZGlobals.h</name>
+    </file>
+  </group>
+  <group>
+    <name>OSAL</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\comdef.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\common\OSAL.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\common\OSAL_Clock.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_Clock.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\mcu\cc2530\OSAL_Math.s51</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\common\OSAL_Memory.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_Memory.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\mcu\cc2530\OSAL_Nv.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_Nv.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\common\OSAL_PwrMgr.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_PwrMgr.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_Tasks.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\common\OSAL_Timers.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\OSAL_Timers.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\osal\include\ZComDef.h</name>
+    </file>
+  </group>
+  <group>
+    <name>Profile</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\af\AF.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zcl\zcl.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zcl\zcl.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zcl\zcl_general.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zcl\zcl_general.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\HomeAutomation\Source\zcl_ha.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\HomeAutomation\Source\zcl_ha.h</name>
+    </file>
+  </group>
+  <group>
+    <name>Security</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\sec\ssp.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\sec\ssp_hash.h</name>
+    </file>
+  </group>
+  <group>
+    <name>Services</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\services\saddr\saddr.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\services\saddr\saddr.h</name>
+    </file>
+  </group>
+  <group>
+    <name>Tools</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8w2530.xcl</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wConfig.cfg</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wCoord.cfg</name>
+      <excluded>
+        <configuration>RouterEB</configuration>
+        <configuration>EndDeviceEB</configuration>
+      </excluded>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wEndev.cfg</name>
+      <excluded>
+        <configuration>CoordinatorEB</configuration>
+        <configuration>RouterEB</configuration>
+      </excluded>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wRouter.cfg</name>
+      <excluded>
+        <configuration>CoordinatorEB</configuration>
+        <configuration>EndDeviceEB</configuration>
+      </excluded>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\Tools\CC2530DB\f8wZCL.cfg</name>
+    </file>
+  </group>
+  <group>
+    <name>ZDO</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDApp.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDApp.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDConfig.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDConfig.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDNwkMgr.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDNwkMgr.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDObject.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDObject.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDProfile.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDProfile.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDSecMgr.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\stack\zdo\ZDSecMgr.h</name>
+    </file>
+  </group>
+  <group>
+    <name>ZMac</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w\zmac.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\zmac\ZMAC.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w\zmac_cb.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Components\zmac\f8w\zmac_internal.h</name>
+    </file>
+  </group>
+  <group>
+    <name>ZMain</name>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB\chipcon_cstartup.s51</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB\OnBoard.c</name>
+      <excluded>
+        <configuration>RouterEB</configuration>
+      </excluded>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB\OnBoard.h</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Target_OPEN2530\OnNoBoard.c</name>
+    </file>
+    <file>
+      <name>$PROJ_DIR$\..\..\ZStack\Projects\zstack\ZMain\TI2530DB\ZMain.c</name>
+    </file>
+  </group>
+</project>
+
+

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.eww
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.eww (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/OPEN2530/SensorNode.eww Thu Apr 24 16:09:16 2014
@@ -1,0 +1,26 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+
+<workspace>
+  <project>
+    <path>$WS_DIR$\SensorNode.ewp</path>
+  </project>
+  <batchBuild>
+    <batchDefinition>
+      <name>ALL</name>
+      <member>
+        <project>SensorNode</project>
+        <configuration>CoordinatorEB</configuration>
+      </member>
+      <member>
+        <project>SensorNode</project>
+        <configuration>RouterEB</configuration>
+      </member>
+      <member>
+        <project>SensorNode</project>
+        <configuration>EndDeviceEB</configuration>
+      </member>
+    </batchDefinition>
+  </batchBuild>
+</workspace>
+
+

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/OSAL_SensorNode.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/OSAL_SensorNode.c (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/OSAL_SensorNode.c Thu Apr 24 16:09:16 2014
@@ -1,0 +1,153 @@
+/**************************************************************************************************
+  Filename:       OSAL_SensorNode.c
+  Revised:        $Date: 2008-02-07 12:10:00 -0800 (Thu, 07 Feb 2008) $
+  Revision:       $Revision: 16360 $
+
+  Description:    This file contains all the settings and other functions
+                  that the user should set and change.
+
+
+  Copyright 2004-2007 Texas Instruments Incorporated. All rights reserved.
+
+  IMPORTANT: Your use of this Software is limited to those specific rights
+  granted under the terms of a software license agreement between the user
+  who downloaded the software, his/her employer (which must be your employer)
+  and Texas Instruments Incorporated (the "License").  You may not use this
+  Software unless you agree to abide by the terms of the License. The License
+  limits your use, and you acknowledge, that the Software may not be modified,
+  copied or distributed unless embedded on a Texas Instruments microcontroller
+  or used solely and exclusively in conjunction with a Texas Instruments radio
+  frequency transceiver, which is integrated into your product.  Other than for
+  the foregoing purpose, you may not use, reproduce, copy, prepare derivative
+  works of, modify, distribute, perform, display or sell this Software and/or
+  its documentation for any purpose.
+
+  YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
+  PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+  INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
+  NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
+  TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
+  NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
+  LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
+  INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
+  OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
+  OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
+  (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
+
+  Should you have any questions regarding your right to use this Software,
+  contact Texas Instruments Incorporated at www.TI.com.
+**************************************************************************************************/
+
+/*********************************************************************
+ * INCLUDES
+ */
+
+#include "ZComDef.h"
+#include "hal_drivers.h"
+#include "OSAL.h"
+#include "OSAL_Tasks.h"
+
+
+#if defined ( MT_TASK )
+  #include "MT.h"
+  #include "MT_TASK.h"
+#endif
+
+#include "nwk.h"
+#include "APS.h"
+#include "ZDApp.h"
+#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
+  #include "ZDNwkMgr.h"
+#endif
+#if defined ( ZIGBEE_FRAGMENTATION )
+  #include "aps_frag.h"
+#endif
+
+#include "SensorNode.h"
+
+#if defined ( FC04 )
+#include "fc04.h"
+#endif
+
+#if defined ( POWER )
+#include "power.h"
+#endif
+/*********************************************************************
+ * GLOBAL VARIABLES
+ */
+
+// The order in this table must be identical to the task initialization calls below in osalInitTask.
+const pTaskEventHandlerFn tasksArr[] = {
+  macEventLoop,
+  nwk_event_loop,
+  Hal_ProcessEvent,
+#if defined( MT_TASK )
+  MT_ProcessEvent,
+#endif
+  APS_event_loop,
+#if defined ( ZIGBEE_FRAGMENTATION )
+  APSF_ProcessEvent,
+#endif
+  ZDApp_event_loop,
+#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
+  ZDNwkMgr_event_loop,
+#endif
+  zcl_event_loop,
+#if defined ( FC04 )
+  FC04_loop,
+#endif
+#if defined ( POWER )
+  Power_EventLoop,
+#endif
+  SensorNode_event_loop
+};
+
+const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] );
+uint16 *tasksEvents;
+
+/*********************************************************************
+ * FUNCTIONS
+ *********************************************************************/
+
+/*********************************************************************
+ * @fn      osalInitTasks
+ *
+ * @brief   This function invokes the initialization function for each task.
+ *
+ * @param   void
+ *
+ * @return  none
+ */
+void osalInitTasks( void )
+{
+  uint8 taskID = 0;
+
+  tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);
+  osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));
+
+  macTaskInit( taskID++ );
+  nwk_init( taskID++ );
+  Hal_Init( taskID++ );
+#if defined( MT_TASK )
+  MT_TaskInit( taskID++ );
+#endif
+  APS_Init( taskID++ );
+#if defined ( ZIGBEE_FRAGMENTATION )
+  APSF_Init( taskID++ );
+#endif
+  ZDApp_Init( taskID++ );
+#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
+  ZDNwkMgr_Init( taskID++ );
+#endif
+  zcl_Init( taskID++ );
+#if defined ( FC04 )
+  FC04_Init( taskID++ );
+#endif
+#if defined ( POWER )
+  Power_Init( taskID++ );
+#endif
+  SensorNode_Init( taskID );
+}
+
+/*********************************************************************
+*********************************************************************/

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.c (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.c Thu Apr 24 16:09:16 2014
@@ -1,0 +1,1284 @@
+/*******************************************************************************
+  Filename:       SensorNode.c
+  Revised:        $Date: 2009-03-18 15:56:27 -0700 (Wed, 18 Mar 2009) $
+  Revision:       $Revision: 19453 $
+
+Three Endpoints: 
+EP1: Power
+EP2: PIR
+EP3: NOISE
+
+*/
+
+/*********************************************************************
+ * INCLUDES
+ */
+#include "ZComDef.h"
+#include "OSAL.h"
+#include "AF.h"
+#include "ZDApp.h"
+
+#include "zcl.h"
+#include "zcl_general.h"
+#include "zcl_ha.h"
+
+#include "SensorNode.h"
+
+#include "OnBoard.h"
+
+/* HAL */
+//#include "hal_lcd.h"
+#include "hal_led.h"
+#include "hal_key.h"
+
+#if defined ( FC04 )
+#include "fc04.h"
+#include "stdio.h"
+#endif
+
+#if defined ( POWER )
+#include "power.h"
+#include "stdio.h"
+#endif
+
+#ifdef REFLECTOR
+#include "math.h"
+#endif
+
+/*********************************************************************
+ * MACROS
+ */
+
+#define zcl_MandatoryReportableAttribute( a ) ( a.attr.attrId == ATTRID_IOV_BASIC_PRESENT_VALUE )
+
+/*********************************************************************
+ * CONSTANTS
+ */
+
+#ifdef ZCL_REPORT
+#define ZCL_MIN_REPORTING_INTERVAL    1
+#endif
+
+/*********************************************************************
+ * TYPEDEFS
+ */
+
+/*********************************************************************
+ * GLOBAL VARIABLES
+ */
+
+/*********************************************************************
+ * EXTERNAL VARIABLES
+ */
+/*********************************************************************
+ * EXTERNAL FUNCTIONS
+ */
+
+/*********************************************************************
+ * LOCAL VARIABLES
+ */
+byte SensorNode_TaskID;   // Task ID for internal task/event processing
+                          // This variable will be received when
+                          // SensorNode_Init() is called.
+
+// Test Endpoint to allow SYS_APP_MSGs
+static endPointDesc_t SensorNode_TestEp =
+{
+  20,                                 // Test endpoint
+  &SensorNode_TaskID,
+  (SimpleDescriptionFormat_t *)NULL,  // No Simple description for this test endpoint
+  (afNetworkLatencyReq_t)0            // No Network Latency req
+};
+
+#ifdef ZCL_REPORT
+static afAddrType_t SensorNode_DstAddr; //ZCL_REPORT
+zclReportingStatus_t PresentValue_RepStatus[SENSORNODE_MAX_ENDPOINT];
+
+static uint16 AnalogInputReportTimeoutPeriod = 10000;
+static uint8 numAttrib = 1;                               // number of attributes in report for each EP
+
+static zclReportCmd_t *pAnalogInputReportCmd[SENSORNODE_MAX_ENDPOINT];
+
+//uint8 seqNumRep = 0; //global sequence number???
+#endif
+
+#ifdef POWER
+extern SingleSensingConf_t Voltage;
+extern SingleSensingConf_t Current[CHANNELS_NUMBER];
+#endif
+/*********************************************************************
+ * LOCAL FUNCTIONS
+ */
+void SensorNode_HandleKeys( byte keys );
+static void SensorNode_ProcessAttributeReporting( uint8 attribute );
+
+//General Cluster Callback functions
+static void SensorNode_BasicResetCB( void );
+static void SensorNode_IdentifyCB( zclIdentify_t *pCmd );
+static void SensorNode_IdentifyQueryRspCB( zclIdentifyQueryRsp_t *pRsp );
+
+#ifdef ZCL_REPORT
+//Send the Report
+static uint8 SensorNode_SendTheReport( uint8 index ); //TODO
+static uint16 SensorNode_GetMinEvent( uint8 EndPoint ); //TODO
+static uint16 SensorNode_GetMaxEvent( uint8 EndPoint ); //TODO
+
+// Report Settings
+static uint8 SensorNode_ProcessInConfigReportCmd( zclIncomingMsg_t *pInMsg );
+//Local functions for setting reporting
+static uint8 SensorNode_SetAttrTimeoutPeriod( zclAttribute_t *pAttr, 
+                                              zclCfgReportRec_t *cfgReportRec );
+static uint8 SensorNode_SetAttrReportInterval( zclAttribute_t *pAttr, 
+                                              zclCfgReportRec_t *cfgReportRec, byte EndPoint );
+static uint8 SensorNode_ProcessInReportCmd( zclIncomingMsg_t *pInMsg );
+#endif
+
+static void SensorNode_ProcessIdentifyTimeChange( void );
+
+static void SensorNode_ProcessIncomingMsg( zclIncomingMsg_t *msg );
+
+#ifdef ZCL_READ
+static uint8 SensorNode_ProcessInReadRspCmd( zclIncomingMsg_t *pInMsg );
+#endif
+
+#ifdef ZCL_WRITE
+static uint8 SensorNode_ProcessInWriteRspCmd( zclIncomingMsg_t *pInMsg );
+#endif
+
+static uint8 SensorNode_ProcessInDefaultRspCmd( zclIncomingMsg_t *pInMsg );
+
+#ifdef ZCL_DISCOVER
+static uint8 SensorNode_ProcessInDiscRspCmd( zclIncomingMsg_t *pInMsg );
+#endif
+
+#ifdef FC04
+static void FC04_ProcessIncomingMsg( fc04IncomingMsg_t *pInMsg );
+#endif
+
+#ifdef POWER
+static void Power_ProcessIncomingMsg( powerIncomingMsg_t *pInMsg );
+#endif
+
+/*********************************************************************
+ * ZCL General Profile Callback table
+ */
+static zclGeneral_AppCallbacks_t SensorNode_CmdCallbacks =
+{
+  SensorNode_BasicResetCB,              // Basic Cluster Reset command
+  SensorNode_IdentifyCB,                // Identify command  
+  SensorNode_IdentifyQueryRspCB,        // Identify Query Response command
+  NULL,                                     // On/Off cluster command
+  NULL,                                     // Level Control Move to Level command
+  NULL,                                     // Level Control Move command
+  NULL,                                     // Level Control Step command
+  NULL,                                     // Group Response commands
+  NULL,                                     // Scene Store Request command
+  NULL,                                     // Scene Recall Request command
+  NULL,                                     // Scene Response command
+  NULL,                                     // Alarm (Response) command
+  NULL,                                     // RSSI Location commands
+  NULL,                                     // RSSI Location Response commands
+};
+
+
+/*********************************************************************
+ * @fn          SensorNode_Init
+ *
+ * @brief       Initialization function for the zclGeneral layer.
+ *
+ * @param       none
+ *
+ * @return      none
+ */
+void SensorNode_Init( byte task_id )
+{
+  SensorNode_TaskID = task_id;
+  
+#ifdef ZCL_REPORT
+  // Find Destination Address in the Binding Table (Enable REFLECTOR)
+  SensorNode_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;
+#endif // ZCL_REPORT
+  
+  // This app is part of the Home Automation Profile
+  zclHA_Init( &SensorNode_SimpleDesc1 );
+  zclHA_Init( &SensorNode_SimpleDesc2 );
+  zclHA_Init( &SensorNode_SimpleDesc3 );
+//  zclHA_Init( &SensorNode_SimpleDesc4 );
+//  zclHA_Init( &SensorNode_SimpleDesc5 );
+//  zclHA_Init( &SensorNode_SimpleDesc6 );
+//  zclHA_Init( &SensorNode_SimpleDesc7 );
+//  zclHA_Init( &SensorNode_SimpleDesc8 );
+  
+  // Register the ZCL General Cluster Library callback functions
+  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT1, &SensorNode_CmdCallbacks );
+  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT2, &SensorNode_CmdCallbacks );
+  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT3, &SensorNode_CmdCallbacks );
+//  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT4, &SensorNode_CmdCallbacks );
+//  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT5, &SensorNode_CmdCallbacks );
+//  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT6, &SensorNode_CmdCallbacks );
+//  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT7, &SensorNode_CmdCallbacks );
+//  zclGeneral_RegisterCmdCallbacks( SensorNode_ENDPOINT8, &SensorNode_CmdCallbacks );
+ 
+  // Register the application's attribute list
+  zcl_registerAttrList( SensorNode_ENDPOINT1, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP1 );
+  zcl_registerAttrList( SensorNode_ENDPOINT2, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP2 );
+  zcl_registerAttrList( SensorNode_ENDPOINT3, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP3 );
+//  zcl_registerAttrList( SensorNode_ENDPOINT4, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP4 );
+//  zcl_registerAttrList( SensorNode_ENDPOINT5, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP5 );
+//  zcl_registerAttrList( SensorNode_ENDPOINT6, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP6 );
+//  zcl_registerAttrList( SensorNode_ENDPOINT7, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP7 );
+//  zcl_registerAttrList( SensorNode_ENDPOINT8, SENSORNODE_MAX_ATTRIBUTES, SensorNode_Attrs_EP8 );
+  
+  // Register the Application to receive the unprocessed Foundation command/response messages
+  zcl_registerForMsg( SensorNode_TaskID );
+  
+  // Register for all key events - This app will handle all key events
+  RegisterForKeys( SensorNode_TaskID );
+
+  // Register for a test endpoint
+  afRegister( &SensorNode_TestEp );
+  
+#ifdef ZCL_REPORT
+  
+  for ( uint8 i=0; i < SENSORNODE_MAX_ENDPOINT; i++ )
+  {
+    SensorNode_EP_PresentValue[i] = 0.0;
+    PresentValue_RepStatus[i].value = &SensorNode_EP_PresentValue[i];
+    PresentValue_RepStatus[i].Reporting_enabled = NO_REPORTING; //TODO
+    
+    pAnalogInputReportCmd[i] = (zclReportCmd_t *)osal_mem_alloc( sizeof( zclReportCmd_t ) + ( numAttrib * sizeof( zclReport_t ) ) );
+    
+    if ( pAnalogInputReportCmd[i] != NULL )
+    {
+      pAnalogInputReportCmd[i]->numAttr = numAttrib;
+      // Set up the first attribute
+      pAnalogInputReportCmd[i]->attrList[0].attrID = ATTRID_IOV_BASIC_PRESENT_VALUE;
+      pAnalogInputReportCmd[i]->attrList[0].dataType = ZCL_DATATYPE_SINGLE_PREC;
+      pAnalogInputReportCmd[i]->attrList[0].attrData = PresentValue_RepStatus[i].value;
+    }
+  }
+  
+#endif //ZCL_REPORT
+  
+#ifdef FC04
+  Start_Capture ( SensorNode_TaskID );
+#endif //FC04
+#ifdef POWER 
+  osal_start_timerEx( SensorNode_TaskID, CONF_THREE_STATE_EVT, CONF_THREE_STATE_TIMEOUT );
+#endif //POWER
+}
+
+/*********************************************************************
+ * @fn          SensorNode_event_loop
+ *
+ * @brief       Event Loop Processor for zclGeneral.
+ *
+ * @param       none
+ *
+ * @return      none
+ */
+uint16 SensorNode_event_loop( uint8 task_id, uint16 events )
+{
+  afIncomingMSGPacket_t *MSGpkt;
+  
+  (void)task_id;  // Intentionally unreferenced parameter
+  
+  if ( events & SYS_EVENT_MSG )
+  {
+      while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SensorNode_TaskID )) )
+      {
+        switch ( MSGpkt->hdr.event )
+        {
+          case ZCL_INCOMING_MSG:
+          // Incoming ZCL Foundation command/response messages
+          SensorNode_ProcessIncomingMsg( (zclIncomingMsg_t *)MSGpkt );
+          break;
+          
+          case KEY_CHANGE:
+            SensorNode_HandleKeys( ((keyChange_t *)MSGpkt)->keys );
+          break;
+#ifdef FC04         
+          case FC04_INCOMING_MSG:
+            FC04_ProcessIncomingMsg( (fc04IncomingMsg_t *)MSGpkt );
+          break;
+#endif
+#ifdef POWER         
+          case POWER_INCOMING_MSG:
+            Power_ProcessIncomingMsg( (powerIncomingMsg_t *)MSGpkt );
+          break;
+#endif
+          default:
+          break;
+        }
+        // Release the memory
+        osal_msg_deallocate( (uint8 *)MSGpkt );
+      }
+      // return unprocessed events
+      return (events ^ SYS_EVENT_MSG);
+  }
+  
+  if ( events & SensorNode_IDENTIFY_TIMEOUT_EVT )
+  {
+      if ( SensorNode_IdentifyTime > 0 )
+      SensorNode_IdentifyTime--;
+      SensorNode_ProcessIdentifyTimeChange();
+
+      return ( events ^ SensorNode_IDENTIFY_TIMEOUT_EVT );
+  }
+#ifdef ZCL_REPORT     
+  //Report PresentValueEP1 min //TODO
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MIN_EVT )
+  {  
+    uint8 index = SensorNode_ENDPOINT1-1;
+    
+//    if ( PresentValue_RepStatus[index].next_value != 0 ) //a sample is ready to send
+//    {
+//      SensorNode_EP_PresentValue[index] = PresentValue_RepStatus[index].next_value;
+//      SensorNode_SendTheReport ( index ); 
+//      PresentValue_RepStatus[index].next_value = 0;
+//    }
+//    else //no sample stored
+//    {
+      PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_READY_TO_SEND;
+      osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MAX_EVT, 
+                         (PresentValue_RepStatus[index].maxReportInt-PresentValue_RepStatus[index].minReportInt)*1000);
+//    }
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MIN_EVT );
+  }
+  
+  //Report PresentValueEP1 max
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MAX_EVT )
+  {   
+     uint8 index = SensorNode_ENDPOINT1-1;
+    
+     if ( pAnalogInputReportCmd[index] != NULL )
+     {
+        //Send the report
+        uint8 status = zcl_SendReportCmd( (index+1), &SensorNode_DstAddr,
+                     ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC, pAnalogInputReportCmd[index],
+                     ZCL_FRAME_SERVER_CLIENT_DIR, 1, PresentValue_RepStatus[index].seqNumRep ); 
+        
+        PresentValue_RepStatus[index].seqNumRep++;
+     }
+     
+     PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_NO_READY_TO_SEND;
+     
+     osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MIN_EVT,
+                       PresentValue_RepStatus[index].minReportInt*1000);
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MAX_EVT );
+  }
+
+//Report PresentValueEP2 min //TODO
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MIN_EVT )
+  {  
+    uint8 index = SensorNode_ENDPOINT2-1;
+    
+//    if ( PresentValue_RepStatus[index].next_value != 0 ) //a sample is ready to send
+//    {
+//      SensorNode_EP_PresentValue[index] = PresentValue_RepStatus[index].next_value;
+//      SensorNode_SendTheReport ( index ); 
+//      PresentValue_RepStatus[index].next_value = 0;
+//    }
+//    else //no sample stored
+//    {
+      PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_READY_TO_SEND;
+      osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MAX_EVT, 
+                         (PresentValue_RepStatus[index].maxReportInt-PresentValue_RepStatus[index].minReportInt)*1000);
+//    }
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MIN_EVT );
+  }
+  
+  //Report PresentValueEP2 max
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MAX_EVT )
+  {   
+    uint8 index = SensorNode_ENDPOINT2-1;
+    
+     if ( pAnalogInputReportCmd[index] != NULL )
+     {
+        //Send the report
+        uint8 status = zcl_SendReportCmd( (index+1), &SensorNode_DstAddr,
+                     ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC, pAnalogInputReportCmd[index],
+                     ZCL_FRAME_SERVER_CLIENT_DIR, 1, PresentValue_RepStatus[index].seqNumRep ); 
+        
+        PresentValue_RepStatus[index].seqNumRep++;
+     }
+     
+     PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_NO_READY_TO_SEND;
+     
+     osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MIN_EVT,
+                       PresentValue_RepStatus[index].minReportInt*1000);
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MAX_EVT );
+  }
+  
+  //Report PresentValueEP3 min //TODO
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MIN_EVT )
+  {  
+    uint8 index = SensorNode_ENDPOINT3-1;
+    
+//    if ( PresentValue_RepStatus[index].next_value != 0 ) //a sample is ready to send
+//    {
+//      SensorNode_EP_PresentValue[index] = PresentValue_RepStatus[index].next_value;
+//      SensorNode_SendTheReport ( index ); 
+//      PresentValue_RepStatus[index].next_value = 0;
+//    }
+//    else //no sample stored
+//    {
+      PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_READY_TO_SEND;
+      osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MAX_EVT, 
+                         (PresentValue_RepStatus[index].maxReportInt-PresentValue_RepStatus[index].minReportInt)*1000);
+//    }
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MIN_EVT );
+  }
+  
+  //Report PresentValueEP3 max
+  if ( events & SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MAX_EVT )
+  {   
+    uint8 index = SensorNode_ENDPOINT3-1;
+    
+     if ( pAnalogInputReportCmd[index] != NULL )
+     {
+        //Send the report
+        uint8 status = zcl_SendReportCmd( (index+1), &SensorNode_DstAddr,
+                     ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC, pAnalogInputReportCmd[index],
+                     ZCL_FRAME_SERVER_CLIENT_DIR, 1, PresentValue_RepStatus[index].seqNumRep ); 
+        
+        PresentValue_RepStatus[index].seqNumRep++;
+     }
+     
+     PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_NO_READY_TO_SEND;
+     
+     osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MIN_EVT,
+                       PresentValue_RepStatus[index].minReportInt*1000);
+    
+    //Clear the event
+    return ( events ^ SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MAX_EVT );
+  }
+#endif
+  
+#ifdef POWER
+  if ( events & CONF_THREE_STATE_EVT )
+  {
+    Power_Start_Reading ( SensorNode_TaskID );
+    return ( events ^ CONF_THREE_STATE_EVT);
+  }
+#endif //POWER  
+/*
+#ifdef FC04
+//  if ( events & NEW_SAMPLES_READY )
+//  {  
+//    return ( events ^ NEW_SAMPLES_READY);
+//  }
+#endif
+*/
+  return 0; // Discard unknown events
+
+}
+
+#ifdef FC04
+/*********************************************************************
+ * @fn      FC04_ProcessIncomingMsg
+ *
+ * @brief   
+ *
+ * @param   
+ *
+ * @return  none
+ */
+
+static void FC04_ProcessIncomingMsg( fc04IncomingMsg_t *pInMsg )
+{
+  uint8 device = 0xFF;
+  
+  switch ( pInMsg->device )
+  {
+    case PIR:
+      device = EP2_PIR;
+//      printf("\nPIR: ");
+    break;
+    
+    case NOISE:
+      device = EP3_NOISE;
+//      printf("\nNOISE: ");
+    break;
+    
+    default:
+    break;
+  }
+  
+  if ( device != 0xFF )
+  {
+    SensorNode_EP_PresentValue[device] = (float)pInMsg->sample;
+    SensorNode_ProcessAttributeReporting( device );
+    
+//    printf(" %f", SensorNode_EP_PresentValue[device]);
+    
+    FC04_ResetCount( pInMsg->device );
+
+  }
+}
+#endif
+
+#ifdef POWER
+/*********************************************************************
+ * @fn      POWER_ProcessIncomingMsg
+ *
+ * @brief   
+ *
+ * @param   
+ *
+ * @return  none
+ */
+
+static void Power_ProcessIncomingMsg( powerIncomingMsg_t *pInMsg )
+{
+  uint8 channel = 0xFF;
+  
+  switch ( pInMsg->channel )
+  {
+    case CHANNEL0:
+      channel = EP1_CHANNEL0;
+    break;
+    
+    default:
+    break;
+  }
+  
+  if ( channel != 0xFF )
+  {
+    SensorNode_EP_PresentValue[channel] = pInMsg->realPower;
+
+    SensorNode_ProcessAttributeReporting( channel );
+    
+    float IRMS = pInMsg->IRMS;
+    float VRMS = pInMsg->VRMS;
+    printf("\n");
+    printf(" %f", IRMS);
+    printf(" %f", VRMS);
+    printf(" %f", SensorNode_EP_PresentValue[channel]);
+    printf(" %f", pInMsg->energy);
+ 
+  }
+  
+//  Power_Start_Reading ( SensorNode_TaskID ); //Restart sensing  
+}
+#endif
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessAttributeReporting
+ *
+ * @brief   
+ *
+ * @param   index
+ *
+ * @return  none
+ */
+
+static void SensorNode_ProcessAttributeReporting( uint8 attribute )
+{
+  switch( PresentValue_RepStatus[attribute].Reporting_enabled )
+      {
+        case NO_REPORTING:
+        //do something?
+        break;
+        
+        case REPORTING_ENABLED_NO_READY_TO_SEND:
+//        // Changes to 'Analog' Attribute
+//        if ( PresentValue_RepStatus[i].dataType )
+//        {
+//          if ( fabs(PresentValue_RepStatus[i].last_value - *PresentValue_RepStatus[i].value) >= PresentValue_RepStatus[i].ReportableChange )
+//          {
+//            PresentValue_RepStatus[i].next_value = SensorNode_EP_PresentValue[i];
+//          }
+//        }
+        break;
+        
+        case REPORTING_ENABLED_READY_TO_SEND:
+        if ( PresentValue_RepStatus[attribute].dataType )
+        {
+          if ( fabs(PresentValue_RepStatus[attribute].last_value - *PresentValue_RepStatus[attribute].value) >= PresentValue_RepStatus[attribute].ReportableChange )
+          {
+            SensorNode_SendTheReport ( attribute ); 
+          }
+        }
+        break;
+        
+        default:
+        break;
+      }
+}
+
+/*********************************************************************
+ * @fn      SensorNode_HandleKeys
+ *
+ * @brief   Handles all key events for this device.
+ *
+ * @param   keys - bit field for key events. Valid entries:
+ *                 HAL_KEY_SW_6
+ *                 HAL_KEY_SW_7
+ *
+ * @return  none
+ */
+
+static void SensorNode_HandleKeys( byte keys )
+{
+
+    if ( keys & HAL_KEY_SW_6 )
+    {
+    }
+
+  if ( keys & HAL_KEY_SW_7 )
+    {
+    }
+}
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessIdentifyTimeChange
+ *
+ * @brief   Called to process any change to the IdentifyTime attribute.
+ *
+ * @param   none
+ *
+ * @return  none
+ */
+static void SensorNode_ProcessIdentifyTimeChange( void )
+{
+  if ( SensorNode_IdentifyTime > 0 )
+  {
+    osal_start_timerEx( SensorNode_TaskID, SensorNode_IDENTIFY_TIMEOUT_EVT, 1000 );
+    HalLedBlink ( HAL_LED_1, 0xFF, HAL_LED_DEFAULT_DUTY_CYCLE, HAL_LED_DEFAULT_FLASH_TIME );
+  }
+  else
+  {
+    HalLedSet ( HAL_LED_1, HAL_LED_MODE_ON );
+    osal_stop_timerEx( SensorNode_TaskID, SensorNode_IDENTIFY_TIMEOUT_EVT );
+  }
+}
+
+/*********************************************************************
+ * @fn      SensorNode_BasicResetCB
+ *
+ * @brief   Callback from the ZCL General Cluster Library
+ *          to set all the Basic Cluster attributes to default values.
+ *
+ * @param   none
+ *
+ * @return  none
+ */
+static void SensorNode_BasicResetCB( void )
+{
+  // Reset all attributes to default values
+  
+  for ( uint8 i=0; i < SENSORNODE_MAX_ENDPOINT; i++ )
+    *PresentValue_RepStatus[i].value = CONST_PRESENT_VALUE;
+  
+  //Analog Input Attributes
+//  SensorNode_EP1_PresentValue = CONST_PRESENT_VALUE;
+//  SensorNode_EP2_PresentValue = CONST_PRESENT_VALUE;
+}
+
+/*********************************************************************
+ * @fn      SensorNode_IdentifyCB
+ *
+ * @brief   Callback from the ZCL General Cluster Library when
+ *          it received an Identity Command for this application.
+ *
+ * @param   srcAddr - source address and endpoint of the response message
+ * @param   identifyTime - the number of seconds to identify yourself
+ *
+ * @return  none
+ */
+static void SensorNode_IdentifyCB( zclIdentify_t *pCmd )
+{
+  SensorNode_IdentifyTime = pCmd->identifyTime;
+  SensorNode_ProcessIdentifyTimeChange();
+}
+
+/*********************************************************************
+ * @fn      SensorNode_IdentifyQueryRspCB
+ *
+ * @brief   Callback from the ZCL General Cluster Library when
+ *          it received an Identity Query Response Command for this application.
+ *
+ * @param   srcAddr - requestor's address
+ * @param   timeout - number of seconds to identify yourself (valid for query response)
+ *
+ * @return  none
+ */
+static void SensorNode_IdentifyQueryRspCB(  zclIdentifyQueryRsp_t *pRsp )
+{
+  // Query Response (with timeout value)
+  (void)pRsp;
+}
+
+
+/****************************************************************************** 
+ * 
+ *  Functions for processing ZCL Foundation incoming Command/Response messages
+ *
+ *****************************************************************************/
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessIncomingMsg
+ *
+ * @brief   Process ZCL Foundation incoming message
+ *
+ * @param   pInMsg - pointer to the received message
+ *
+ * @return  none
+ */
+static void SensorNode_ProcessIncomingMsg( zclIncomingMsg_t *pInMsg)
+{
+  switch ( pInMsg->zclHdr.commandID )
+  {
+#ifdef ZCL_READ
+    case ZCL_CMD_READ_RSP:
+      SensorNode_ProcessInReadRspCmd( pInMsg );
+      break;
+#endif
+#ifdef ZCL_WRITE    
+    case ZCL_CMD_WRITE_RSP:
+      SensorNode_ProcessInWriteRspCmd( pInMsg );
+      break;
+#endif
+#ifdef ZCL_REPORT
+    
+    case ZCL_CMD_CONFIG_REPORT:
+      SensorNode_ProcessInConfigReportCmd( pInMsg );
+      break;
+    
+    case ZCL_CMD_CONFIG_REPORT_RSP:
+      //SensorNode_ProcessInConfigReportRspCmd( pInMsg );
+      break;
+    
+    case ZCL_CMD_READ_REPORT_CFG:
+      //SensorNode_ProcessInReadReportCfgCmd( pInMsg );
+      break;
+    
+    case ZCL_CMD_READ_REPORT_CFG_RSP:
+      //SensorNode_ProcessInReadReportCfgRspCmd( pInMsg );
+      break;
+    
+    case ZCL_CMD_REPORT:
+      SensorNode_ProcessInReportCmd( pInMsg );
+      break;
+#endif   
+    case ZCL_CMD_DEFAULT_RSP:
+      SensorNode_ProcessInDefaultRspCmd( pInMsg );
+      break;
+#ifdef ZCL_DISCOVER     
+    case ZCL_CMD_DISCOVER_RSP:
+      SensorNode_ProcessInDiscRspCmd( pInMsg );
+      break;
+#endif  
+    default:
+      break;
+  }
+  
+  if ( pInMsg->attrCmd )
+    osal_mem_free( pInMsg->attrCmd );
+}
+
+#ifdef ZCL_READ
+/*********************************************************************
+ * @fn      SensorNode_ProcessInReadRspCmd
+ *
+ * @brief   Process the "Profile" Read Response Command
+ *
+ * @param   pInMsg - incoming message to process
+ *
+ * @return  none
+ */
+static uint8 SensorNode_ProcessInReadRspCmd( zclIncomingMsg_t *pInMsg )
+{
+  zclReadRspCmd_t *readRspCmd;
+  uint8 i;
+
+  readRspCmd = (zclReadRspCmd_t *)pInMsg->attrCmd;
+  for (i = 0; i < readRspCmd->numAttr; i++)
+  {
+    // Notify the originator of the results of the original read attributes 
+    // attempt and, for each successfull request, the value of the requested 
+    // attribute
+  }
+
+  return TRUE; 
+}
+#endif // ZCL_READ
+
+#ifdef ZCL_WRITE
+/*********************************************************************
+ * @fn      SensorNode_ProcessInWriteRspCmd
+ *
+ * @brief   Process the "Profile" Write Response Command
+ *
+ * @param   pInMsg - incoming message to process
+ *
+ * @return  none
+ */
+static uint8 SensorNode_ProcessInWriteRspCmd( zclIncomingMsg_t *pInMsg )
+{
+  zclWriteRspCmd_t *writeRspCmd;
+  uint8 i;
+
+  writeRspCmd = (zclWriteRspCmd_t *)pInMsg->attrCmd;
+  for (i = 0; i < writeRspCmd->numAttr; i++)
+  {
+    // Notify the device of the results of the its original write attributes
+    // command.
+  }
+
+  return TRUE; 
+}
+#endif // ZCL_WRITE
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessInDefaultRspCmd
+ *
+ * @brief   Process the "Profile" Default Response Command
+ *
+ * @param   pInMsg - incoming message to process
+ *
+ * @return  none
+ */
+static uint8 SensorNode_ProcessInDefaultRspCmd( zclIncomingMsg_t *pInMsg )
+{
+  // zclDefaultRspCmd_t *defaultRspCmd = (zclDefaultRspCmd_t *)pInMsg->attrCmd;
+   
+  // Device is notified of the Default Response command.
+  (void)pInMsg;
+  
+  return TRUE; 
+}
+
+#ifdef ZCL_DISCOVER
+/*********************************************************************
+ * @fn      SensorNode_ProcessInDiscRspCmd
+ *
+ * @brief   Process the "Profile" Discover Response Command
+ *
+ * @param   pInMsg - incoming message to process
+ *
+ * @return  none
+ */
+static uint8 SensorNode_ProcessInDiscRspCmd( zclIncomingMsg_t *pInMsg )
+{
+  zclDiscoverRspCmd_t *discoverRspCmd;
+  uint8 i;
+  
+  discoverRspCmd = (zclDiscoverRspCmd_t *)pInMsg->attrCmd;
+  for ( i = 0; i < discoverRspCmd->numAttr; i++ )
+  {
+    // Device is notified of the result of its attribute discovery command.
+  }
+  
+  return TRUE;
+}
+#endif // ZCL_DISCOVER
+
+
+/***************************************************************************/
+
+#ifdef ZCL_REPORT
+/***************************************************************************/
+/*********************************************************************
+ * @fn      SensorNode_SetAttrReportInterval
+ *
+ * @brief   Set the Attribute reporting interval
+ *
+ * @param   pAttr - pointer to the attribute needing to be reported
+ * @param   cfgReportRec - pointer to the record holding the new report interval
+ * @param   EndPoint - destination Endpoint
+ *
+ * @return  none
+ */
+static uint8 SensorNode_SetAttrReportInterval( zclAttribute_t *pAttr, zclCfgReportRec_t *cfgReportRec, byte EndPoint )
+{
+  uint8 status = ZCL_STATUS_UNREPORTABLE_ATTRIBUTE;
+  uint16 evt = 0;
+  
+  switch(pAttr->attrId)
+    {
+    case ATTRID_IOV_BASIC_PRESENT_VALUE:
+      PresentValue_RepStatus[EndPoint-1].minReportInt = cfgReportRec->minReportInt;
+      PresentValue_RepStatus[EndPoint-1].maxReportInt = cfgReportRec->maxReportInt;
+      PresentValue_RepStatus[EndPoint-1].dataType = zclAnalogDataType( cfgReportRec->dataType );
+      PresentValue_RepStatus[EndPoint-1].last_value = *PresentValue_RepStatus[EndPoint-1].value;
+//      PresentValue_RepStatus[EndPoint-1].next_value = 0; //TODO
+      PresentValue_RepStatus[EndPoint-1].Reporting_enabled = REPORTING_ENABLED_NO_READY_TO_SEND; //TODO
+        
+      if ( PresentValue_RepStatus[EndPoint-1].dataType )
+        {
+          osal_memcpy( &PresentValue_RepStatus[EndPoint-1].ReportableChange, cfgReportRec->reportableChange, sizeof( PresentValue_RepStatus[EndPoint-1].ReportableChange ));
+        }
+      
+      status = ZCL_STATUS_SUCCESS;
+      break;
+     
+    default:
+      status = ZCL_STATUS_UNREPORTABLE_ATTRIBUTE;
+      
+    }
+  
+  evt = SensorNode_GetMinEvent( EndPoint );
+  
+  if ( evt != 0)
+  {
+      osal_stop_timerEx( SensorNode_TaskID, evt );
+      //Start the timer. Time out in ms so *1000 to get seconds
+      osal_start_timerEx( SensorNode_TaskID, evt, PresentValue_RepStatus[EndPoint-1].minReportInt*1000 );
+  }
+  
+  return status;
+}
+
+/*********************************************************************
+ * @fn      SensorNode_SendTheReport
+ *
+ * @brief   Send the report command
+ *
+ * @param   index - Endpoint-1
+ * @param   evt - which endpoint?
+ *
+ * @return  none
+ */
+static uint8 SensorNode_SendTheReport( uint8 index ) //TODO
+{
+  uint8 status = ZCL_STATUS_FAILURE;
+  
+//  // Changes to 'Analog' Attribute
+//  if ( PresentValue_RepStatus[index].dataType )
+//  {
+//    // A report shall be generated when the attribute undergoes a chenge of value equal to or greater than Reportable Change 
+//    if ( fabs(PresentValue_RepStatus[index].last_value - *PresentValue_RepStatus[index].value) >= PresentValue_RepStatus[index].ReportableChange )
+//    {
+      if ( pAnalogInputReportCmd[index] != NULL )
+      {
+        //Send the report
+        status = zcl_SendReportCmd( (index+1), &SensorNode_DstAddr,
+                     ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC, pAnalogInputReportCmd[index],
+                     ZCL_FRAME_SERVER_CLIENT_DIR, 1, PresentValue_RepStatus[index].seqNumRep ); 
+
+//        if ( status == ZSuccess )
+//        {
+        
+          PresentValue_RepStatus[index].Reporting_enabled = REPORTING_ENABLED_NO_READY_TO_SEND;
+          
+          uint16 evt = SensorNode_GetMaxEvent ( index+1 );
+          if ( evt != 0)
+            osal_stop_timerEx( SensorNode_TaskID, evt );
+          
+          evt = SensorNode_GetMinEvent ( index+1 );
+          if ( evt != 0)
+            osal_start_timerEx( SensorNode_TaskID, evt, PresentValue_RepStatus[index].minReportInt*1000 );
+          
+          PresentValue_RepStatus[index].seqNumRep++;
+          PresentValue_RepStatus[index].last_value = *PresentValue_RepStatus[index].value;
+//        }
+          
+          
+      }
+//    }
+//    else
+//      //restart the timer and waiting for a change of the value
+//      osal_start_timerEx( SensorNode_TaskID, evt, PresentValue_RepStatus[index].minReportInt*1000 );
+//  }
+  return status;
+}
+
+
+/*********************************************************************
+ * @fn      SensorNode_GetMinEvent
+ *
+ * @brief   
+ *
+ * @param   Endpoint
+ *
+ * @return  evt
+ */
+static uint16 SensorNode_GetMinEvent( uint8 EndPoint ) //TODO
+{
+  uint16 evt;
+  
+    switch(EndPoint)
+    {
+    case SensorNode_ENDPOINT1:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MIN_EVT;
+      break;
+    
+    case SensorNode_ENDPOINT2:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MIN_EVT;
+      break;
+      
+    case SensorNode_ENDPOINT3:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MIN_EVT;
+      break;
+//      
+//    case SensorNode_ENDPOINT4:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP4_MIN_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT5:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP5_MIN_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT6:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP6_MIN_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT7:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP7_MIN_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT8:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP8_MIN_EVT;
+//      break;
+      
+    default:
+      evt = 0;
+  }
+  
+  return evt;
+}
+
+/*********************************************************************
+ * @fn      SensorNode_GetMinEvent
+ *
+ * @brief   
+ *
+ * @param   Endpoint
+ *
+ * @return  evt
+ */
+static uint16 SensorNode_GetMaxEvent( uint8 EndPoint ) //TODO
+{
+  uint16 evt;
+  
+    switch(EndPoint)
+    {
+    case SensorNode_ENDPOINT1:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MAX_EVT;
+      break;
+    
+    case SensorNode_ENDPOINT2:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MAX_EVT;
+      break;
+      
+    case SensorNode_ENDPOINT3:
+      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MAX_EVT;
+      break;
+//      
+//    case SensorNode_ENDPOINT4:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP4_MAX_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT5:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP5_MAX_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT6:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP6_MAX_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT7:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP7_MAX_EVT;
+//      break;
+//      
+//    case SensorNode_ENDPOINT8:
+//      evt = SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP8_MAX_EVT;
+//      break;
+      
+    default:
+      evt = 0;
+  }
+  
+  return evt;
+}
+
+/*********************************************************************
+ * @fn      SensorNode_SetAttrTimeoutPeriod
+ *
+ * @brief   Set the Attribute reporting interval
+ *
+ * @param   pAttr - pointer to the attribute needing to be reported
+ * @param   cfgReportRec - pointer to the record holding the new report period
+ *
+ * @return  none
+ */
+static uint8 SensorNode_SetAttrTimeoutPeriod( zclAttribute_t *pAttr, zclCfgReportRec_t *cfgReportRec )
+{
+  uint8 status = ZCL_STATUS_UNSUPPORTED_ATTRIBUTE;
+  
+  switch(pAttr->attrId)
+  {
+  case ATTRID_IOV_BASIC_PRESENT_VALUE:
+    AnalogInputReportTimeoutPeriod = cfgReportRec->timeoutPeriod;
+
+    osal_stop_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_TIMEOUT_EVT );
+    //Start the timer. Time out in ms so *1000 to get seconds 
+    
+    osal_start_timerEx( SensorNode_TaskID, SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_TIMEOUT_EVT, AnalogInputReportTimeoutPeriod*1000 );
+
+    status = ZCL_STATUS_SUCCESS;
+    
+    break;
+   
+  default:
+    status = ZCL_STATUS_UNSUPPORTED_ATTRIBUTE;
+  }
+  
+  return status;
+}
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessInConfigReportCmd
+ *
+ * @brief   Process the "Profile" Configure Reporting Command
+ *
+ * @param   pInMsg - incoming message to process
+ * @param   logicalClusterID - logical cluster ID
+ *
+ * @return  TRUE if attribute was found in the Attribute list,
+ *          FALSE if not
+ */
+
+static uint8 SensorNode_ProcessInConfigReportCmd( zclIncomingMsg_t *pInMsg )
+{
+  endPointDesc_t *epDesc;
+  zclCfgReportCmd_t *cfgReportCmd;
+  zclCfgReportRec_t *reportRec;
+  zclCfgReportRspCmd_t *cfgReportRspCmd;
+  zclAttrRec_t attrRec;
+  uint8 status;
+  uint8 i, j = 0;
+  
+  cfgReportCmd = (zclCfgReportCmd_t *)pInMsg->attrCmd;
+  
+  // Allocate space for the response command
+  cfgReportRspCmd = (zclCfgReportRspCmd_t *)osal_mem_alloc( sizeof ( zclCfgReportRspCmd_t ) + \
+                                                            ( cfgReportCmd->numAttr * sizeof ( zclCfgReportStatus_t) ) );
+  if ( cfgReportRspCmd == NULL )
+    return FALSE; // EMBEDDED RETURN
+  
+  // Find the wanted endpoint
+  epDesc = afFindEndPointDesc( pInMsg->endPoint );
+  if ( epDesc == NULL )
+    return FALSE;   // Error, ignore the message
+  
+  // Process each Attribute Reporting Configuration record
+  for ( i = 0; i < cfgReportCmd->numAttr; i++ )
+  {
+    reportRec = &(cfgReportCmd->attrList[i]);
+    
+    status = ZCL_STATUS_SUCCESS;
+    
+    if ( zclFindAttrRec( pInMsg->endPoint, pInMsg->clusterId, reportRec->attrID, &attrRec ) )
+    {
+      if ( reportRec->direction == ZCL_SEND_ATTR_REPORTS )
+      {
+        if ( reportRec->dataType == attrRec.attr.dataType )
+        {
+          // This the attribute that is to be reported
+          if ( zcl_MandatoryReportableAttribute( attrRec ) == TRUE )
+          {
+            if ( reportRec->minReportInt < ZCL_MIN_REPORTING_INTERVAL ||
+                 ( reportRec->maxReportInt != 0 && 
+                   reportRec->maxReportInt < reportRec->minReportInt ) )
+            {
+              // Invalid fields
+              status = ZCL_STATUS_INVALID_VALUE;
+            }
+            else
+            {
+              // Set the Min and Max Reporting Intervals and Reportable Change
+              status = SensorNode_SetAttrReportInterval( &attrRec.attr, 
+                                                                    reportRec, pInMsg->endPoint );
+            }
+          }
+          else
+          {
+            // Attribute cannot be reported
+            status = ZCL_STATUS_UNREPORTABLE_ATTRIBUTE;
+          }
+        }
+        else
+        {
+          // Attribute data type is incorrect
+          status = ZCL_STATUS_INVALID_DATA_TYPE;
+        }
+      }
+      else
+      {
+        // We shall expect reports of values of this attribute
+        if ( zcl_MandatoryReportableAttribute( attrRec ) == TRUE )
+        {    
+          // Set the Timeout Period
+          status = SensorNode_SetAttrTimeoutPeriod( &attrRec.attr, reportRec );
+        }
+        else
+        {
+          // Reports of attribute cannot be received
+          status = ZCL_STATUS_UNSUPPORTED_ATTRIBUTE;
+        }
+      }   
+    }
+    else
+    {
+      // Attribute is not supported
+      status = ZCL_STATUS_UNSUPPORTED_ATTRIBUTE;
+    }
+    
+    // If not successful then record the status
+    if ( status != ZCL_STATUS_SUCCESS )
+    {
+      cfgReportRspCmd->attrList[j].status = status;
+      cfgReportRspCmd->attrList[j].direction = reportRec->direction;
+      cfgReportRspCmd->attrList[j++].attrID = reportRec->attrID;
+    }
+  } // for loop
+  
+  cfgReportRspCmd->numAttr = j;
+  if ( cfgReportRspCmd->numAttr == 0 )
+  {
+    // Since all attributes were configured successfully, include a single 
+    // attribute status record in the response command with the status field
+    // set to SUCCESS and the attribute ID field omitted.
+    cfgReportRspCmd->attrList[0].status = ZCL_STATUS_SUCCESS;
+    cfgReportRspCmd->numAttr = 1;
+  }
+
+  // Send the response back
+  zcl_SendConfigReportRspCmd( pInMsg->endPoint, &(pInMsg->srcAddr), 
+                              pInMsg->clusterId, cfgReportRspCmd, ZCL_FRAME_SERVER_CLIENT_DIR, 
+                              true, pInMsg->zclHdr.transSeqNum );
+  osal_mem_free( cfgReportRspCmd );
+  
+  return TRUE ;
+}
+
+
+/*********************************************************************
+ * @fn      SensorNode_ProcessInReportCmd
+ *
+ * @brief   Process the "Profile" Report Command
+ *
+ * @param   pInMsg - incoming message to process
+ *
+ * @return  none
+ */
+static uint8 SensorNode_ProcessInReportCmd( zclIncomingMsg_t *pInMsg )
+{
+  return 0;
+}
+/****************************************************************************
+****************************************************************************/
+#endif // ZCL_REPORT

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.h (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode.h Thu Apr 24 16:09:16 2014
@@ -1,0 +1,144 @@
+/**************************************************************************************************
+  Filename:       SensorNode.h
+  Revised:        $Date: 2007-10-27 17:22:23 -0700 (Sat, 27 Oct 2007) $
+  Revision:       $Revision: 15795 $
+
+  Description:    This file contains the Generic Application definitions.
+
+*******************************************************************************/
+
+#ifndef ZCL_SensorNode_H
+#define ZCL_SensorNode_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+  
+/*********************************************************************
+ * INCLUDES
+ */
+#include "zcl.h"
+
+    
+/*********************************************************************
+ * CONSTANTS
+ */
+
+#define SensorNode_ENDPOINT1            1
+#define SensorNode_ENDPOINT2            2
+#define SensorNode_ENDPOINT3            3
+#define SensorNode_ENDPOINT4            4
+#define SensorNode_ENDPOINT5            5
+#define SensorNode_ENDPOINT6            6
+#define SensorNode_ENDPOINT7            7
+#define SensorNode_ENDPOINT8            8
+  
+#define SENSORNODE_MAX_ATTRIBUTES      21  
+#define SENSORNODE_MAX_ENDPOINT         3 //max number of reportable endpoints
+
+  
+//Devices for reporting
+#ifdef POWER
+#define EP1_CHANNEL0                    0
+#endif
+#ifdef FC04
+#define EP2_PIR                         1
+#define EP3_NOISE                       2
+#endif
+  
+// Application Events
+#define SensorNode_IDENTIFY_TIMEOUT_EVT                         0x0001
+
+//Event for Reporting PresentValue
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MIN_EVT        0x0002
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP1_MAX_EVT        0x0004
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MIN_EVT        0x0008
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP2_MAX_EVT        0x0010
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MIN_EVT        0x0020
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP3_MAX_EVT        0x0040
+//#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP7_EVT        0x0080
+//#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_EP8_EVT        0x0100
+  
+//Event for Reporting On/Off timeout event.
+#define SensorNode_ANALOG_INPUT_REPORT_ATTRIBUTE_TIMEOUT_EVT    0x4000
+
+// Analog Input Constants
+#define CONST_PRESENT_VALUE                                   0x00
+
+#ifdef ZCL_REPORT //TODO
+#define NO_REPORTING                                          0x00
+#define REPORTING_ENABLED_NO_READY_TO_SEND                    0x01
+#define REPORTING_ENABLED_READY_TO_SEND                       0x02
+#endif
+/*********************************************************************
+ * MACROS
+ */
+/*********************************************************************
+ * TYPEDEFS
+ */
+  
+#ifdef ZCL_REPORT
+typedef struct {
+  float* value;
+  float last_value;
+  uint8 seqNumRep;
+//  uint32 last_sent;
+//  uint32 next_sent;
+  uint8  dataType;           // attribute data type
+  uint16 minReportInt;       // minimum reporting interval
+  uint16 maxReportInt;       // maximum reporting interval
+  float ReportableChange;
+  uint8 Reporting_enabled;   //TODO
+//  float next_value;          //TODO
+} zclReportingStatus_t;
+#endif
+
+/*********************************************************************
+ * VARIABLES
+ */
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc1;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc2;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc3;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc4;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc5;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc6;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc7;
+extern SimpleDescriptionFormat_t SensorNode_SimpleDesc8;
+
+extern CONST zclAttrRec_t SensorNode_Attrs_EP1[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP2[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP3[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP4[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP5[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP6[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP7[];
+extern CONST zclAttrRec_t SensorNode_Attrs_EP8[];
+
+extern uint16 SensorNode_IdentifyTime;
+
+extern float SensorNode_EP_PresentValue[SENSORNODE_MAX_ENDPOINT];
+
+
+/*********************************************************************
+ * FUNCTIONS
+ */
+
+ /*
+  * Initialization for the task
+  */
+extern void SensorNode_Init( byte task_id );
+
+/*
+ *  Event Process for the task
+ */
+extern UINT16 SensorNode_event_loop( byte task_id, UINT16 events );
+
+/*********************************************************************
+*********************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ZCL_SensorNode_H */

Added: projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode_data.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode_data.c (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/SensorNode-FC04-PIR-POWER/Source/SensorNode_data.c Thu Apr 24 16:09:16 2014
@@ -1,0 +1,1818 @@
+/**************************************************************************************************
+  Filename:       SensorNode_data.c
+  Revised:        $Date: 10-2013 $
+  Revision:       $Revision: 1 $
+
+
+  Description:    
+**************************************************************************************************/
+
+/*********************************************************************
+ * INCLUDES
+ */
+#include "ZComDef.h"
+#include "OSAL.h"
+#include "AF.h"
+#include "ZDConfig.h"
+
+#include "zcl.h"
+#include "zcl_general.h"
+#include "zcl_ha.h"
+
+#include "SensorNode.h"
+
+/*********************************************************************
+ * CONSTANTS
+ */
+
+#define SENSORNODE_DEVICE_VERSION     0
+#define SENSORNODE_FLAGS              0
+
+#define SENSORNODE_HWVERSION          1
+#define SENSORNODE_ZCLVERSION         1
+
+/*********************************************************************
+ * TYPEDEFS
+ */
+
+/*********************************************************************
+ * MACROS
+ */
+
+/*********************************************************************
+ * GLOBAL VARIABLES
+ */
+
+// Basic Cluster
+const uint8 SensorNode_ZCLVersion = SENSORNODE_ZCLVERSION;
+const uint8 SensorNode_ApplicationVersion = 2; //Aggiunta
+const uint8 SensorNode_StackVersion = 4; //Aggiunta
+const uint8 SensorNode_HWRevision = SENSORNODE_HWVERSION;
+const uint8 SensorNode_ManufacturerName[] = { 5, 'W','n','L','a','b' };
+const uint8 SensorNode_ModelId[] = { 6, '0','0','0','0','0','1' };
+const uint8 SensorNode_DateCode[] = { 16, '2','0','1','3','1','2','1','3','I','T','A',' ','P','I','S','A' };
+const uint8 SensorNode_PowerSource = POWER_SOURCE_MAINS_1_PHASE;
+
+uint8 SensorNode_LocationDescription[] = { 11, 'W','n',' ','L','a','b',' ','T','e','s','t' };
+uint8 SensorNode_PhysicalEnvironment = 0;
+uint8 SensorNode_DeviceEnable = DEVICE_ENABLED;
+
+// Identify Cluster
+uint16 SensorNode_IdentifyTime = 0;
+
+// Analog & Binary Input Cluster
+bool SensorNode_OutOfService = FALSE;
+const uint8 SensorNode_Reliability = 0x00;
+uint8 SensorNode_StatusFlag = 0;
+
+// Analog Input Cluster
+float SensorNode_EP_PresentValue[SENSORNODE_MAX_ENDPOINT];
+
+uint8 SensorNode_Description_1[] = { 16, 'A','n','a','l','o','g',' ','I','n','p','u','t',' ','C','l','.' };
+const float SensorNode_MaxPresentValue = 5000.0;
+const float SensorNode_MinPresentValue = 0.0;
+const float SensorNode_Resolution = 1.0;
+
+/*********************************************************************
+ * ATTRIBUTE DEFINITIONS FOR ENDPOINT 1- Uses REAL cluster IDs
+ */
+CONST zclAttrRec_t SensorNode_Attrs_EP1[SENSORNODE_MAX_ATTRIBUTES] =
+{
+  // *** General Basic Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+    {  // Attribute record
+      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_ZCL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ZCLVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_APPL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ApplicationVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_STACK_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StackVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MANUFACTURER_NAME,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ManufacturerName
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MODEL_ID,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ModelId
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DATE_CODE,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_DateCode
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_POWER_SOURCE,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_PowerSource
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_LOCATION_DESC,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)SensorNode_LocationDescription
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_PHYSICAL_ENV,
+      ZCL_DATATYPE_UINT8,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_PhysicalEnvironment
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DEVICE_ENABLED,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_DeviceEnable
+    }
+  },
+
+  // *** Identify Cluster Attribute ***
+  {
+    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+    { // Attribute record
+      ATTRID_IDENTIFY_TIME,
+      ZCL_DATATYPE_UINT16,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_IdentifyTime
+    }
+  },
+
+  // *** Analog Input Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_DESCRIPTION,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_Description_1
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MaxPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MinPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_OutOfService
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_EP_PresentValue[0]
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RELIABILITY,
+      ZCL_DATATYPE_ENUM8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Reliability
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RESOLUTION,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Resolution
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_STATUS_FLAG,
+      ZCL_DATATYPE_BITMAP8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StatusFlag
+    }
+  },
+
+}; 
+
+/*********************************************************************
+ * ATTRIBUTE DEFINITIONS FOR ENDPOINT 2- Uses REAL cluster IDs
+ */
+CONST zclAttrRec_t SensorNode_Attrs_EP2[SENSORNODE_MAX_ATTRIBUTES] =
+{
+  // *** General Basic Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+    {  // Attribute record
+      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_ZCL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ZCLVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_APPL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ApplicationVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_STACK_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StackVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MANUFACTURER_NAME,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ManufacturerName
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MODEL_ID,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ModelId
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DATE_CODE,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_DateCode
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_POWER_SOURCE,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_PowerSource
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_LOCATION_DESC,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)SensorNode_LocationDescription
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_PHYSICAL_ENV,
+      ZCL_DATATYPE_UINT8,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_PhysicalEnvironment
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DEVICE_ENABLED,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_DeviceEnable
+    }
+  },
+
+  // *** Identify Cluster Attribute ***
+  {
+    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+    { // Attribute record
+      ATTRID_IDENTIFY_TIME,
+      ZCL_DATATYPE_UINT16,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_IdentifyTime
+    }
+  },
+
+  // *** Analog Input Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_DESCRIPTION,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_Description_1
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MaxPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MinPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_OutOfService
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_EP_PresentValue[1]
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RELIABILITY,
+      ZCL_DATATYPE_ENUM8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Reliability
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RESOLUTION,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Resolution
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_STATUS_FLAG,
+      ZCL_DATATYPE_BITMAP8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StatusFlag
+    }
+  },
+
+}; 
+
+
+/*********************************************************************
+ * ATTRIBUTE DEFINITIONS FOR ENDPOINT 3- Uses REAL cluster IDs
+ */
+CONST zclAttrRec_t SensorNode_Attrs_EP3[SENSORNODE_MAX_ATTRIBUTES] =
+{
+  // *** General Basic Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+    {  // Attribute record
+      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_ZCL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ZCLVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_APPL_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_ApplicationVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_STACK_VERSION,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StackVersion
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MANUFACTURER_NAME,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ManufacturerName
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_MODEL_ID,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_ModelId
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DATE_CODE,
+      ZCL_DATATYPE_CHAR_STR,
+      ACCESS_CONTROL_READ,
+      (void *)SensorNode_DateCode
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_POWER_SOURCE,
+      ZCL_DATATYPE_UINT8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_PowerSource
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_LOCATION_DESC,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)SensorNode_LocationDescription
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_PHYSICAL_ENV,
+      ZCL_DATATYPE_UINT8,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_PhysicalEnvironment
+    }
+  },
+  {
+    ZCL_CLUSTER_ID_GEN_BASIC,
+    { // Attribute record
+      ATTRID_BASIC_DEVICE_ENABLED,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_DeviceEnable
+    }
+  },
+
+  // *** Identify Cluster Attribute ***
+  {
+    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+    { // Attribute record
+      ATTRID_IDENTIFY_TIME,
+      ZCL_DATATYPE_UINT16,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_IdentifyTime
+    }
+  },
+
+  // *** Analog Input Cluster Attributes ***
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_DESCRIPTION,
+      ZCL_DATATYPE_CHAR_STR,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_Description_1
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MaxPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_MinPresentValue
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+      ZCL_DATATYPE_BOOLEAN,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_OutOfService
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_PRESENT_VALUE,
+      ZCL_DATATYPE_SINGLE_PREC,
+      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+      (void *)&SensorNode_EP_PresentValue[2]
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RELIABILITY,
+      ZCL_DATATYPE_ENUM8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Reliability
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_RESOLUTION,
+      ZCL_DATATYPE_SINGLE_PREC,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_Resolution
+    }
+  },
+  
+  {
+    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+    { // Attribute record
+      ATTRID_IOV_BASIC_STATUS_FLAG,
+      ZCL_DATATYPE_BITMAP8,
+      ACCESS_CONTROL_READ,
+      (void *)&SensorNode_StatusFlag
+    }
+  },
+
+}; 
+
+//
+///*********************************************************************
+// * ATTRIBUTE DEFINITIONS FOR ENDPOINT 4- Uses REAL cluster IDs
+// */
+//CONST zclAttrRec_t SensorNode_Attrs_EP4[SENSORNODE_MAX_ATTRIBUTES] =
+//{
+//  // *** General Basic Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+//    {  // Attribute record
+//      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+//      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+//      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+//      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_ZCL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ZCLVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_APPL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ApplicationVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_STACK_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StackVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MANUFACTURER_NAME,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ManufacturerName
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MODEL_ID,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ModelId
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DATE_CODE,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_DateCode
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_POWER_SOURCE,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_PowerSource
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_LOCATION_DESC,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)SensorNode_LocationDescription
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_PHYSICAL_ENV,
+//      ZCL_DATATYPE_UINT8,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_PhysicalEnvironment
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DEVICE_ENABLED,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_DeviceEnable
+//    }
+//  },
+//
+//  // *** Identify Cluster Attribute ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+//    { // Attribute record
+//      ATTRID_IDENTIFY_TIME,
+//      ZCL_DATATYPE_UINT16,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_IdentifyTime
+//    }
+//  },
+//
+//  // *** Analog Input Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_DESCRIPTION,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_Description_1
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MaxPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MinPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_OutOfService
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_EP_PresentValue[3]
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RELIABILITY,
+//      ZCL_DATATYPE_ENUM8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Reliability
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RESOLUTION,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Resolution
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_STATUS_FLAG,
+//      ZCL_DATATYPE_BITMAP8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StatusFlag
+//    }
+//  },
+//
+//}; 
+//
+//
+///*********************************************************************
+// * ATTRIBUTE DEFINITIONS FOR ENDPOINT 5- Uses REAL cluster IDs
+// */
+//CONST zclAttrRec_t SensorNode_Attrs_EP5[SENSORNODE_MAX_ATTRIBUTES] =
+//{
+//  // *** General Basic Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+//    {  // Attribute record
+//      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+//      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+//      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+//      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_ZCL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ZCLVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_APPL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ApplicationVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_STACK_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StackVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MANUFACTURER_NAME,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ManufacturerName
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MODEL_ID,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ModelId
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DATE_CODE,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_DateCode
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_POWER_SOURCE,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_PowerSource
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_LOCATION_DESC,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)SensorNode_LocationDescription
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_PHYSICAL_ENV,
+//      ZCL_DATATYPE_UINT8,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_PhysicalEnvironment
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DEVICE_ENABLED,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_DeviceEnable
+//    }
+//  },
+//
+//  // *** Identify Cluster Attribute ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+//    { // Attribute record
+//      ATTRID_IDENTIFY_TIME,
+//      ZCL_DATATYPE_UINT16,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_IdentifyTime
+//    }
+//  },
+//
+//  // *** Analog Input Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_DESCRIPTION,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_Description_1
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MaxPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MinPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_OutOfService
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_EP_PresentValue[4]
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RELIABILITY,
+//      ZCL_DATATYPE_ENUM8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Reliability
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RESOLUTION,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Resolution
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_STATUS_FLAG,
+//      ZCL_DATATYPE_BITMAP8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StatusFlag
+//    }
+//  },
+//
+//}; 
+//
+//
+///*********************************************************************
+// * ATTRIBUTE DEFINITIONS FOR ENDPOINT 6- Uses REAL cluster IDs
+// */
+//CONST zclAttrRec_t SensorNode_Attrs_EP6[SENSORNODE_MAX_ATTRIBUTES] =
+//{
+//  // *** General Basic Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+//    {  // Attribute record
+//      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+//      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+//      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+//      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_ZCL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ZCLVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_APPL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ApplicationVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_STACK_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StackVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MANUFACTURER_NAME,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ManufacturerName
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MODEL_ID,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ModelId
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DATE_CODE,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_DateCode
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_POWER_SOURCE,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_PowerSource
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_LOCATION_DESC,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)SensorNode_LocationDescription
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_PHYSICAL_ENV,
+//      ZCL_DATATYPE_UINT8,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_PhysicalEnvironment
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DEVICE_ENABLED,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_DeviceEnable
+//    }
+//  },
+//
+//  // *** Identify Cluster Attribute ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+//    { // Attribute record
+//      ATTRID_IDENTIFY_TIME,
+//      ZCL_DATATYPE_UINT16,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_IdentifyTime
+//    }
+//  },
+//
+//  // *** Analog Input Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_DESCRIPTION,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_Description_1
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MaxPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MinPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_OutOfService
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_EP_PresentValue[5]
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RELIABILITY,
+//      ZCL_DATATYPE_ENUM8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Reliability
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RESOLUTION,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Resolution
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_STATUS_FLAG,
+//      ZCL_DATATYPE_BITMAP8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StatusFlag
+//    }
+//  },
+//
+//}; 
+//
+//
+///*********************************************************************
+// * ATTRIBUTE DEFINITIONS FOR ENDPOINT 7- Uses REAL cluster IDs
+// */
+//CONST zclAttrRec_t SensorNode_Attrs_EP7[SENSORNODE_MAX_ATTRIBUTES] =
+//{
+//  // *** General Basic Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+//    {  // Attribute record
+//      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+//      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+//      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+//      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_ZCL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ZCLVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_APPL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ApplicationVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_STACK_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StackVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MANUFACTURER_NAME,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ManufacturerName
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MODEL_ID,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ModelId
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DATE_CODE,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_DateCode
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_POWER_SOURCE,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_PowerSource
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_LOCATION_DESC,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)SensorNode_LocationDescription
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_PHYSICAL_ENV,
+//      ZCL_DATATYPE_UINT8,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_PhysicalEnvironment
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DEVICE_ENABLED,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_DeviceEnable
+//    }
+//  },
+//
+//  // *** Identify Cluster Attribute ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+//    { // Attribute record
+//      ATTRID_IDENTIFY_TIME,
+//      ZCL_DATATYPE_UINT16,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_IdentifyTime
+//    }
+//  },
+//
+//  // *** Analog Input Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_DESCRIPTION,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_Description_1
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MaxPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MinPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_OutOfService
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_EP_PresentValue[6]
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RELIABILITY,
+//      ZCL_DATATYPE_ENUM8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Reliability
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RESOLUTION,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Resolution
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_STATUS_FLAG,
+//      ZCL_DATATYPE_BITMAP8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StatusFlag
+//    }
+//  },
+//
+//}; 
+//
+//
+///*********************************************************************
+// * ATTRIBUTE DEFINITIONS FOR ENDPOINT 8- Uses REAL cluster IDs
+// */
+//CONST zclAttrRec_t SensorNode_Attrs_EP8[SENSORNODE_MAX_ATTRIBUTES] =
+//{
+//  // *** General Basic Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,             // Cluster IDs - defined in the foundation (ie. zcl.h)
+//    {  // Attribute record
+//      ATTRID_BASIC_HW_VERSION,            // Attribute ID - Found in Cluster Library header (ie. zcl_general.h)
+//      ZCL_DATATYPE_UINT8,                 // Data Type - found in zcl.h
+//      ACCESS_CONTROL_READ,                // Variable access control - found in zcl.h
+//      (void *)&SensorNode_HWRevision  // Pointer to attribute variable
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_ZCL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ZCLVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_APPL_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_ApplicationVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_STACK_VERSION,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StackVersion
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MANUFACTURER_NAME,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ManufacturerName
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_MODEL_ID,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_ModelId
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DATE_CODE,
+//      ZCL_DATATYPE_CHAR_STR,
+//      ACCESS_CONTROL_READ,
+//      (void *)SensorNode_DateCode
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_POWER_SOURCE,
+//      ZCL_DATATYPE_UINT8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_PowerSource
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_LOCATION_DESC,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)SensorNode_LocationDescription
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_PHYSICAL_ENV,
+//      ZCL_DATATYPE_UINT8,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_PhysicalEnvironment
+//    }
+//  },
+//  {
+//    ZCL_CLUSTER_ID_GEN_BASIC,
+//    { // Attribute record
+//      ATTRID_BASIC_DEVICE_ENABLED,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_DeviceEnable
+//    }
+//  },
+//
+//  // *** Identify Cluster Attribute ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_IDENTIFY,
+//    { // Attribute record
+//      ATTRID_IDENTIFY_TIME,
+//      ZCL_DATATYPE_UINT16,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_IdentifyTime
+//    }
+//  },
+//
+//  // *** Analog Input Cluster Attributes ***
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_DESCRIPTION,
+//      ZCL_DATATYPE_CHAR_STR,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_Description_1
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MAX_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MaxPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_MIN_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_MinPresentValue
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_OUT_OF_SERVICE,
+//      ZCL_DATATYPE_BOOLEAN,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_OutOfService
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_PRESENT_VALUE,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      (ACCESS_CONTROL_READ | ACCESS_CONTROL_WRITE),
+//      (void *)&SensorNode_EP_PresentValue[7]
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RELIABILITY,
+//      ZCL_DATATYPE_ENUM8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Reliability
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_RESOLUTION,
+//      ZCL_DATATYPE_SINGLE_PREC,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_Resolution
+//    }
+//  },
+//  
+//  {
+//    ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC,
+//    { // Attribute record
+//      ATTRID_IOV_BASIC_STATUS_FLAG,
+//      ZCL_DATATYPE_BITMAP8,
+//      ACCESS_CONTROL_READ,
+//      (void *)&SensorNode_StatusFlag
+//    }
+//  },
+//
+//}; 
+//
+
+/*********************************************************************
+ * SIMPLE DESCRIPTOR
+ */
+// This is the Cluster ID List and should be filled with Application
+// specific cluster IDs.
+
+#define ZCLSENSORNODE_MAX_INCLUSTERS       3
+const cId_t SensorNode_InClusterList[ZCLSENSORNODE_MAX_INCLUSTERS] =
+{
+  ZCL_CLUSTER_ID_GEN_BASIC,
+  ZCL_CLUSTER_ID_GEN_IDENTIFY,
+  ZCL_CLUSTER_ID_GEN_ANALOG_INPUT_BASIC
+};
+
+#define ZCLSENSORNODE_MAX_OUTCLUSTERS       1
+const cId_t SensorNode_OutClusterList[ZCLSENSORNODE_MAX_OUTCLUSTERS] =
+{
+  ZCL_CLUSTER_ID_GEN_BASIC,  
+};
+
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc1 =
+{
+  SensorNode_ENDPOINT1,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc2 =
+{
+  SensorNode_ENDPOINT2,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc3 =
+{
+  SensorNode_ENDPOINT3,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc4 =
+{
+  SensorNode_ENDPOINT4,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc5 =
+{
+  SensorNode_ENDPOINT5,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc6 =
+{
+  SensorNode_ENDPOINT6,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc7 =
+{
+  SensorNode_ENDPOINT7,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+
+SimpleDescriptionFormat_t SensorNode_SimpleDesc8 =
+{
+  SensorNode_ENDPOINT8,                  //  int Endpoint;
+  ZCL_HA_PROFILE_ID,                        //  uint16 AppProfId[2];
+  ZCL_HA_DEVICEID_SIMPLE_SENSOR,            //  uint16 AppDeviceId[2];
+  SENSORNODE_DEVICE_VERSION,            //  int   AppDevVer:4;
+  SENSORNODE_FLAGS,                     //  int   AppFlags:4;
+  ZCLSENSORNODE_MAX_INCLUSTERS,         //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_InClusterList,    //  byte *pAppInClusterList;
+  ZCLSENSORNODE_MAX_OUTCLUSTERS,        //  byte  AppNumInClusters;
+  (cId_t *)SensorNode_OutClusterList    //  byte *pAppInClusterList;
+};
+/*********************************************************************
+ * GLOBAL FUNCTIONS
+ */
+
+/*********************************************************************
+ * LOCAL FUNCTIONS
+ */
+
+/****************************************************************************
+****************************************************************************/
+
+

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.c (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.c Thu Apr 24 16:09:16 2014
@@ -3613,6 +3613,8 @@
     pCmd->srcAddr   = pInMsg->msg->srcAddr;
     pCmd->attrCmd   = pInMsg->attrCmd;
     
+    pCmd->endPoint  = pInMsg->msg->endPoint;
+      
     // Application will free the attrCmd buffer
     pInMsg->attrCmd = NULL;
     

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.h (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Components/stack/zcl/zcl.h Thu Apr 24 16:09:16 2014
@@ -571,6 +571,7 @@
   uint16           clusterId;   // Cluster ID
   afAddrType_t     srcAddr;     // Sender's address
   void             *attrCmd;    // pointer to the parsed attribute or command
+  uint8            endPoint;    // destination endpoint
 } zclIncomingMsg_t;
 
 // Function pointer type to handle incoming messages.

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.c (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.c Thu Apr 24 16:09:16 2014
@@ -3,12 +3,13 @@
  * INCLUDES
  */
  
- #include "hal_board_cfg.h"
+#include "hal_board_cfg.h"
  
- #include "fc04.h"
- #include "stdio.h"
- #include "OSAL_Timers.h"
- 
+#include "fc04.h"
+#include "stdio.h"
+#include "OSAL_Timers.h"
+#include "OSAL.h"
+#include "OSAL_Tasks.h"
  /*********************************************************************
  * CONSTANTS
  */
@@ -18,7 +19,10 @@
  */
  
  byte fc04_TaskID;
+ byte fc04_Application_TaskID = TASK_NO_TASK;
  
+ uint16 count[2];
+ uint8 NumberOfSamples = 0;
  /*********************************************************************
  * @fn          FC04_Init
  *
@@ -42,10 +46,11 @@
   P1DIR &= ~(1<<1); //P1_1 Set Input
   P1INP &= ~(1<<1); //P1_1 pull-up pull-down mode
  
-  osal_start_timerEx( fc04_TaskID, READING_EVT, READING_TIMEOUT );
  }
- 
- UINT16 FC04_loop( byte task_id, UINT16 events )
+
+/*********************************************************************/
+
+UINT16 FC04_loop( byte task_id, UINT16 events )
 {
   switch ( events ) 
   {
@@ -58,20 +63,73 @@
   }
 }
 
+/*********************************************************************/
+
 void Read ( void )
 {
-  if (P1_0)
-	printf("\nHIGH");
-  else
-	printf("\nLOW");
+  if (P1_0) //PIR in P1_0
+    count[0] += 1;
+//	printf("\nHIGH");
+//  else
+//	printf("\nLOW");
 	
-  if (P1_1)
-	printf(" HIGH");
-  else
-	printf(" LOW");
+  if (P1_1) //NOISE in P1_0
+    count[1] += 1;
+//	printf("    HIGH");
+//  else
+//	printf("    LOW");
+  
+  NumberOfSamples++;
+  
+  if ( NumberOfSamples == MAX_READINGS )
+  {
+    FC04_SendMsg( PIR );
+    FC04_SendMsg( NOISE );
+    NumberOfSamples = 0;
+  }
   
   osal_start_timerEx( fc04_TaskID, READING_EVT, READING_TIMEOUT );
 }
 
+/*********************************************************************/
 
+void Start_Capture ( byte TaskID )
+{
+  fc04_Application_TaskID = TaskID;
+  
+  osal_start_timerEx( fc04_TaskID, READING_EVT, READING_TIMEOUT );
+}
+
+/*********************************************************************/
+
+void FC04_ResetCount ( uint8 index )
+{
+  if( index < FC_MAX_CHANNELS )
+    count[index] = 0;
+}
+
+/*********************************************************************/
+
+uint8 static FC04_SendMsg ( uint8 identify )
+{
+  fc04IncomingMsg_t *pCmd;
+  
+  if ( fc04_Application_TaskID == TASK_NO_TASK )
+    return ( TRUE );
+  
+  pCmd = (fc04IncomingMsg_t *)osal_msg_allocate( sizeof ( fc04IncomingMsg_t ) );
+  
+  if ( pCmd != NULL )
+  {
+    // fill in the message
+    pCmd->hdr.event = FC04_INCOMING_MSG;
+    pCmd->device = identify;
+    pCmd->sample = count[identify];
+    
+    /* send message through task message */
+    osal_msg_send( fc04_Application_TaskID, (uint8 *)pCmd );
+  }
+  
+  return ( TRUE );
+}
  #endif

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.h (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fc04.h Thu Apr 24 16:09:16 2014
@@ -4,21 +4,43 @@
  */
  
 #include "ZComDef.h"
-
+#include "OSAL.h"
 /*********************************************************************
  * CONSTANTS
  */
 
- #define READING_EVT                        0x0001
- 
- #define READING_TIMEOUT                    25
- /*********************************************************************
- *  FUNCTIONS
- */
+#define FC_MAX_CHANNELS                    2
+#define MAX_READINGS                       170
+
+#define READING_EVT                        0x0001
+#define NEW_SAMPLES_READY                  0x0200
+#define FC04_INCOMING_MSG                  0xE0
+
+#define READING_TIMEOUT                    23
+
+//Which trasducer?
+#define PIR                                0x00
+#define NOISE                              0x01
+
+/*********************************************************************
+*  TYPEDEFS
+*/
+
+typedef struct
+{
+  osal_event_hdr_t hdr;         // OSAL header
+  uint8 device;                 // which device
+  uint16 sample;
+}fc04IncomingMsg_t;
+/*********************************************************************
+*  FUNCTIONS
+*/
  
 extern void FC04_Init ( byte task_id );
 extern UINT16 FC04_loop( byte task_id, UINT16 events );
 void Read ( void );
-
+void Start_Capture ( byte TaskID );
+void FC04_ResetCount ( uint8 index );
+uint8 static FC04_SendMsg ( uint8 identify );
 
 #endif

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.c (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.c Thu Apr 24 16:09:16 2014
@@ -26,17 +26,8 @@
 byte fsr400_TaskID;
 byte Application_TaskID;
 
-SingleSensingConf_t FSR_6;
-SingleSensingConf_t FSR_7;
-
-#ifdef NOBOARD
-SingleSensingConf_t FSR_0;
-SingleSensingConf_t FSR_1;
-SingleSensingConf_t FSR_2;
-SingleSensingConf_t FSR_3;
-SingleSensingConf_t FSR_4;
-SingleSensingConf_t FSR_5;
-#endif
+SingleSensingConf_t FSR[FSR_MAX_CHANNELS];
+
 
 /*********************************************************************
  * @fn          fsr400_Init
@@ -56,16 +47,6 @@
   //3STATE PORT CONFIG
   P0INP |= (1<<7); // P0_7 3state mode
   P0INP |= (1<<6); // P0_6 3state mode
-  
-  // PULLDOWN PORT CONFIG
-//  P2INP |= (1<<5);
-  
-  FSR_7.port = HAL_ADC_CHANNEL_OPEN_7;
-  FSR_7.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_6.port = HAL_ADC_CHANNEL_OPEN_6;
-  FSR_6.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
 #ifdef NOBOARD
   P0INP |= (1<<5); // P0_5 3state mode
   P0INP |= (1<<4); // P0_4 3state mode
@@ -73,27 +54,68 @@
   P0INP |= (1<<2); // P0_2 3state mode
   P0INP |= (1<<1); // P0_1 3state mode
   P0INP |= (1<<0); // P0_0 3state mode
-  
-  FSR_5.port = HAL_ADC_CHANNEL_OPEN_5;
-  FSR_5.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_4.port = HAL_ADC_CHANNEL_OPEN_4;
-  FSR_4.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_3.port = HAL_ADC_CHANNEL_OPEN_3;
-  FSR_3.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_2.port = HAL_ADC_CHANNEL_OPEN_2;
-  FSR_2.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_1.port = HAL_ADC_CHANNEL_OPEN_1;
-  FSR_1.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-  
-  FSR_0.port = HAL_ADC_CHANNEL_OPEN_0;
-  FSR_0.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
 #endif
   
-  osal_start_timerEx( fsr400_TaskID, CONF_THREE_STATE_EVT, CONF_THREE_STATE_TIMEOUT );
+//  FSR_7.port = HAL_ADC_CHANNEL_OPEN_7;
+//  FSR_7.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_6.port = HAL_ADC_CHANNEL_OPEN_6;
+//  FSR_6.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+  for( uint8 i = 0; i<FSR_MAX_CHANNELS; i++)
+  {
+    FSR[i].resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+    switch(i)
+    {
+    case 0:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_7;
+      break;
+    case 1:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_6;
+      break;
+    case 2:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_5;
+      break;
+    case 3:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_4;
+      break;
+    case 4:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_3;
+      break;
+    case 5:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_2;
+      break;
+    case 6:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_1;
+      break;
+    case 7:
+      FSR[i].port = HAL_ADC_CHANNEL_OPEN_0;
+      break;
+    }
+  }
+  
+//#ifdef NOBOARD
+
+//  FSR_5.port = HAL_ADC_CHANNEL_OPEN_5;
+//  FSR_5.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_4.port = HAL_ADC_CHANNEL_OPEN_4;
+//  FSR_4.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_3.port = HAL_ADC_CHANNEL_OPEN_3;
+//  FSR_3.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_2.port = HAL_ADC_CHANNEL_OPEN_2;
+//  FSR_2.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_1.port = HAL_ADC_CHANNEL_OPEN_1;
+//  FSR_1.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+  
+//  FSR_0.port = HAL_ADC_CHANNEL_OPEN_0;
+//  FSR_0.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+//#endif
+  
+//  osal_start_timerEx( fsr400_TaskID, CONF_THREE_STATE_EVT, CONF_THREE_STATE_TIMEOUT );
 }
 
 /*********************************************************************
@@ -114,9 +136,7 @@
   switch ( events ) 
   {
     case CONF_THREE_STATE_EVT:
-//      HAL_TURN_ON_LED2();
       osal_set_event( fsr400_TaskID, CONVERTING_EVT); //NOBOARD
-      printf("\n *** START CONVERTING *** \n");
       return (events ^ CONF_THREE_STATE_EVT);
       
     case CONVERTING_EVT:
@@ -135,27 +155,36 @@
 {
   osal_start_timerEx( fsr400_TaskID, CONVERTING_EVT, SAMPLING_TIMEOUT ); // restart the timer 200ms
   
-  FSR_6.sample = HalAdcRead (FSR_6.port, FSR_6.resolution);      //Read in raw voltage signal
-  FSR_7.sample = HalAdcRead (FSR_7.port, FSR_7.resolution);   //Read in raw voltage signal
-  
-#ifdef NOBOARD
-  FSR_0.sample = HalAdcRead (FSR_0.port, FSR_0.resolution);
-  FSR_1.sample = HalAdcRead (FSR_1.port, FSR_1.resolution);
-  FSR_2.sample = HalAdcRead (FSR_2.port, FSR_2.resolution);
-  FSR_3.sample = HalAdcRead (FSR_3.port, FSR_3.resolution);
-  FSR_4.sample = HalAdcRead (FSR_4.port, FSR_4.resolution);
-  FSR_5.sample = HalAdcRead (FSR_5.port, FSR_5.resolution);
-
-  printf("%d", FSR_0.sample);
-  printf(" %d", FSR_1.sample);
-  printf(" %d", FSR_2.sample);
-  printf(" %d", FSR_3.sample);
-  printf(" %d", FSR_4.sample);
-  printf(" %d", FSR_5.sample);
-#endif
-  
-  printf(" %d", FSR_6.sample);
-  printf(" %d\n", FSR_7.sample);
+  printf("\n");
+  for( uint8 i = 0; i<FSR_MAX_CHANNELS; i++ )
+  {
+    FSR[i].sample = HalAdcRead (FSR[i].port, FSR[i].resolution);
+    printf(" %d", FSR[i].sample);
+  }
+  
+//  FSR_6.sample = HalAdcRead (FSR_6.port, FSR_6.resolution);      //Read in raw voltage signal
+//  FSR_7.sample = HalAdcRead (FSR_7.port, FSR_7.resolution);   //Read in raw voltage signal
+//  
+//#ifdef NOBOARD
+//  FSR_0.sample = HalAdcRead (FSR_0.port, FSR_0.resolution);
+//  FSR_1.sample = HalAdcRead (FSR_1.port, FSR_1.resolution);
+//  FSR_2.sample = HalAdcRead (FSR_2.port, FSR_2.resolution);
+//  FSR_3.sample = HalAdcRead (FSR_3.port, FSR_3.resolution);
+//  FSR_4.sample = HalAdcRead (FSR_4.port, FSR_4.resolution);
+//  FSR_5.sample = HalAdcRead (FSR_5.port, FSR_5.resolution);
+
+//  printf("%d", FSR_0.sample);
+//  printf(" %d", FSR_1.sample);
+//  printf(" %d", FSR_2.sample);
+//  printf(" %d", FSR_3.sample);
+//  printf(" %d", FSR_4.sample);
+//  printf(" %d", FSR_5.sample);
+//#endif
+  
+//  printf(" %d", FSR_6.sample);
+//  printf(" %d\n", FSR_7.sample);
+  
+  osal_set_event( Application_TaskID, NEW_SAMPLES_READY);
 }
 
 /*********************************************************************/
@@ -164,7 +193,8 @@
 {
   Application_TaskID = TaskID;
   
-  osal_set_event( fsr400_TaskID, CONVERTING_EVT);
+//  osal_set_event( fsr400_TaskID, CONVERTING_EVT);
+  osal_start_timerEx( fsr400_TaskID, CONF_THREE_STATE_EVT, CONF_THREE_STATE_TIMEOUT );
 }
 
 /*********************************************************************/
@@ -176,4 +206,14 @@
 
 /*********************************************************************/
 
+uint16 GetSample ( uint8 index )
+{
+  if( index < FSR_MAX_CHANNELS )
+    return FSR[index].sample;
+  else
+    return 0;
+}
+
+/*********************************************************************/
+
 #endif //FSR400

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.h (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/fsr400.h Thu Apr 24 16:09:16 2014
@@ -9,14 +9,18 @@
  * CONSTANTS
  */
 
+#ifdef NOBOARD
+#define FSR_MAX_CHANNELS                      8
+#else
+#define FSR_MAX_CHANNELS                      2
+#endif
 
 #define CONF_THREE_STATE_TIMEOUT              20000 //20 seconds
 #define SAMPLING_TIMEOUT                      200 //200 milliseconds
 
-
 #define CONF_THREE_STATE_EVT                  0x0001
 #define CONVERTING_EVT                        0x0002
-
+#define NEW_SAMPLES_READY                     0x0200
 /*********************************************************************
  *                         TYPEDEFS
  *********************************************************************/
@@ -37,5 +41,6 @@
 void Start_Converting ( byte TaskID );
 void Samples ( void );
 void Stop_Converting ( void );
+uint16 GetSample ( uint8 index );
 
 #endif //FSR400

Added: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.c (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.c Thu Apr 24 16:09:16 2014
@@ -1,0 +1,331 @@
+
+#ifdef POWER
+
+/*********************************************************************
+ * INCLUDES
+ */
+ 
+#ifdef NOBOARD
+#include "hal_outboard_cfg.h"
+#else
+#include "hal_board_cfg.h"
+#endif
+
+#include "power.h"
+#include "hal_adc.h"
+#include "OSAL_Timers.h"
+#include "OSAL.h"
+#include "OSAL_Tasks.h"
+#include "math.h"
+
+/*********************************************************************
+ * CONSTANTS
+ */
+#define MAX_SAMPLE_VALUE 					1024
+
+/*********************************************************************
+ * LOCAL VARIABLES
+ */
+ 
+byte Power_TaskID;
+byte Power_Application_TaskID = TASK_NO_TASK;
+
+uint32 numberOfSamples;
+uint8 channel;
+SingleSensingConf_t Voltage;
+SingleSensingConf_t Current[CHANNELS_NUMBER];
+
+GlobalSensingConf_t Power[CHANNELS_NUMBER];
+
+/*********************************************************************
+ * @fn          Power_Init
+ *
+ * @brief       Set the ports in 3-State Mode
+ *              Initialize the structures
+ *
+ * @param       task_id
+ *
+ * @return      none
+ */
+ void Power_Init ( byte task_id )
+{
+  Power_TaskID = task_id;
+  
+  //3STATE PORT CONFIG
+  P0INP |= (1<<7); // P0_7 3state mode
+  P0INP |= (1<<6); // P0_6 3state mode
+  
+#ifdef NOBOARD
+  //HOW MANY CHANNELS? WHICH?
+//  P0INP |= (1<<?); // P0_? 3state mode
+#endif  
+  
+  //VOLTAGE PORT IS ALWAYS P0_7
+  Voltage.port = HAL_ADC_CHANNEL_OPEN_7;
+  Voltage.resolution = HAL_ADC_RESOLUTION_OPEN_10;
+  Voltage.posPeak = (MAX_SAMPLE_VALUE-1);
+  Voltage.negPeak = 0;
+  Voltage.RATIO = (230.0*11.0/10.85) * (3.3 / ( SetRef(&Voltage) - 1));  // schedina 1
+//  Voltage.RATIO = (230.0*11.0/10.45) * (3.3 / ( SetRef(&Voltage) - 1));  // schedina 2
+  // 230.0 : tensione di rete
+  // 11: fattore di scala (100k+10k)/10k
+  // 10.45: tensione nominale del trasformatore
+  
+  for( uint8 i = 0; i<CHANNELS_NUMBER; i++)
+  {
+    Current[i].resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+    Current[i].posPeak = MAX_SAMPLE_VALUE/2;
+    Current[i].negPeak = MAX_SAMPLE_VALUE/2;
+    Current[i].zero = MAX_SAMPLE_VALUE/2;
+//  Current[i].RATIO = ( ( 2000.0 / 440.0 ) * (3.3 / ( SetRef(&Current[i]) - 1)));  //schedina 1 CT1
+//    Current[i].RATIO = ( ( 2000.0 / 101.5 ) * (3.3 / ( SetRef(&Current[i]) - 1)));  //schedina 1 CT2
+    Current[i].RATIO = ( 19.07 /*( 2000.0 / 114.0 )*/ * (3.3 / ( SetRef(&Current[i]) - 1)));   //schedina 2 CT1
+//    Current[i].RATIO = ( 16.17 /*( 2000.0 / 120.0 )*/ * (3.3 / ( SetRef(&Current[i]) - 1)));   //schedina 3 CT1
+  // 2000: fattore di trasformazione del trasformatore
+  // 114: resistenza di burden
+    switch(i)
+    {
+    case 0:
+      Current[i].port = HAL_ADC_CHANNEL_OPEN_6;
+      break;
+      
+    default:
+      break;
+    }
+    
+    Power[i].instP = 0;
+    Power[i].sumP = 0;
+    Power[i].realPower = 0;
+    Power[i].energy = 0;
+  }
+  
+  numberOfSamples = 0;
+  channel = 0;
+  
+}
+  
+/*********************************************************************
+ * @fn      Power_EventLoop
+ *
+ * @brief   Sensing Task event processor.  This function
+ *          is called to process all events for the task.  
+ *
+ * @param   task_id  - The OSAL assigned task ID.
+ * @param   events - events to process.  This is a bit map and can
+ *                   contain more than one event.
+ *
+ * @return  none
+ */
+
+UINT16 Power_EventLoop( byte task_id, UINT16 events )
+{
+  switch ( events ) 
+  {
+    case READINGS_EVT:
+      Readings();
+      return (events ^ READINGS_EVT);
+	  
+    case FINISH_READINGS_BLOCK_EVT:
+      Finish_Readings ();
+      return (events ^ FINISH_READINGS_BLOCK_EVT);
+	  
+    case SAMPLE_PROCESSING_EVT:
+      Sample_Processing ();
+      return (events ^ SAMPLE_PROCESSING_EVT);
+	  
+    default:
+      return 0; // Discard unknown events
+  }
+}
+
+/*********************************************************************
+ * @fn          Readings
+ *
+ * @brief       
+ *
+ * @param       none
+ *
+ * @return      none
+ */
+
+void Readings ( void )
+{
+  osal_start_timerEx( Power_TaskID, READINGS_EVT, SAMPLING_TIMEOUT ); // restart the timer 37ms
+  
+  if ( numberOfSamples < MAX_VALUES )
+  {
+	Current[channel].sample = HalAdcRead ( Current[channel].port, Current[channel].resolution );
+	Voltage.sample = HalAdcRead ( Voltage.port, Voltage.resolution );
+        
+        numberOfSamples++;                          //Count number of times looped.
+	
+	osal_set_event( Power_TaskID, SAMPLE_PROCESSING_EVT );
+        
+  }
+  else
+  {
+//	osal_stop_timerEx( Power_TaskID, READINGS_EVT );
+	numberOfSamples = 0;
+	osal_set_event( Power_TaskID, FINISH_READINGS_BLOCK_EVT );
+  }
+}
+/*********************************************************************/
+
+void Sample_Processing ( void )
+{
+  float zero = zeroVolt( &Voltage );
+  Voltage.filtered = ((float)Voltage.sample - zero);
+  Voltage.sq= Voltage.filtered * Voltage.filtered;              //1) square voltage values
+  Voltage.sum += Voltage.sq;                                    //2) sum
+  
+  zero = zeroAmp( &Current[channel] );
+  Current[channel].filtered = ((float)Current[channel].sample - zero);
+  Current[channel].sq= Current[channel].filtered * Current[channel].filtered;     //1) square voltage values
+  Current[channel].sum += Current[channel].sq;                                    //2) sum
+  
+  Power[channel].instP = Voltage.filtered * Current[channel].filtered;
+  Power[channel].sumP += Power[channel].instP;
+  
+}
+
+/*********************************************************************/
+
+void Finish_Readings ( void )
+{
+  Voltage.RMS = ( Voltage.RATIO * sqrt( Voltage.sum / MAX_VALUES ));
+  Current[channel].RMS = ( Current[channel].RATIO * sqrt( Current[channel].sum / MAX_VALUES ));
+  Power[channel].realPower =  Voltage.RATIO * Current[channel].RATIO * ( Power[channel].sumP / MAX_VALUES );
+  
+  if( Power[channel].realPower < 0 )
+    Power[channel].realPower = 0;
+  
+  Power[channel].energy += ( Power[channel].realPower * 0.00174722 ); // (170 * 37ms)/3600s = Wattora
+
+//  osal_set_event( Power_Application_TaskID, NEW_READY_SAMPLES_EVT );
+  Power_SendMsg();
+  
+  Power[channel].sumP = 0;
+  Current[channel].sum = 0;
+  Voltage.sum = 0;
+  
+#ifdef NOBOARD
+  if ( channel < (CHANNELS_NUMBER-1) )
+    channel++;
+  else 
+    channel = 0;
+#endif
+  
+}
+
+/*********************************************************************/
+
+float zeroVolt ( SingleSensingConf_t* Target )
+{
+  const uint16 fastDecay = 16;
+  const uint16 slowDecay = 1024;
+
+  if (Target->sample > Target->posPeak)
+    Target->posPeak += ((Target->sample - Target->posPeak )/fastDecay);
+  else
+    Target->posPeak += ((Target->sample - Target->posPeak )/slowDecay);
+	
+  if (Target->sample < Target->negPeak )
+    Target->negPeak += ((Target->sample - Target->negPeak )/fastDecay);
+  else
+    Target->negPeak += ((Target->sample - Target->negPeak )/slowDecay);
+
+  return ((Target->posPeak + Target->negPeak) / 2);
+}
+
+/*********************************************************************/
+
+float zeroAmp ( SingleSensingConf_t* Target )
+{
+  const uint16 fastDecay = 16;
+  const uint16 slowDecay = 1024;
+  const uint16 threshold = 10;
+    
+  if (Target->sample > Target->posPeak )
+    Target->posPeak  += ((Target->sample - Target->posPeak )/fastDecay);
+  else
+    Target->posPeak += ((Target->sample - Target->posPeak )/slowDecay);
+	
+  if (Target->sample < Target->negPeak )
+    Target->negPeak += ((Target->sample - Target->negPeak )/fastDecay);
+  else
+    Target->negPeak += ((Target->sample - Target->negPeak )/slowDecay);
+
+  if (( Target->zero < Target->negPeak)
+      || (Target->zero > Target->posPeak )
+      || ((Target->posPeak  - Target->negPeak) < threshold))
+    Target->zero = ((Target->posPeak + Target->negPeak) / 2);
+	
+  return Target->zero;
+}
+/*********************************************************************/
+
+float SetRef ( SingleSensingConf_t* Target )
+{
+  float calc = 0;
+  switch ( Target -> resolution )
+  {
+    case HAL_ADC_RESOLUTION_OPEN_7:
+      calc = (float)pow(2,7);
+      break;
+      
+    case HAL_ADC_RESOLUTION_OPEN_9:
+      calc = (float)pow(2,9);
+      break;
+      
+    case HAL_ADC_RESOLUTION_OPEN_10:
+      calc = (float)pow(2,10);
+      break;
+      
+    case HAL_ADC_RESOLUTION_OPEN_12:
+      calc = (float)pow(2,12);
+      break;
+      
+  }
+
+  return calc;
+}
+
+/*********************************************************************/
+uint8 static Power_SendMsg ( void )
+{
+  powerIncomingMsg_t *pCmd;
+  
+  if ( Power_Application_TaskID == TASK_NO_TASK )
+    return ( TRUE );
+  
+  pCmd = (powerIncomingMsg_t *)osal_msg_allocate( sizeof ( powerIncomingMsg_t ) );
+  
+  if ( pCmd != NULL )
+  {
+    // fill in the message
+    pCmd->hdr.event = POWER_INCOMING_MSG;
+    pCmd->channel = channel;
+    pCmd->energy = Power[channel].energy;
+    pCmd->IRMS = Current[channel].RMS;
+    pCmd->VRMS = Voltage.RMS;
+    pCmd->realPower = Power[channel].realPower;
+    
+    /* send message through task message */
+    osal_msg_send( Power_Application_TaskID, (uint8 *)pCmd );
+  }
+  
+  return ( TRUE );
+}
+
+/*********************************************************************/
+void Power_Start_Reading ( byte TaskID )
+{
+  Power_Application_TaskID = TaskID;
+  
+  osal_set_event( Power_TaskID, READINGS_EVT);
+}
+
+/*********************************************************************/
+
+
+#endif

Added: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.h (added)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/power.h Thu Apr 24 16:09:16 2014
@@ -1,0 +1,90 @@
+
+#ifdef POWER
+
+/*********************************************************************
+ * INCLUDES
+ */
+
+#include "ZComDef.h"
+#include "OSAL.h"
+
+/*********************************************************************
+ * CONSTANTS
+ */
+
+#ifdef NOBOARD
+#define CHANNELS_NUMBER                       2 //HOW MANY CHANNELS?
+#else
+#define CHANNELS_NUMBER                       1
+#endif
+
+#define CHANNEL0                              0x00
+
+#define MAX_VALUES			      170
+
+#define CONF_THREE_STATE_TIMEOUT              25000 //25 seconds
+#define SAMPLING_TIMEOUT                      37 //37 milliseconds
+
+#define READINGS_EVT                          0x0002
+#define SAMPLE_PROCESSING_EVT		      0x0003
+#define FINISH_READINGS_BLOCK_EVT             0x0004
+
+#define CONF_THREE_STATE_EVT                  0x0200
+
+#define POWER_INCOMING_MSG                     0xE1
+/*********************************************************************
+ * VARIABLES
+ */
+
+/*********************************************************************
+ *                         TYPEDEFS
+ *********************************************************************/
+ 
+typedef struct
+{
+  uint8 port;                 //sensing port
+  uint8 resolution;           //adc resolution
+  uint16 sample;
+  float sum;
+  float sq;
+  float RATIO;
+  float RMS;
+  float filtered;
+  float posPeak;
+  float negPeak;
+  float zero;
+}SingleSensingConf_t;
+
+typedef struct
+{
+  float instP;
+  double sumP;
+  float realPower;
+  double energy;
+}GlobalSensingConf_t;
+
+typedef struct
+{
+  osal_event_hdr_t hdr;         // OSAL header
+  uint8 channel;                // which channel
+  double energy;
+  float IRMS;
+  float VRMS;
+  float realPower;
+}powerIncomingMsg_t;
+/*********************************************************************
+ *  FUNCTIONS
+ */
+
+extern void Power_Init ( byte task_id );
+extern UINT16 Power_EventLoop( byte task_id, UINT16 events );
+void Readings ( void );
+float SetRef ( SingleSensingConf_t* Target );
+void Power_Start_Reading ( byte TaskID );
+void Finish_Readings ( void );
+void Sample_Processing ( void );
+float zeroVolt ( SingleSensingConf_t* Target );
+float zeroAmp ( SingleSensingConf_t* Target );
+uint8 static Power_SendMsg ( void );
+
+#endif //POWER

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.c
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.c (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.c Thu Apr 24 16:09:16 2014
@@ -5,7 +5,11 @@
  * INCLUDES
  */
  
+#ifdef NOBOARD
+#include "hal_outboard_cfg.h"
+#else
 #include "hal_board_cfg.h"
+#endif
 
 #include "sensing_POT.h"
 #include "hal_adc.h"
@@ -17,28 +21,20 @@
  * CONSTANTS
  */
 #define MAX_SAMPLE_VALUE 					1024
+
 /*********************************************************************
  * LOCAL VARIABLES
  */
  
 byte Sensing_POT_TaskID;
-byte Application_TaskID;
+byte Power_Application_TaskID;
 
 uint32 numberOfSamples;
-
+uint8 channel;
 SingleSensingConf_t Voltage;
-SingleSensingConf_t Current;
-
-float instP;
-double sumP;
-float realPower;
-
-float posPeak_V = (MAX_SAMPLE_VALUE-1);
-float negPeak_V = 0;
-
-float posPeak_I = MAX_SAMPLE_VALUE/2;
-float negPeak_I = MAX_SAMPLE_VALUE/2;
-float zero_I = MAX_SAMPLE_VALUE/2;
+SingleSensingConf_t Current[CHANNELS_NUMBER];
+
+GlobalSensingConf_t Power[CHANNELS_NUMBER];
 
 /*********************************************************************
  * @fn          Sensing_POT_Init
@@ -58,22 +54,50 @@
   P0INP |= (1<<7); // P0_7 3state mode
   P0INP |= (1<<6); // P0_6 3state mode
   
+#ifdef NOBOARD
+  //HOW MANY CHANNELS? WHICH?
+//  P0INP |= (1<<?); // P0_? 3state mode
+#endif  
+  
+  //VOLTAGE PORT IS ALWAYS P0_7
   Voltage.port = HAL_ADC_CHANNEL_OPEN_7;
   Voltage.resolution = HAL_ADC_RESOLUTION_OPEN_10;
-//  Voltage.RATIO = (230.0*11.0/10.9) * (3.3 / ( SetRef(&Voltage) - 1));  // 230*11/10.9
-  Voltage.RATIO = (230.0*11.0/10.45) * (3.3 / ( SetRef(&Voltage) - 1));  // 230*11/10.9
+  Voltage.posPeak = (MAX_SAMPLE_VALUE-1);
+  Voltage.negPeak = 0;
+  Voltage.RATIO = (230.0*11.0/10.85) * (3.3 / ( SetRef(&Voltage) - 1));  // schedina 1
+//  Voltage.RATIO = (230.0*11.0/10.45) * (3.3 / ( SetRef(&Voltage) - 1));  // schedina 2
   // 230.0 : tensione di rete
   // 11: fattore di scala (100k+10k)/10k
   // 10.45: tensione nominale del trasformatore
   
-  Current.port = HAL_ADC_CHANNEL_OPEN_6;
-  Current.resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
-//  Current.RATIO = ( ( 2000.0 / 96.0 ) * (3.3 / ( SetRef(&Current) - 1)));  
-  Current.RATIO = ( ( 2000.0 / 114.0 ) * (3.3 / ( SetRef(&Current) - 1))); 
+  for( uint8 i = 0; i<CHANNELS_NUMBER; i++)
+  {
+    Current[i].resolution = HAL_ADC_RESOLUTION_OPEN_10 ;
+    Current[i].posPeak = MAX_SAMPLE_VALUE/2;
+    Current[i].negPeak = MAX_SAMPLE_VALUE/2;
+    Current[i].zero = MAX_SAMPLE_VALUE/2;
+//  Current[i].RATIO = ( ( 2000.0 / 440.0 ) * (3.3 / ( SetRef(&Current[i]) - 1)));  //schedina 1 CT1
+    Current[i].RATIO = ( ( 2000.0 / 101.5 ) * (3.3 / ( SetRef(&Current[i]) - 1)));  //schedina 1 CT2
+//  Current[i].RATIO = ( ( 2000.0 / 114.0 ) * (3.3 / ( SetRef(&Current[i]) - 1)));   //schedina 2 CT1
   // 2000: fattore di trasformazione del trasformatore
   // 114: resistenza di burden
+    switch(i)
+    {
+    case 0:
+      Current[i].port = HAL_ADC_CHANNEL_OPEN_6;
+      break;
+      
+    default:
+      break;
+    }
+    
+    Power[i].instP = 0;
+    Power[i].sumP = 0;
+    Power[i].realPower = 0;
+  }
   
   numberOfSamples = 0;
+  channel = 0;
   
 //  osal_start_timerEx( Sensing_POT_TaskID, CONF_THREE_STATE_EVT, CONF_THREE_STATE_TIMEOUT );
 }
@@ -132,10 +156,10 @@
   
   if ( numberOfSamples < MAX_VALUES )
   {
-	Current.sample = HalAdcRead ( Current.port, Current.resolution );
+	Current[channel].sample = HalAdcRead ( Current[channel].port, Current[channel].resolution );
 	Voltage.sample = HalAdcRead ( Voltage.port, Voltage.resolution );
-	
-	numberOfSamples++;                          //Count number of times looped.
+        
+        numberOfSamples++;                          //Count number of times looped.
 	
 	osal_set_event( Sensing_POT_TaskID, SAMPLE_PROCESSING_EVT );
         
@@ -151,19 +175,19 @@
 
 void Sample_Processing ( void )
 {
-  float zero = zeroVolt( Voltage.sample );
+  float zero = zeroVolt( &Voltage );
   Voltage.filtered = ((float)Voltage.sample - zero);
   Voltage.sq= Voltage.filtered * Voltage.filtered;              //1) square voltage values
   Voltage.sum += Voltage.sq;                                    //2) sum
   
-  zero = zeroAmp( Current.sample );
-  Current.filtered = ((float)Current.sample - zero);
-  Current.sq= Current.filtered * Current.filtered;              //1) square voltage values
-  Current.sum += Current.sq;                                    //2) sum
-  
-  instP = Voltage.filtered * Current.filtered;
-  sumP +=instP;
-
+  zero = zeroAmp( &Current[channel] );
+  Current[channel].filtered = ((float)Current[channel].sample - zero);
+  Current[channel].sq= Current[channel].filtered * Current[channel].filtered;     //1) square voltage values
+  Current[channel].sum += Current[channel].sq;                                    //2) sum
+  
+  Power[channel].instP = Voltage.filtered * Current[channel].filtered;
+  Power[channel].sumP += Power[channel].instP;
+  
 }
 
 /*********************************************************************/
@@ -171,65 +195,68 @@
 void Finish_Readings ( void )
 {
   Voltage.RMS = ( Voltage.RATIO * sqrt( Voltage.sum / MAX_VALUES ));
-  Current.RMS = ( Current.RATIO * sqrt( Current.sum / MAX_VALUES ));
-  realPower =  Voltage.RATIO * Current.RATIO * (sumP / MAX_VALUES );
-  
-  osal_set_event( Application_TaskID, NEW_READY_SAMPLES_EVT );
-  
-  sumP = 0;
-  Current.sum = 0;
+  Current[channel].RMS = ( Current[channel].RATIO * sqrt( Current[channel].sum / MAX_VALUES ));
+  Power[channel].realPower =  Voltage.RATIO * Current[channel].RATIO * (Power[channel].sumP / MAX_VALUES );
+
+  osal_set_event( Power_Application_TaskID, NEW_READY_SAMPLES_EVT );
+  
+  Power[channel].sumP = 0;
+  Current[channel].sum = 0;
   Voltage.sum = 0;
-}
-
-/*********************************************************************/
-
-float zeroVolt ( uint16 sample )
+  
+#ifdef NOBOARD
+  if ( channel < (CHANNELS_NUMBER-1) )
+    channel++;
+  else 
+    channel = 0;
+#endif
+  
+}
+
+/*********************************************************************/
+
+float zeroVolt ( SingleSensingConf_t* Target )
 {
   const uint16 fastDecay = 16;
   const uint16 slowDecay = 1024;
-//  static float posPeak = (MAX_SAMPLE_VALUE-1);
-//  static float negPeak = 0;
-
-  if (sample > posPeak_V)
-    posPeak_V += ((sample-posPeak_V)/fastDecay);
-  else
-    posPeak_V += ((sample-posPeak_V)/slowDecay);
+
+  if (Target->sample > Target->posPeak)
+    Target->posPeak += ((Target->sample - Target->posPeak )/fastDecay);
+  else
+    Target->posPeak += ((Target->sample - Target->posPeak )/slowDecay);
 	
-  if (sample < negPeak_V)
-    negPeak_V += ((sample-negPeak_V)/fastDecay);
-  else
-    negPeak_V += ((sample-negPeak_V)/slowDecay);
-
-  return ((posPeak_V + negPeak_V) / 2);
-}
-
-/*********************************************************************/
-
-float zeroAmp ( uint16 sample )
+  if (Target->sample < Target->negPeak )
+    Target->negPeak += ((Target->sample - Target->negPeak )/fastDecay);
+  else
+    Target->negPeak += ((Target->sample - Target->negPeak )/slowDecay);
+
+  return ((Target->posPeak + Target->negPeak) / 2);
+}
+
+/*********************************************************************/
+
+float zeroAmp ( SingleSensingConf_t* Target )
 {
   const uint16 fastDecay = 16;
   const uint16 slowDecay = 1024;
   const uint16 threshold = 10;
-//  static float posPeak = MAX_SAMPLE_VALUE/2;
-//  static float negPeak = MAX_SAMPLE_VALUE/2;
-//  static float zero = MAX_SAMPLE_VALUE/2;
-
-  if (sample > posPeak_I)
-    posPeak_I += ((sample-posPeak_I)/fastDecay);
-  else
-    posPeak_I += ((sample-posPeak_I)/slowDecay);
+    
+  if (Target->sample > Target->posPeak )
+    Target->posPeak  += ((Target->sample - Target->posPeak )/fastDecay);
+  else
+    Target->posPeak += ((Target->sample - Target->posPeak )/slowDecay);
 	
-  if (sample < negPeak_I)
-    negPeak_I += ((sample-negPeak_I)/fastDecay);
-  else
-    negPeak_I += ((sample-negPeak_I)/slowDecay);
-
-  if ((zero_I < negPeak_I)
-      || (zero_I > posPeak_I)
-      || ((posPeak_I - negPeak_I) < threshold))
-    zero_I = ((posPeak_I + negPeak_I) / 2);
+  if (Target->sample < Target->negPeak )
+    Target->negPeak += ((Target->sample - Target->negPeak )/fastDecay);
+  else
+    Target->negPeak += ((Target->sample - Target->negPeak )/slowDecay);
+
+  if (( Target->zero < Target->negPeak)
+      || (Target->zero > Target->posPeak )
+      || ((Target->posPeak  - Target->negPeak) < threshold))
+    Target->zero = ((Target->posPeak + Target->negPeak) / 2);
 	
-  return zero_I;
+  return Target->zero;
 }
 /*********************************************************************/
 
@@ -263,7 +290,7 @@
 
 void Start_Reading ( byte TaskID )
 {
-  Application_TaskID = TaskID;
+  Power_Application_TaskID = TaskID;
   
   osal_set_event( Sensing_POT_TaskID, READINGS_EVT);
 }
@@ -277,9 +304,9 @@
 
 /*********************************************************************/
 
-float GetRealPower ( void )
-{
-  return realPower;
+float GetRealPower ( uint8 index )
+{
+  return Power[index].realPower;
 }
 
 /*********************************************************************/

Modified: projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.h
==============================================================================
--- projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.h (original)
+++ projects/zb4osgi/members/firmware/open2530/sources/ZStack/Target_OPEN2530/sensing_POT.h Thu Apr 24 16:09:16 2014
@@ -10,6 +10,13 @@
 /*********************************************************************
  * CONSTANTS
  */
+
+#ifdef NOBOARD
+#define CHANNELS_NUMBER                       2 //HOW MANY CHANNELS?
+#else
+#define CHANNELS_NUMBER                       1
+#endif
+
 #define MAX_VALUES			      170
 
 #define CONF_THREE_STATE_TIMEOUT              25000 //25 seconds
@@ -40,8 +47,17 @@
   float RATIO;
   float RMS;
   float filtered;
+  float posPeak;
+  float negPeak;
+  float zero;
 }SingleSensingConf_t;
 
+typedef struct
+{
+  float instP;
+  double sumP;
+  float realPower;
+}GlobalSensingConf_t;
 
 /*********************************************************************
  *  FUNCTIONS
@@ -55,8 +71,8 @@
 void Finish_Readings ( void );
 void Sample_Processing ( void );
 float GetRMS ( SingleSensingConf_t* Target );
-float GetRealPower ( void );
-float zeroVolt ( uint16 sample );
-float zeroAmp ( uint16 sample );
+float GetRealPower ( uint8 index );
+float zeroVolt ( SingleSensingConf_t* Target );
+float zeroAmp ( SingleSensingConf_t* Target );
 
 #endif //SENSING_POT




More information about the Commit mailing list