Add general-use-and-purpose comment for Device interface.

Change-Id: Id6c24bb037790e1d8fd328225b84e036fe70179e
Reviewed-on: https://weave-review.googlesource.com/2860
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/include/weave/device.h b/include/weave/device.h
index b79e6a3..5d455de 100644
--- a/include/weave/device.h
+++ b/include/weave/device.h
@@ -23,6 +23,25 @@
 
 namespace weave {
 
+// This interface defines interactions with a Weave device.  Implemented in
+// weave::DeviceManager.  The general use of this class is to:
+// - Define the traits for the Weave schema the device is
+//    interested in using the AddTraitDefinitions() and
+//    AddTraitDefinitionsFromJson() functions.
+// - Define the components for the Weave schema the device is
+//    interested in using the AddComponent() function.
+// - Set the initial/default values of "state" portions of the schema using
+//    the SetStatePropertiesFromJson() and SetStateProperties() functions.
+// - Specify callback functions when a command (defined in the Weave schema)
+//    is received by the device using the AddCommandHandler() function.
+//
+// A daemon will typically create one instance of a class implementing
+// Device and will retain it for the life of the daemon using the Create()
+// function.
+//
+// For detailed examples of the usage of this class, see the examples/daemon
+// directory.
+
 // States of Gcd connection.
 enum class GcdState {
   kUnconfigured,        // Device was not registered.