applications.h

Go to the documentation of this file.
00001 /**
00002  * @file    applications.h
00003  * @brief   Documentation: Overview of official WOSH Applications
00004  ****************************************************************************
00005  * @author  Alessandro Polo
00006  * @version 0.8.527 $Id: applications.h 3774 2011-01-01 16:37:15Z alex $
00007  ****************************************************************************/
00008 /* Copyright (c) 2007-2011, WOSH - Wide Open Smart Home 
00009  * by Alessandro Polo - OpenSmartHome.com
00010  * All rights reserved.
00011  *
00012  * Redistribution and use in source and binary forms, with or without
00013  * modification, are permitted provided that the following conditions are met:
00014  *     * Redistributions of source code must retain the above copyright
00015  *       notice, this list of conditions and the following disclaimer.
00016  *     * Redistributions in binary form must reproduce the above copyright
00017  *       notice, this list of conditions and the following disclaimer in the
00018  *       documentation and/or other materials provided with the distribution.
00019  *     * Neither the name of the OpenSmartHome.com WOSH nor the
00020  *       names of its contributors may be used to endorse or promote products
00021  *       derived from this software without specific prior written permission.
00022  *
00023  * THIS SOFTWARE IS PROVIDED BY Alessandro Polo ''AS IS'' AND ANY
00024  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00025  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00026  * DISCLAIMED. IN NO EVENT SHALL Alessandro Polo BE LIABLE FOR ANY
00027  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00028  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00029  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00030  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00031  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00032  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00033  ****************************************************************************/
00034  
00035 /*! \page page_applications Applications
00036  *
00037  * This page describes (official) Applications that ships with WOSH.
00038  *
00039  * \par Official WOSH Applications:
00040  *
00041  *  - \ref page_applications_woshsrv
00042  *  - \ref page_applications_woshcesrv
00043  *  - \ref page_applications_woshshop
00044  *  - \ref page_applications_wosh3d
00045  *  - \ref page_applications_woshshell
00046  *  - \ref page_applications_woshremote
00047  *  - \ref page_applications_woshkiosk
00048  *
00049  * \section page_applications_toc Table of Contents:
00050  *
00051  *  - \ref page_applications_overview
00052  *  - \ref page_applications_philosophy
00053  *  - \ref page_applications_flow
00054  *
00055  *  - \ref page_applications_sample
00056  *
00057  *
00058  * \htmlonly <hr/> \endhtmlonly
00059  ****************************************************************************
00060  * \section page_applications_overview Overview
00061  *
00062  * A WOSH Application is defined as a generic software based on WOSH Framework.
00063  * 
00064  * Such applications are designed for end-users (inhabitants) and system/home administrators.
00065  *
00066  * Main goal of WOSH applications is to load, setup and boot the WOSH Kernel.
00067  * Usually they also expose some access/viewport to the user (graphical or console).
00068  * Because of that, these application are not expected to be complex and grow as the 
00069  * framework and its services.
00070  *
00071  * Beginners and Windows' users should give a look to \ref page_applications_woshshop "WOSH WorkShop":
00072  * a graphical application designed (mostly) for the administration of the whole system.
00073  * WoshShop is a good example of standalone vs. distributed/remote management, it can
00074  * control transparently the local kernel (integrated) and any reachable remote kernel both.
00075  * 
00076  * Another graphical application, started recently, is \ref page_applications_woshkiosk "WOSH KiosK".
00077  * KiosK is designed specifically for the inhabitant user, preferably running on a
00078  * touch-screen device. KiosK is the most user-friendly WOSH application.
00079  * \note The development of WOSH KiosK has been delayed.
00080  *
00081  * \ref page_applications_woshcesrv "WOSH CE Server" is a minimal server designed for
00082  * on smartphones and embedded devices, it hosts a specific bundle which exports messaging
00083  * and communication services to the WOSH Network (assuming device is always connected to the network).
00084  *
00085  * Last but not least, \ref page_applications_woshsrv "WOSH Server" is a console (CLI) application
00086  * running WoshKernel and a standard I/O console to WOSH Shell. It is designed to be
00087  * (one of) the main server and run 24/7.
00088  *
00089  * Latest introduced WOSH Application is \ref page_applications_wosh3d "WOSH 3D", it's a
00090  * graphical application based on QT and GLC library, able to render the abstract representation
00091  * of the house (see wosh::building).
00092  * \note The development of WOSH 3D is in early stage.
00093  *
00094  * Expert users and developers just love shell and ssh, \ref page_applications_woshshell "WOSH Shell"
00095  * is a mimimal (console) client application designed to control WOSH System (remotely).
00096  *
00097  *
00098  * Applications' source code is located in <a href="../../src/apps">/src/apps</a>
00099  * folder [<a href="../../src/apps/README">README</a>].
00100  *
00101  * Binaries are always built in <a href="../../bin">/bin</a> directory (eventually sub-folders).
00102  *
00103  * \note
00104  *  Because of WOSH framework itself is under development, application are not linked
00105  *  against the WOSH Library, but the whole WOSH Framework and bundles are directly
00106  *  included in final executable (static linking).
00107  *
00108  * Once a stable release of WOSH is available, applications will statically or dynamically link
00109  * against the WOSH Framework library and bundles will be loaded from shared or dynamic libraries.
00110  *
00111  *
00112  * \htmlonly <hr/> \endhtmlonly
00113  ****************************************************************************
00114  * \section page_applications_philosophy Design (philosophy)
00115  *
00116  * Consider a WOSH server (such as \ref page_applications_woshsrv "woshsrv"),
00117  * it makes sense to have the WOSH Kernel on it because it hosts services (bundles).
00118  *
00119  * Generally speaking, frameworks and middleware are useful because of abstraction, 
00120  * rapid development and well-defined interfaces/features.
00121  * So, why a graphical application like a remote controller or an embedded system
00122  * should implement custom accessing layers? In fact, having them based on the
00123  * same micro-kernel will speed up and simplify development and maintenance both.
00124  *
00125  * In other words: a WOSH application ships with a WOSH Kernel and acts as one
00126  * host of the WOSH network. The 'main' WOSH server running on the Residential gateway
00127  * (home server) and the \ref page_applications_woshremote "WOSH Remote" software
00128  * (running on the laptop) are two idempotent hosts of the WOSH network by many (most)
00129  * points of view.
00130  *
00131  * All WOSH applications are clients and servers at same time.
00132  *
00133  *
00134  * \htmlonly <hr/> \endhtmlonly
00135  ****************************************************************************
00136  * \section page_applications_flow Flow
00137  *
00138  * As said in previous sections, WOSH Applications share the underlying layer
00139  * (micro-kernel) and the (optional) configuration profile, because of that
00140  * the application flow follows the same structure.
00141  *
00142  * \msc
00143 Application,Settings,WoshKernel, QT;
00144 
00145 Application=>QT [label="Initialize QT Framework"];
00146 Application=>Settings [label="Initialize defaults and load settings"];
00147 |||;
00148 Application=>WoshKernel [label="Initialize Kernel", URL="\ref wosh::WoshKernel::init()"];
00149 Application=>WoshKernel [label="Start Kernel", URL="\ref wosh::WoshKernel::start()"];
00150 |||;
00151 --- [ label=" More threads are launched "];
00152 Application=>WoshKernel [label="Initialize explicit Bundles"];
00153 |||;
00154 Application=>Application [label="Setup optional user Session"];
00155 |||;
00156 Application=>WoshKernel [label="Acquire main thread"];
00157 |||;
00158 Application=>WoshKernel [label="Shutdown Kernel", URL="\ref wosh::WoshKernel::shutdown()"];
00159  * \endmsc
00160  *
00161  *
00162  * \htmlonly <hr/> \endhtmlonly
00163  ****************************************************************************
00164  * \section page_applications_sample Sample Log files
00165  *
00166  * A sample log file of \ref page_applications_woshsrv "woshsrv"
00167  * (<a href="../../var/log/sample.woshsrv.log">/var/log/sample.woshsrv.log</a>)
00168  *
00169  * A sample log file of \ref page_applications_woshshop "woshshop"
00170  * (<a href="../../var/log/sample.woshshop.log">/var/log/sample.woshshop.log</a>)
00171  *
00172  *
00173  ****************************************************************************
00174  *
00175  */

Generated on Tue Feb 8 2011 09:32:46 for WOSH system 0.8.888 [wolf] by Alessandro Polo, using DoxyGen 1.7.2 hosted by WOSH Framework