root/vtcross/trunk/src/include/vtcross/cross_shell.h @ 465

Revision 465, 3.4 KB (checked in by bhilburn, 15 years ago)

First step in revamping component architecture in preperation for fixing
the CBR implementation. Files only now include the declaration for the
component they need - not all of them.

Line 
1/*
2 Copyright 2009 Virginia Polytechnic Institute and State University 
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7 
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15*/
16
17/* This header exports the declaration for the VTCROSS Shell component, which is
18 * a critical part of every VTCROSS system.
19 */
20
21#ifndef CROSS_SHELL_H
22#define CROSS_SHELL_H
23
24
25#include "components.h"
26
27
28/* Cognitive Radio Shell class declaration.
29 */
30class CognitiveRadioShell
31{
32    public:
33        CognitiveRadioShell();
34        ~CognitiveRadioShell();
35
36        /* Overloaded constructor that creates a CR Shell object and loads the
37         * passed radio configuration XML file.
38         */
39        CognitiveRadioShell(const char* radioConfig, int16_t primaryPort, \
40            int16_t policyPort, int16_t commandPort);
41
42        /* Ask for the component type of a remote component via sockets, or
43         * respond to such a query sent to the shell itself.
44         */
45        std::string GetRemoteComponentType(int32_t socketFD);
46        void SendComponentType(int32_t socketFD);
47
48        void Shutdown();
49        void Reset();
50       
51        /* Start all the socket servers */
52        void StartShellServer();
53
54        int32_t LoadRadioConfiguration(const char* radioConfig, Parameter* &pList, \
55            Utility* &uList, Observable* &oList, Radio_Info* radioInfo);
56    private:
57        /* Parse and load/reload policies into the policy engine.
58         */
59        void LoadPolicies();
60        void ReloadPolicies();
61
62        /* Register and Deregister the different components.
63         */
64        void RegisterCognitiveEngine(int32_t socketFD);
65        void DeregisterCognitiveEngine(int32_t socketFD);
66        void RegisterPolicyEngine(int32_t socketFD);
67        void DeregisterPolicyEngine(int32_t socketFD);
68        void RegisterSML(int32_t socketFD);
69        void DeregisterSML(int32_t socketFD);
70       
71        void SetActiveMission(int32_t socketFD);
72
73        /* Handle a message that is received from a component.
74         */
75        int32_t HandleMessage(int32_t socketFD);
76       
77        /* Send optimization request to primary port FD.
78         */
79        void GetOptimalParameters(int32_t socketFD);
80
81        /* TODO
82         */
83        bool SendRadioConfiguration(int32_t socketFD);
84        bool SendRadioExperience(int32_t socketFD);
85
86        /* TODO
87         */
88        bool UpdateParameterPerformance(int32_t socketFD);
89
90        /* TODO
91         */
92        bool SML_present;
93        bool PE_present;
94        bool CE_present;
95       
96        /* TODO
97         */
98        int32_t numberOfCognitiveEngines;
99
100        /* TODO
101         */       
102        int16_t primaryPort;
103        int16_t policyPort;
104        int16_t commandPort;
105
106        /* TODO
107         */
108        int32_t ceSocketFD;
109        int32_t commandSocketFD;
110        int32_t policySocketFD;
111
112        /* TODO
113         */
114        Utility *utils;
115        Parameter *params;
116        Observable *observables;
117
118        /* TODO
119         */
120        struct Radio_Info *radio_info;
121};
122
123#endif
Note: See TracBrowser for help on using the browser.