[zb4osgi-changeset] [scm] ZigBee 4 OSGi repository change: r404 - in /projects/zb4osgi/sandbox/howlab/telegesis-driver-api: ./ src/ src/main/ src/main/assembly/ src/main/java/ src/main/java/es/ src/main/java/es/unizar/ src/main/java/es/unizar/howlab/ src/main/java/es/unizar/howlab/core/ src/main/java/es/unizar/howlab/core/zigbee/ src/main/java/es/unizar/howlab/core/zigbee/telegesis/ src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/ src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ src/main/resources/ src/main/resources/es/ src/main/resources/es/unizar/ src/main/resources/es/unizar/howlab/ src/main/resources/es/unizar/howlab/core/ src/main/resources/es/unizar/howlab/core/zigbee/ src/main/resources/es/unizar/howlab/core/zigbee/telegesis/ src/main/resources/es/unizar/howlab/core/zigbee/telegesis/driver/ src/main/resources/es/unizar/howlab/core/zigbee/telegesis/driver/api/ src/test/ src/test/java/ src/test/java/es/ src/test/java/es/unizar/ src/test/java/es/unizar/howlab/ src/test/java/es/unizar/howlab/core/ src/test/java/es/unizar/howlab/core/zigbee/ src/test/java/es/unizar/howlab/core/zigbee/telegesis/ src/test/java/es/unizar/howlab/core/zigbee/telegesis/driver/

scm-notify at zb4osgi.aaloa.org scm-notify at zb4osgi.aaloa.org
Thu Feb 2 13:18:35 CET 2012


Author: alvaro.marco
Date: Thu Feb  2 13:18:35 2012
New Revision: 404

Log:
howlab import

