/* 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 via the 'virtual' keyword, 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. */ 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(observables); void GetSolution(observables, service); void ReceiveFeedback(observables, parameters, utilities); void ReceiveFeedback(observables, parameters, service); };