root/vtcross/branches/bhilburn/src/include/vtcross/components.h @ 125

Revision 125, 2.1 KB (checked in by bhilburn, 15 years ago)

Header include directory now properly configured for system install, and
relavant implementation files are now compiling properly with it. Need to take
care of tinyxml and sqlite requirements before things should be back up and
running.

Line 
1/* Virginia Tech Cognitive Radio Open Source Systems
2 * Virginia Tech, 2009
3 *
4 * LICENSE INFORMATION GOES HERE
5 */
6
7 /* This header exports the declarations for all VT-CROSS radio components.  It
8 * contains two pure abstract base classes, Component and Engine; Engine derives
9 * from Component.  All functions contained within the abstract base classes are
10 * dynamically linked and pure, and all child non-abstract classes derive using
11 * private inheritence.  Class functions of the abstract base classes are public
12 * for two reasons: (1) To allow for public/protected inheritence in other
13 * implementations, (2) So that symbolic debuggers can navigate the call tree
14 * for typecasted objects of derivative classes.
15 */
16
17#ifndef CONTAINERS_H
18#define CONTAINERS_H
19
20
21#include "containers.h"
22
23
24class Component
25{
26    public:
27        virtual void GetRemoteComponentType() = 0;
28        virtual void WaitForSignal() = 0;
29        virtual void Shutdown() = 0;
30        virtual void Reset() = 0;
31        virtual void RegisterComponent(socketFD, compType) = 0;
32        virtual void DeregisterComponent() = 0;
33};
34
35
36class Engine : public Component
37{
38    public:
39        virtual void RegisterServices() = 0;
40        virtual void DeregisterServices() = 0;
41};
42
43
44class ServiceManagementLayer : private Component
45{
46    private:
47        void TransferRadioConfiguration();
48        void TransferExperience();
49        void ReceiveServices();
50        void SetActiveMission();
51        void ListServices();
52        void ReloadConfiguration();
53        void LoadConfiguration();
54};
55
56
57class PolicyEngine : private Engine
58{
59    private:
60        void ReloadPolicies();
61        void LoadPolicies();
62        void ValidateParameters();
63};
64
65
66class CognitiveEngine : private Engine
67{
68    private:
69        void ReceiveRadioConfiguration();
70        void ReceiveExperience();
71        void GetSolution(Observable *observables);
72        void GetSolution(Observable *observables, string service);
73        void ReceiveFeedback(Observable *observables, Parameter *parameters, Utility *utilities);
74        void ReceiveFeedback(Observable *observables, Parameter *parameters, string service);
75};
76
77#endif
Note: See TracBrowser for help on using the browser.