Added:
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/LICENSE
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/es.unizar.howlab.io.serial.xml
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/nbactions.xml
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/pom.xml
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/assembly/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/assembly/felix.xml
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/Driver.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/DriverListener.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDevice.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDeviceListener.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNode.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNodeListener.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/Constants.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ByteAddress.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/EUI64Address.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkAddress.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkInfo.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkScanInfo.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ZigbeeNodeType.java
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/LICENSE
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/core/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/core/zigbee/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/core/zigbee/telegesis/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/core/zigbee/telegesis/driver/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/es/unizar/howlab/core/zigbee/telegesis/driver/api/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/howlab/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/howlab/core/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/howlab/core/zigbee/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/howlab/core/zigbee/telegesis/
    projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/test/java/es/unizar/howlab/core/zigbee/telegesis/driver/

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/LICENSE
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/LICENSE (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/LICENSE Thu Feb  2 13:18:35 2012
@@ -1,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/es.unizar.howlab.io.serial.xml
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/es.unizar.howlab.io.serial.xml (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/es.unizar.howlab.io.serial.xml Thu Feb  2 13:18:35 2012
@@ -1,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    Document   : config.xml
+    Created on : June 8, 2011, 9:15 AM
+    Author     : ciru
+    Description:
+        Purpose of the document follows.
+-->
+
+<config>
+
+    <connections>
+<!--         <connection>
+            <protocol>rs232</protocol>
+            <where>COM5</where>
+            <how>115200</how>
+            <connectTime>100</connectTime>
+            <retry>true</retry>
+        </connection>-->
+         <connection>
+            <protocol>rs232</protocol>
+            <where>COM6</where>
+            <how>115200</how>
+            <connectTime>100</connectTime>
+            <retry>true</retry>
+        </connection>
+        <!--connection>
+            <protocol>tcp</protocol>
+            <where>192.168.0.3</where>
+            <how>10001</how>
+            <connectTime>1000</connectTime>
+            <retry>false</retry>
+        </connection
+        <connection>
+            <protocol>tcp</protocol>
+            <where>192.168.0.5</where>
+            <how>10001</how>
+            <connectTime>1000</connectTime>
+            <retry>false</retry>
+        </connection>-->
+    </connections>
+</config>

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/nbactions.xml
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/nbactions.xml (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/nbactions.xml Thu Feb  2 13:18:35 2012
@@ -1,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+    <action>
+        <actionName>run</actionName>
+        <goals>
+            <goal>package</goal>
+            <goal>antrun:run</goal>
+        </goals>
+        <activatedProfiles>
+            <activatedProfile>run-on-felix</activatedProfile>
+        </activatedProfiles>
+        <properties>
+                <skipTests>true</skipTests>
+            </properties>
+    </action>
+    <action>
+        <actionName>debug</actionName>
+        <goals>
+            <goal>package</goal>
+            <goal>antrun:run</goal>
+        </goals>
+        <properties>
+            <vm.args>-Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</vm.args>
+            <jpda.listen>true</jpda.listen>
+        </properties>
+        <activatedProfiles>
+            <activatedProfile>run-on-felix</activatedProfile>
+        </activatedProfiles>
+    </action>
+    <action>
+        <actionName>profile</actionName>
+        <goals>
+            <goal>package</goal>
+            <goal>antrun:run</goal>
+        </goals>
+        <properties>
+            <vm.args>${profiler.args}</vm.args>
+            <!-- XXX <java jvm="${profiler.java}" ...> -->
+            <profiler.action>profile</profiler.action>
+        </properties>
+        <activatedProfiles>
+            <activatedProfile>run-on-felix</activatedProfile>
+        </activatedProfiles>
+    </action>
+    <action>
+            <actionName>build</actionName>
+            <goals>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <skipTests>true</skipTests>
+            </properties>
+        </action>
+    <action>
+            <actionName>rebuild</actionName>
+            <goals>
+                <goal>clean</goal>
+                <goal>install</goal>
+            </goals>
+            <properties>
+                <skipTests>true</skipTests>
+            </properties>
+        </action>
+    <action>
+            <actionName>CUSTOM-Prepare a Release</actionName>
+            <displayName>Prepare a Release</displayName>
+            <goals>
+                <goal>release:prepare</goal>
+            </goals>
+        </action>
+    <action>
+            <actionName>CUSTOM-Perform a Release</actionName>
+            <displayName>Perform a Release</displayName>
+            <goals>
+                <goal>release:perform</goal>
+            </goals>
+        </action>
+</actions>

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/pom.xml
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/pom.xml (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/pom.xml Thu Feb  2 13:18:35 2012
@@ -1,0 +1,256 @@
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>es.unizar.howlab.core.zigbee.telegesis</groupId>
+    <artifactId>telegesis-driver-api</artifactId>
+    <version>1.5-SNAPSHOT</version>
+    <packaging>bundle</packaging>
+
+    <name>telegesis-driver-api OSGi Bundle</name>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0, January 2004</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>    
+
+    <!-- Añadir ruta developer, estableciendo la ruta al trunk: -->
+    <scm>
+        <developerConnection>scm:svn:https://web.hermes.cps.unizar.es/repos/howlab/Software/core/zigbee/telegesis/driver-api/trunk</developerConnection>    
+    </scm>
+
+    <!-- Añadir distribution management (en el settings.xml tenemos que tener el usuario y contraseña para el id en el server: -->
+    <distributionManagement>
+        <repository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>repo_nas_rel</id>
+            <url>ftp://howlab.dyndns.org/repo/software/releases/</url>
+            <layout>default</layout>
+        </repository>
+        <snapshotRepository>
+            <uniqueVersion>false</uniqueVersion>
+            <id>repo_nas_snap</id>
+            <url>ftp://howlab.dyndns.org/repo/software/snapshots</url>
+            <layout>default</layout>
+        </snapshotRepository> 
+    </distributionManagement>
+        <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <repositories>
+    <repository>
+            <id>repo_nas_rel</id>
+            <url>ftp://howlab.dyndns.org/repo/software/releases/</url>        
+    </repository>    
+    <repository>
+            <id>repo_nas_snap</id>
+            <url>ftp://howlab.dyndns.org/repo/software/snapshots</url>        
+    </repository>    
+    </repositories>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>es.unizar.howlab.core.zigbee.telegesis</groupId>
+            <artifactId>telegesis-gateway-api</artifactId>
+            <version>1.3</version>
+            <type>bundle</type>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <version>2.2.0</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                    </instructions>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>2.3.2</version>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.8</version>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>            
+            </plugin>
+            <!-- Añadir pluggin maven-release-plugin  -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <version>2.2.1</version>
+            </plugin>                
+        </plugins>
+
+        <!-- Añadir extensiones wagon para que se pueda acceder al respositorio de distribucion por ftp -->
+        <extensions> 
+			<extension> 
+                <groupId>org.apache.maven.wagon</groupId> 
+                <artifactId>wagon-ftp</artifactId> 
+                <version>1.0</version>                 
+            </extension>
+        </extensions> 
+        </build>
+
+    <profiles>
+        <profile>
+            <id>build-for-felix</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>org.apache.felix.main</artifactId>
+                    <version>3.0.7</version>
+                    <scope>provided</scope>
+                </dependency>
+                <!-- To include a shell:
+                <dependency>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>org.apache.felix.gogo.shell</artifactId>
+                    <version>0.6.1</version>
+                </dependency>
+                -->
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <version>1.6</version>
+                        <executions>
+                            <execution>
+                                <id>compile</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>run</goal>
+                                </goals>
+                                <configuration>
+                                    <target>
+                                        <pathconvert property="plugins.jars" pathsep="${path.separator}">
+                                            <path refid="maven.runtime.classpath" />
+                                            <map from="${project.build.directory}${file.separator}classes" to="" />
+                                        </pathconvert>
+                                        <pathconvert pathsep=" " property="bundles">
+                                            <path path="${plugins.jars}" />
+                                            <mapper>
+                                                <chainedmapper>
+                                                    <flattenmapper />
+                                                    <globmapper from="*" to="file:modules/*" casesensitive="no" />
+                                                </chainedmapper>
+                                            </mapper>
+                                        </pathconvert>
+                                        <propertyfile file="${project.build.directory}/config.properties">
+                                            <entry key="felix.auto.start" value="${bundles} file:modules/${project.build.finalName}.jar" />
+                                            <entry key="org.osgi.framework.bootdelegation" value="*" />
+                                        </propertyfile>
+                                        <copy file="${maven.dependency.org.apache.felix.org.apache.felix.main.jar.path}" tofile="${project.build.directory}/felix.jar" />
+                                    </target>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-assembly-plugin</artifactId>
+                        <version>2.2</version>
+                        <executions>
+                            <execution>
+                                <id>create-executable-jar</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>single</goal>
+                                </goals>
+                                <configuration>
+                                    <descriptors>
+                                        <descriptor>${basedir}/src/main/assembly/felix.xml</descriptor>
+                                    </descriptors>
+                                    <finalName>${project.build.finalName}</finalName>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>run-on-felix</id>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.felix</groupId>
+                    <artifactId>org.apache.felix.main</artifactId>
+                    <version>3.0.7</version>
+                    <scope>provided</scope>
+                </dependency>
+                <!-- org.apache.felix:org.apache.felix.gogo.shell:0.6.1 useless from Maven since stdin is swallowed -->
+            </dependencies>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-antrun-plugin</artifactId>
+                        <version>1.6</version>
+                        <configuration>
+                            <target>
+                                <property name="vm.args" value="" />
+                                <pathconvert property="plugins.jars" pathsep="${path.separator}">
+                                    <path refid="maven.runtime.classpath" />
+                                    <map from="${project.build.directory}${file.separator}classes" to="" />
+                                </pathconvert>
+                                <makeurl property="urls" separator=" ">
+                                    <path path="${plugins.jars}" />
+                                    <path location="${project.build.directory}/${project.build.finalName}.jar" />
+                                </makeurl>
+                                <propertyfile file="${project.build.directory}/run.properties">
+                                    <entry key="felix.auto.start" value="${urls}" />
+                                    <entry key="felix.auto.deploy.action" value="uninstall,install,update,start" />
+                                    <entry key="org.osgi.framework.storage" value="${project.build.directory}${file.separator}felix-cache" />
+                                    <entry key="org.osgi.framework.bootdelegation" value="*" />
+                                </propertyfile>
+                                <makeurl property="run.properties.url" file="${project.build.directory}/run.properties" />
+                                <java fork="true" jar="${maven.dependency.org.apache.felix.org.apache.felix.main.jar.path}">
+                                    <sysproperty key="felix.config.properties" value="${run.properties.url}" />
+                                    <jvmarg line="${vm.args}" />
+                                </java>
+                            </target>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/assembly/felix.xml
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/assembly/felix.xml (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/assembly/felix.xml Thu Feb  2 13:18:35 2012
@@ -1,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<assembly>
+ <id>all</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <dependencySets>
+    <dependencySet>
+        <useProjectArtifact>false</useProjectArtifact>
+        <outputDirectory>modules</outputDirectory>
+        <excludes>
+          <exclude>org.apache.felix:org.apache.felix.main</exclude>
+        </excludes>
+    </dependencySet>
+  </dependencySets>
+  <files>
+    <file>
+      <source>${project.build.directory}/${project.build.finalName}.jar</source>
+      <outputDirectory>modules</outputDirectory>
+    </file>
+    <file>
+      <source>${project.build.directory}/felix.jar</source>
+      <outputDirectory>bin</outputDirectory>
+    </file>
+    <file>
+      <source>${project.build.directory}/config.properties</source>
+      <outputDirectory>conf</outputDirectory>
+    </file>
+  </files>
+</assembly>

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/Driver.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/Driver.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/Driver.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,369 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+import es.unizar.howlab.core.zigbee.telegesis.driver.util.*;
+import es.unizar.howlab.core.zigbee.telegesis.gateway.Gateway;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface Driver {
+
+    // <editor-fold defaultstate="collapsed" desc="NETWORK CONTROL">
+    /**
+     * Retrieves current network information, if joined to the network or null 
+     * if not joined to any network
+     * @return NetworkInformation
+     */
+    public NetworkInfo getNetworkInfo();
+
+    /**
+     * Ask driver to retrieve current network information from the dongle. Will 
+     * return NetworkInformation if joined to the network or null if not joined 
+     * to any network
+     * @return NetworkInformation
+     */
+    public NetworkInfo readNetworkInfo();
+    
+    /**
+     * Performs a network scan to list available networks on the surroundings
+     * @return list of network founds
+     */
+    public NetworkScanInfo[] findNetworks();
+
+    /**
+     * Request driver to create a new network
+     * Note: if already joined to any network, this will return fail
+     * @return True if success, false otherwise
+     */
+    public boolean createNetwork();
+
+    /**
+     * Request driver to create a new network at provided channel and with provided 
+     * PANID
+     * Note: if already joined to any network, this will return fail
+     * @param channel Network channel (between 11 and 26)
+     * @param PID Network PAN ID, in the format XXXX
+     * @return TRUE if success, false otherwise
+     */
+    public boolean createNetwork(int channel, String PID);
+
+    /**
+     * Request driver to create a new network at provided channel and with provided 
+     * PANID, with security link key
+     * Note: if already joined to any network, this will return fail
+     * @param channel Network channel (between 11 and 26)
+     * @param PID Network PAN ID, in the format XXXX
+     * @param linkKey 128 bits link security key (16 characters, or 32 characters 
+     * representing 128 bit hexadecimal notation) 
+     * @return TRUE if success, false otherwise
+     */
+    public boolean createNetwork(int channel, String PID, String linkKey);
+
+    /**
+     * Request driver to create a new network at any channel and with provided 
+     * PANID
+     * Note: if already joined to any network, this will return fail
+     * @param PID Network PAN ID, in the format XXXX
+     * @return TRUE if success, false otherwise
+     */
+    public boolean createNetwork(String PID);
+
+    /**
+     * Request driver to create a new network at any channel and with provided 
+     * PANID, with security link key
+     * Note: if already joined to any network, this will return fail
+     * @param PID Network PAN ID, in the format XXXX
+     * @param linkKey 128 bits link security key (16 characters, or 32 characters 
+     * representing 128 bit hexadecimal notation) 
+     * @return TRUE if success, false otherwise
+     */
+    public boolean createNetwork(String PID, String linkKey);
+    /**
+     * Request driver to join any network
+     * Note: if already joined to any network, this will return fail
+     * @return True if success, false otherwise
+     */
+    public boolean joinNetwork();
+
+    /**
+     * Request driver to join the network with provided PANID
+     * Note: if already joined to any network, this will return fail
+     * @param PID Network PAN ID, in the format XXXX
+     * @return True if success, false otherwise
+     */
+    public boolean joinNetwork(String PID);
+
+    /**
+     * Request driver to join the network with provided PANID, and supplying a link
+     * security key
+     * Note: if already joined to any network, this will return fail
+     * @param PID Network PAN ID, in the format XXXX
+     * @param linkKey 128 bits link security key (16 characters, or 32 characters
+     * representing 128 bit hexadecimal notation) 
+     * @return True if success, false otherwise
+     */
+    public boolean joinNetwork(String PID, String linkKey);
+
+    /**
+     * Request driver to join the network with provided PANID and channel
+     * Note: if already joined to any network, this will return fail
+     * @param channel Network channel (between 11 and 26)
+     * @param PID Network PAN ID, in the format XXXX
+     * @return True if success, false otherwise
+     */
+    public boolean joinNetwork(int channel, String PID);
+
+    /**
+     * Request driver to join the network with provided PANID and channel, and 
+     * supplying a link security key
+     * Note: if already joined to any network, this will return fail
+     * @param channel Network channel (between 11 and 26)
+     * @param PID Network PAN ID, in the format XXXX
+     * @param linkKey 128 bits link security key (16 characters, or 32 characters
+     * representing 128 bit hexadecimal notation) 
+     * @return True if success, false otherwise
+     */
+    public boolean joinNetwork(int channel, String PID, String linkKey);
+
+    /**
+     * Request driver to leave current network.
+     * Note: if not joined to any network, this will return sucess
+     * @return True if success, false otherwise
+     */
+    public boolean leaveNetwork();
+
+    /**
+     * Request driver to perform a network scan to detect nodes
+     * @return true if success, false otherwise
+     */
+    public boolean scanNetwork();
+
+    /**
+     * Request node to leave network 
+     * @param node ZigbeeNode requested to leave network
+     * @return True if success, false otherwise
+     */
+    public boolean leaveNetwork(ZigbeeNode node);
+    
+    /**
+     * Ask driver for existing node with provided address, which may be 64 bits 
+     * EUI64Addr or 16 bits network address
+     * @param address String representation of EUI64Addr (8 hex chars) or NodeId
+     * (4 chars)
+     * @return Related node, or null if node not found
+     */
+    public ZigbeeNode getNode(String address);
+
+    /**
+     * Ask Network's nodes list
+     * @return 
+     */
+    public ZigbeeNode[] getNodes();
+
+    /**
+     * Ask for network's coordinator
+     * @return ZigbeeNode coordinator or null if not joined to network
+     */
+    public ZigbeeNode getNetworkCoordinator();
+
+    /**
+     * Ask for gateway ZigbeeNode
+     * @return ZigbeeNode Gateway Node
+     */
+    public ZigbeeNode getDongle();
+    
+    /**
+     * Request driver to send a message to the related node
+     * @param node ZigbeeNode
+     * @param message data to send
+     * @return True if success, false otherwise
+     */
+    public boolean sendMessage(ZigbeeNode node, byte[] message);
+
+    /**
+     * Request driver to send a message to the related ZigbeeDevice 
+     * (Node+EndPoint)
+     * Note: ProfileID is assumed to be the same of the ZigbeeDevice if none is
+     * is profided (null)
+     * @param device ZigbeeDevice
+     * @param profileID ProfileID for the related message
+     * @param clusterID ClusterID for the related message
+     * @param message data to send
+     * @return True if success, false otherwise
+     */
+    public boolean sendMessage(ZigbeeDevice device, String profileID, String clusterID, byte[] message);
+
+    /**
+     * Request driver to send a broadcast message
+     * @param message data to send
+     * @return True if success, false otherwise
+     */
+    public boolean sendBroadcastMessage(byte[] message);
+
+    /**
+     * Request driver to read a register on the related node
+     * @param node ZigbeeNode
+     * @param regAddress register to read
+     * @return Register data or null if some error
+     */
+    public String readRegister(ZigbeeNode node, short regAddress);
+
+    /**
+     * Request driver to write a register on the related node
+     * @param node ZigbeeNode
+     * @param regAddress register to write
+     * @param data register data
+     * @return True if success, false otherwise
+     */
+    public boolean writeRegister(ZigbeeNode node, short regAddress, String data);
+
+    // </editor-fold>
+    // <editor-fold defaultstate="collapsed" desc="NODE DISCOVERY">
+    /**
+     * Request driver to retrieve and update active end points from a given node
+     * @param node ZigbeeNode
+     * @return True if success, false otherwise
+     */
+    public boolean updateActiveEndPoints(ZigbeeNode node);
+
+    /**
+     * Request driver to retrieve and update End point descriptor for the given 
+     * Zigbee device
+     * @param device ZigbeeDevice
+     * @return True if success, false otherwise
+     */
+    public boolean updateEndPointDescriptor(ZigbeeDevice device);
+
+    /**
+     * Request driver to retrieve and update neighbours for the given node
+     * @param node ZigbeeNode
+     * @return True if success, false otherwise
+     */
+    public boolean updateNeighbourTable(ZigbeeNode node);
+
+    /**
+     * Request driver to find router for the given node
+     * @param node ZigbeeNode
+     * @return True if success, false otherwise
+     */
+    public boolean findRoute(ZigbeeNode node);
+    
+    // </editor-fold>
+    // <editor-fold defaultstate="collapsed" desc="DRIVER CONTROL">
+    public enum DriverStatus {
+
+        /**
+         * Driver is on unknonw state
+         */
+        Unknown,
+        /**
+         * Driver is initializing
+         */
+        Initializing,
+        /**
+         * Driver is disabled, not attending commands nor events
+         */
+        Disabled,
+        /**
+         * Driver is ready to execute tasks
+         */
+        Ready,
+        /**
+         * Driver is performing automated tasks
+         */
+        Running,
+        /**
+         * Driver is finishins automated task prior to stop
+         */
+        Stopping
+    }
+
+    /**
+     * Tries to open connection with physical gateway and sets initial 
+     * configuration
+     * NOTE: communication wont be established until init returns TRUE. 
+     * Must be called prior to use
+     * @return TRUE if sucessfully open, FALSE in other case
+     */
+    public boolean init();
+
+    /**
+     * Start driver managed operations'
+     * @return TRUE if sucessfully startetd, FALSE in other case
+     */
+    public boolean start();
+
+    /**
+     * Stop driver managed operations'
+     * @return TRUE if sucessfully stopped, FALSE in other case
+     */
+    public boolean stop();
+
+    /**
+     * Disable driver. Changes status to DriverStatus.Disabled
+     */
+    public void disable();
+
+    /**
+     * Request driver status
+     * @return current Driver status
+     */
+    public DriverStatus getStatus();
+
+    /**
+     * Reguest driver Gateway
+     * @return underlying driver gateway 
+     */
+    public Gateway getGateway();
+    /**
+     * Tries locking driver to prevent use while executing protected operations
+     * Note: calling this method will NOT stop execution
+     * @param milliseconds Max. lock time prior to autommatic unlock
+     * @return TRUE if sucessful lock or FALSE in other case (locked by another thread)
+     */
+    public boolean tryLock(int milliseconds);
+
+    /**
+     * Locks driver to prevent use while executing protected operations
+     * Note: calling this method WILL stop execution until sucessfully lock 
+     * @param milliseconds Max. lock time prior to autommatic unlock
+     */
+    public void lock(int milliseconds);
+
+    /**
+     * Unlock driver to allow executing protected operations by another threads
+     * Note: Thread must be owner of the lock to unlock
+     * @return TRUE if sucessfully unlcoked or FALSE in other case (not lock owner)
+     */
+    public boolean unlock();
+
+    // </editor-fold>
+    /**
+     * Register a Driver listener
+     * @param lstnr 
+     */
+    public void registerListener(DriverListener lstnr);
+
+    /**
+     * Unregister a Driver listener
+     * @param lstnr 
+     */
+    public void unregisterListener(DriverListener lstnr);
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/DriverListener.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/DriverListener.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/DriverListener.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,75 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface DriverListener {
+
+    /**
+     * Handles notifications for new nodes discovered on the network
+     * @param node New node created
+     * @param drv Driver creating node
+     */
+    public void newNode(ZigbeeNode node, Driver drv);
+
+    /**
+     * Handles notifications for nodes leaving network (or disconnected)
+     * @param node Node leaving network
+     * @param drv Driver 
+     */
+    public void nodeLeft(ZigbeeNode node, Driver drv);
+
+    /**
+     * Handles notifications for new devices discovered on the network
+     * @param device New Device created
+     * @param drv Driver creating device
+     */
+    public void newDevice(ZigbeeDevice device, Driver drv);
+    
+    /**
+     * Handles notifications for devices leaving network (or disconnected)
+     * @param device Device leaving network
+     * @param drv Driver 
+     */
+    public void deviceLeft(ZigbeeDevice device, Driver drv);
+
+    /**
+     * Handles notifications about joining network
+     * @param channel Network channel
+     * @param PANID Network PID
+     * @param EPID Network Extended PID
+     * @param drv Driver joining network
+     */
+    public void joinNetwork(int channel, String PANID, String EPID, Driver drv);
+
+    /**
+     * Handles notifications about leaving network
+     * @param drv Driver leaving network
+     */
+    public void leftNetwork(Driver drv);
+
+    /**
+     * Handles status change notifications
+     * @param status Current driver status
+     * @param oldStatus previous driver status
+     * @param drv Driver changing status
+     */
+    public void statusChanged(Driver.DriverStatus status, Driver.DriverStatus oldStatus, Driver drv);
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDevice.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDevice.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDevice.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,128 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+/**
+ * Representation for a ZigbeeDevice (EndPoint)
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface ZigbeeDevice {
+    
+    public enum DeviceStatus{
+        /**
+         * Device status is unknonw, initializing node
+         */
+        Unknown,
+        /**
+         * Device is performing discovering operations
+         */
+        Discovering,
+        /**
+         * Device is performing recovering operations
+         */
+        Recovering,
+        /**
+         * Device is ready to attend requests
+         */
+        Ready,
+        /**
+         * Device is performing some operation
+         */
+        Busy,
+        /**
+         * Device is on an error state
+         */
+        Error
+    }
+
+    /**
+     * Retrieves current device status
+     * @return device status
+     */
+    public DeviceStatus getStatus();
+
+    /**
+     * Retrieves asocciated EndPoint 
+     * @return 
+     */
+    public short getEndPoint();
+    
+    /**
+     * Returns End Point Profile ID
+     * @return 
+     */
+    public String getProfileId();
+    
+    /**
+     * Returns Zigbee deviceID
+     * @return 
+     */
+    public String getDeviceId();
+    
+    /**
+     * Returns list of supported in clusters (client)
+     * @return 
+     */
+    public String[] getInClusterList();
+    
+    /**
+     * Returns list of supported out clusters (server)
+     * @return 
+     */
+    public String[] getOutClusterList();
+    
+    /**
+     * Retrieves physical node containing ZigbeeDevice
+     * @return 
+     */
+    public ZigbeeNode getZigbeeNode();
+    
+    /**
+     * Executes a endpoint descriptor query on the device.
+     * @return True when success, false otherwise
+     */
+    public boolean discover();
+    
+    /**
+     * Executes a Recovery operation on the device.
+     * @return True when success, false otherwise
+     */
+    public boolean recover();
+    
+    /**
+     * Request to send a message to the related ZigbeeDevice
+     * Note: ProfileID is assumed to be the same of the ZigbeeDevice if none is
+     * is profided (null)
+     * @param profileID ProfileID for the related message
+     * @param clusterID ClusterID for the related message
+     * @param message data to send
+     * @return True if sucess, false otherwise
+     */
+    public boolean sendMessage(String profileID, String clusterID, byte[] message);
+    
+    /**
+     * Register a Zigbee device listener
+     * @param lstnr 
+     */
+    public void registerListener(ZigbeeDeviceListener lstnr);
+
+    /**
+     * Unregister a Zigbee device listener
+     * @param lstnr 
+     */
+    public void unregisterListener(ZigbeeDeviceListener lstnr);
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDeviceListener.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDeviceListener.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeDeviceListener.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,42 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface ZigbeeDeviceListener {
+    
+    /**
+     * Handles messages received by ZigbeeDevice
+     * @param profileID profileID for the message received
+     * @param clusterID clusterID for the message received
+     * @param message Message received
+     * @param zb Zigbee device receiving message
+     */
+    public void messageReceived(String profileID, String clusterID, byte[] message, ZigbeeDevice zb);
+    
+    /**
+     * Handles status change notifications
+     * @param status Current device status
+     * @param oldStatus previous device status
+     * @param zb Zigbee changing status
+     */
+    public void statusChanged(ZigbeeDevice.DeviceStatus status, ZigbeeDevice.DeviceStatus oldStatus, ZigbeeDevice zb);
+
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNode.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNode.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNode.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,199 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+import es.unizar.howlab.core.zigbee.telegesis.driver.util.*;
+import java.util.HashMap;
+
+/**
+ * Representation for a ZigbeeNode
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface ZigbeeNode {
+
+    public enum NodeStatus {
+
+        /**
+         * Node status is unknonw, initializing node
+         */
+        Unknown,
+        /**
+         * Node is performing discovering operations
+         */
+        Discovering,
+        /**
+         * Node is performing recovering operations
+         */
+        Recovering,
+        /**
+         * Node is ready to attend requests
+         */
+        Ready,
+        /**
+         * Node is performing some operation
+         */
+        Busy,
+        /**
+         * Node is on an error state
+         */
+        Error
+    }
+
+    /**
+     * Retrieves current node status
+     * @return node status
+     */
+    public NodeStatus getStatus();
+
+    /**
+     * Retrieves node type (coordinator, router...)
+     * @return ZigbeeDeviceType
+     */
+    public ZigbeeNodeType getType();
+
+    /**
+     * Retrieves node's EUI64Address (MAC)
+     * @return EUI64Addr
+     */
+    public EUI64Address getEUI64Addr();
+
+    /**
+     * Retrieves node's Newtwork address
+     * @return NodeID
+     */
+    public NetworkAddress getNodeID();
+
+    /**
+     * Retrieves node's devices list
+     * @return ZigbeeDevice array with ZigbeeDevices list
+     */
+    public ZigbeeDevice[] getZigbeeDevices();
+
+    /**
+     * Executes a ZigbeeDevices query on the node.
+     * @return True when success, false otherwise
+     */
+    public boolean discoverZigbeeDevices();
+
+    /**
+     * Executes a Neighbour query on the node.
+     * @return True when success, false otherwise
+     */
+    public boolean discoverNeighbours();
+
+    /**
+     * Executes a Recovery operation on the node.
+     * @return True when success, false otherwise
+     */
+    public boolean recover();
+    
+    /**
+     * Executes a parent query on the node.
+     * @return True when success, false otherwise
+     */
+    public boolean discoverParent();
+        
+    /**
+     * Retrieves devices with provided endPoint
+     * @param endPoint EndPoint id of requested device
+     * @return ZigbeeDevice
+     */
+    public ZigbeeDevice getZigbeeDevice(short endPoint);
+
+    /**
+     * Retrieves list of Node's neighbours
+     * @return Neighbour's list
+     */
+    public ZigbeeNode[] getNeighbours();
+
+    /**
+     * Retrieves node's parent
+     * @return node parent or null (if node has no parent)
+     */
+    public ZigbeeNode getParent();
+
+    /**
+     * Retrieves list of Node's children
+     * @return Children's list or null if ZigbeeEndDevice
+     */
+    public ZigbeeNode[] getChildren();
+
+    /**
+     * Retrieves list of nodes from coordinator to relaed Node
+     * @return ZigbeeNode list
+     */
+    public ZigbeeNode[] getRoute();
+
+    /**
+     * Retrieves RSSI level of last hop
+     * @return RSSI Level (in dBm)
+     */
+    public int getRSSI();
+
+    /**
+     * Retrieves LQI level of last hop
+     * @return LQI indicator
+     */
+    public short getLQI();
+
+    /**
+     * Request to send a message to the related ZigbeeNode
+     * @param message data to send
+     * @return True if sucess, false otherwise
+     */
+    public boolean sendMessage(byte[] message);
+
+    /**
+     * Request to read a register of the related ZigbeeNode
+     * @param regAddress Register to read
+     * @return Register value, or null if some error
+     */
+    public String readRegister(short regAddress);
+
+    /**
+     * Request last retrieved value of provided register in the related ZigbeeNode
+     * @param regAddress Register to read
+     * @return Last register known value, or null if not yet readed
+     */
+    public String getRegister(short regAddress);
+
+    /**
+     * Request last retrieved value of all registers readed in the related ZigbeeNode
+     * @return HashMap containing registers address (String) and values
+     */
+    public HashMap<String, String> getRegisters();
+
+    /**
+     * Request to write a register of the related ZigbeeNode
+     * @param regAddress Register to write
+     * @param data Data to write
+     * @return True if sucess, false otherwise
+     */
+    public boolean writeRegister(short regAddress, String data);
+
+    /**
+     * Register a Zigbee node listener
+     * @param lstnr 
+     */
+    public void registerListener(ZigbeeNodeListener lstnr);
+
+    /**
+     * Unregister a Zigbee node listener
+     * @param lstnr 
+     */
+    public void unregisterListener(ZigbeeNodeListener lstnr);
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNodeListener.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNodeListener.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/ZigbeeNodeListener.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,40 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public interface ZigbeeNodeListener {
+    
+    /**
+     * Handles messages received by ZigbeeNode
+     * @param message Message received
+     * @param zn Zigbee node receiving message
+     */
+    public void messageReceived(byte[] message, ZigbeeNode zn);
+    
+    /**
+     * Handles status change notifications
+     * @param status Current node status
+     * @param oldStatus previous node status
+     * @param zn Zigbee node changing status
+     */
+    public void statusChanged(ZigbeeNode.NodeStatus status, ZigbeeNode.NodeStatus oldStatus, ZigbeeNode zn);
+
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/Constants.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/Constants.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/osgi/Constants.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,34 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.osgi;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public class Constants {
+    public static final String DRIVER_DONGLE_ADDRESS = "driver.dongle_address";
+    public static final String DRIVER_FIRMWARE_REVISION = "driver.firmware_revision";
+    public static final String DRIVER_DEVICE_NAME = "driver.device_name";
+    public static final String DRIVER_ZIGBEE_NODE_ADDRESS = "driver.zigbee_node_address";
+    public static final String DRIVER_ZIGBEE_NODE_TYPE = "driver.zigbee_node_type";
+    public static final String DRIVER_ZIGBEE_DEVICE_ADDRESS = "driver.zigbee_device_address";
+    public static final String DRIVER_ZIGBEE_DEVICE_ENDPOINT = "driver.zigbee_device_endpoint";
+    public static final String DRIVER_ZIGBEE_DEVICE_ID = "driver.zigbee_device_id";
+    public static final String DRIVER_ZIGBEE_DEVICE_PROFILE_ID = "driver.zigbee_device_profile_id";
+    
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ByteAddress.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ByteAddress.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ByteAddress.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,99 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public abstract class ByteAddress {
+
+    private byte[] byteAddress;
+    private String strAddress = "";
+
+    /**
+     * String-based address constructor
+     * Note: non-hexadecimal characters will be ommited
+     * @param address string representation
+     * @param size number of bytes
+     */
+    protected ByteAddress(String address, int size) {
+        byteAddress = new byte[size];
+        // eliminamos los caracteres que no sean hexadecimales
+        String clearAddr = address.toUpperCase().replaceAll("[^0123456789ABCDEF]", "");
+        for (int i = 0; i < size; i++) {
+            String strByte = clearAddr.substring(0, 2);
+            clearAddr = clearAddr.substring(2);
+            strAddress = strAddress + strByte;
+            byteAddress[i] = (byte) Integer.parseInt(strByte, 16);
+        }
+    }
+
+    /**
+     * Byte-based address constructor
+     * @param address byte representation
+     * @param size number of bytes
+     */
+    protected ByteAddress(byte[] address, int size) {
+        byteAddress = new byte[size];
+        for (int i = 0; i < size; i++) {
+            byteAddress[i] = address[i];
+            strAddress = strAddress + String.format("%02X", address[i]);
+        }
+    }
+
+    @Override
+    public String toString() {
+        return strAddress;
+    }
+
+    /**
+     * Gets formatted string representation fo related address
+     * @return string with formatted representation
+     */
+    public String toFormattedString() {
+        return toFormattedString(".");
+    }
+
+    /**
+     * Gets formatted string representation fo related address
+     * @param separator character for separating bytes
+     * @return string with formatted representation
+     */
+    public String toFormattedString(String separator) {
+        String formatted = String.format("%02X", byteAddress[0]);
+        for (int i = 1; i < byteAddress.length; i++) {
+            formatted = formatted + separator + String.format("%02X", byteAddress[i]);
+        }
+        return formatted;
+
+    }
+
+    public static String getUnformated(String formattedAddress) {
+        // eliminamos todos los caracteres que no sean hexadecimales
+        return formattedAddress.toUpperCase().replaceAll("[^0123456789ABCDEF]", "");
+
+    }
+
+    /**
+     * Gets byte representation of related address
+     * @return byte array containing address
+     */
+    public byte[] getBytes() {
+        return byteAddress;
+    }
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/EUI64Address.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/EUI64Address.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/EUI64Address.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,41 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+/**
+ *
+ * @author Alvaro
+ */
+public class EUI64Address extends ByteAddress{
+    /**
+     * String-based address constructor
+     * Note: non-hexadecimal characters will be ommited
+     * @param address string representation
+     */
+    public EUI64Address(String address) {
+        super(address, 8);
+    }
+
+    /**
+     * Byte-based address constructor
+     * @param address byte representation. Must be 8 bytes lenght
+     */
+    public EUI64Address(byte[] address) {
+        super(address, 8);
+    }
+    
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkAddress.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkAddress.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkAddress.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,43 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+
+/**
+ *
+ * @author Alvaro
+ */
+public class NetworkAddress extends ByteAddress{
+    /**
+     * String-based address constructor
+     * Note: non-hexadecimal characters will be ommited
+     * @param address string representation
+     */
+    public NetworkAddress(String address) {
+        super(address, 2);
+    }
+
+    /**
+     * Byte-based address constructor
+     * @param address byte representation. Must be 2 bytes lenght
+     */
+    public NetworkAddress(byte[] address) {
+        super(address, 2);
+    }
+
+    
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkInfo.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkInfo.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkInfo.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,67 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public class NetworkInfo {
+    private int mChannel;
+    private String mPID;
+    private String mEPID;
+
+    @Override
+    public String toString() {
+        return String.format("Channel: %d PID: %s EPID: %s ", mChannel, mPID, mEPID);
+    }
+
+
+    /**
+     * Parametrzized constructor
+     * @param channel Network channel
+     * @param PID Network PID
+     * @param EPID Network Extended PID
+     */
+    public NetworkInfo(int channel, String PID, String EPID) {
+        mChannel = channel;
+        mPID = PID;
+        mEPID = EPID;
+
+    }
+
+    /**
+     * @return Network IEEE 802.15.4 channel (11-26)
+     */
+    public int getChannel() {
+        return mChannel;
+    }
+
+    /**
+     * @return Network's PID
+     */
+    public String getPID() {
+        return mPID;
+    }
+
+    /**
+     * @return Network's EPID
+     */
+    public String getEPID() {
+        return mEPID;
+    }
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkScanInfo.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkScanInfo.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/NetworkScanInfo.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,86 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+/**
+ *
+ * @author HowLab, University of Zaragoza (alvaro)
+ */
+public class NetworkScanInfo {
+    private int mChannel;
+    private String mPID;
+    private String mEPID;
+    private short mProfile;
+    private boolean mJoinPermission;
+
+    @Override
+    public String toString() {
+        return String.format("Channel: %d PID: %s EPID: %s Profile: %s JoinPermission: %b", mChannel, mPID, mEPID, mProfile, mJoinPermission);
+    }
+
+    /**
+     * Parametrized constructor
+     * @param channel Network channel
+     * @param PID Network PID
+     * @param EPID Network Extended PID
+     * @param profile Network profile
+     * @param joinPermission Network join permission
+     */
+    public NetworkScanInfo(int channel, String PID, String EPID, short profile, boolean joinPermission) {
+
+        mChannel = channel;
+        mPID = PID;
+        mEPID = EPID;
+        mProfile = profile;
+        mJoinPermission = joinPermission;
+    }
+
+    /**
+     * @return the Channel
+     */
+    public int getChannel() {
+        return mChannel;
+    }
+
+    /**
+     * @return the PID
+     */
+    public String getPID() {
+        return mPID;
+    }
+
+    /**
+     * @return the EPID
+     */
+    public String getEPID() {
+        return mEPID;
+    }
+
+    /**
+     * @return the Profile
+     */
+    public short getProfile() {
+        return mProfile;
+    }
+
+    /**
+     * @return the JoinPermission
+     */
+    public boolean getJoinPermission() {
+        return mJoinPermission;
+    }
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ZigbeeNodeType.java
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ZigbeeNodeType.java (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/java/es/unizar/howlab/core/zigbee/telegesis/driver/util/ZigbeeNodeType.java Thu Feb  2 13:18:35 2012
@@ -1,0 +1,69 @@
+/*
+ * Copyright 2011-2012 HOWLab. http://howlab.unizar.es/
+ * Human OpenWare Research Lab. Universidad Zaragoza
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,   
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   
+ * See the License for the specific language governing permissions and   
+ * limitations under the License. 
+ */
+package es.unizar.howlab.core.zigbee.telegesis.driver.util;
+
+import es.unizar.howlab.core.zigbee.telegesis.gateway.ZigbeeDeviceType;
+
+/**
+ * Zigbee allowed devices
+ * @author alvaro
+ */
+public enum ZigbeeNodeType {
+
+    /**
+     * unknown device type
+     */
+    Unknown,
+    /**
+     * device is a FFD (full function device) coordinator
+     */
+    Coordinator,
+    /**
+     * device is a FFD (full function device) router
+     */
+    Router,
+    /**
+     * device is a RFD (reduced function device)
+     */
+    EndDevice,
+    /**
+     * device is a RFD (reduced function device) sleepy
+     */
+    SleepyEndDevice,
+    /**
+     * device is a RFD (reduced function device) mobile
+     */
+    MobileEndDevice;
+    
+    public static ZigbeeNodeType fromZigbeeDeviceType(ZigbeeDeviceType type){
+        switch (type){
+            case Coordinator:
+                return Coordinator;
+            case Router:
+                return Router;
+            case EndDevice:
+                return EndDevice;
+            case SleepyEndDevice:
+                return SleepyEndDevice;
+            case MobileEndDevice:
+                return MobileEndDevice;
+            default:
+                return Unknown;
+        }
+        
+    }
+}

Added: projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/LICENSE
==============================================================================
--- projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/LICENSE (added)
+++ projects/zb4osgi/sandbox/howlab/telegesis-driver-api/src/main/resources/LICENSE Thu Feb  2 13:18:35 2012
@@ -1,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.




More information about the Commit mailing list