/* Virginia Tech Cognitive Radio Open Source Systems * Virginia Tech, 2009 * * LICENSE INFORMATION GOES HERE */ /* This header exports the declarations for all VT-CROSS radio components. It * contains two pure abstract base classes, Component and Engine; Engine derives * from Component. All functions contained within the abstract base classes are * dynamically linked and pure, and all child non-abstract classes derive using * private inheritence. Class functions of the abstract base classes are public * for two reasons: (1) To allow for public/protected inheritence in other * implementations, (2) So that symbolic debuggers can navigate the call tree * for typecasted objects of derivative classes. */ #ifndef CONTAINERS_H #define CONTAINERS_H #include "containers.h" class Component { public: virtual void GetRemoteComponentType() = 0; virtual void WaitForSignal() = 0; virtual void Shutdown() = 0; virtual void Reset() = 0; virtual void RegisterComponent(socketFD, compType) = 0; virtual void DeregisterComponent() = 0; }; class Engine : public Component { public: virtual void RegisterServices() = 0; virtual void DeregisterServices() = 0; }; class ServiceManagementLayer : private Component { private: void TransferRadioConfiguration(); void TransferExperience(); void ReceiveServices(); void SetActiveMission(); void ListServices(); void ReloadConfiguration(); void LoadConfiguration(); }; class PolicyEngine : private Engine { private: void ReloadPolicies(); void LoadPolicies(); void ValidateParameters(); }; class CognitiveEngine : private Engine { private: void ReceiveRadioConfiguration(); void ReceiveExperience(); void GetSolution(Observable *observables); void GetSolution(Observable *observables, string service); void ReceiveFeedback(Observable *observables, Parameter *parameters, Utility *utilities); void ReceiveFeedback(Observable *observables, Parameter *parameters, string service); }; #endif