|
- /**
- @page discovering_blocks Discovering BLOCKS
-
- Any BLOCKS application would be pretty limited without the ability to discover the BLOCKS that are connected to your computer.
- This page gives an overview of the classes and methods available to aid BLOCKS discovery and provides sample code for getting notifications of any connections or disconnections.
-
- @section the_block_topology_object The BlockTopology object
-
- Groups of connected Lightpad and Control Blocks are described by a BlockTopology.
-
- A %BlockTopology contains an array of references to Block objects, which provide access to Lightpad and Control %Block functionality, and an array of BlockDeviceConnection objects, which describe the connections between devices.
- Once you have a %BlockTopology you have all the information required to visualise and interact with your Lightpads and Control Blocks.
- For more information about using %Block objects see the @ref the_block_object section.
-
- For Lightpads and Control Blocks a %BlockTopology can be obtained from a PhysicalTopologySource.
-
- @section the_physical_topology_source_object The PhysicalTopologySource object
-
- The current topology is provided by a %PhysicalTopologySource.
- When instantiated, a %PhysicalTopologySource monitors for any connections from your computer to any Lightpad and Control Blocks and the PhysicalTopologySource::getCurrentTopology() method returns the current %BlockTopology.
-
- In an environment where Lightpad and Control can be connected and disconnected dynamically it is convenient to register your code for <code>topologyChanged()</code> callbacks from a %PhysicalTopologySource.
- Then, when the current %BlockTopology changes, your application is able to react to the new configuration.
- You can do this by inheriting from the TopologySource::Listener class and registering as a listener to a %PhysicalTopologySource object.
- When you inherit from %TopologySource::Listener you must override the pure virtual method TopologySource::Listener::topologyChanged(), which is then called by a %PhysicalTopologySource on topology changes when you register as a listener.
- A simple example is shown below.
-
- BlockFinder.h:
- @include BlockFinder/BlockFinder.h
-
- BlockFinder.cpp:
- @include BlockFinder/BlockFinder.cpp
-
- When instantiated this class simply monitors for changes to the connected Lightpad and Control Blocks and prints some information about them to stdout.
- Once you have the current %BlockTopology object you have access to the available %Block objects and can start to interact with them.
- A more complex application would probably do much more in the <tt>topologyChanged()</tt> method---see the @ref example_applications page.
-
- @section the_block_object The Block object
-
- A Block object is the main entry point for communicating between your application and any Lightpad and Control Blocks that are connected to your computer.
-
- All the different %Block types are subclasses of %Block so they provide the same interface (see the %Block class documentation).
- About half of the %Block public member functions return information about the physical device it represents.
- In the example code above you can see that we use some of these methods to query each %Block about its current status.
- The more interesting %Block methods return pointers to objects you can use to control and receive events from individual BLOCKS.
- More detail about these methods can be obtained from the following pages:
-
- @ref getting_touch_events
-
- @ref getting_control_button_events
-
- @ref controlling_led_grids
-
- @ref controlling_led_strips
- */
|