Subversion Repositories HomeAutomation

Rev

Rev 748 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 748 Rev 749
Line 10... Line 10...
10
import imp
10
import imp
11
import re
11
import re
12
from ConfigParser import ConfigParser
12
from ConfigParser import ConfigParser
13
import filters
13
import filters
14
import statespaces
14
import statespaces
15
 
-
 
-
 
15
from CanPktHandlerBase import CanPktHandlerBase
-
 
16
from CanPktHandler1 import CanPktHandler1
16
 
17
 
17
class DynamicModuleCfg:
18
class DynamicModuleCfg:
18
    """Dynamic module manager"""
19
    """Dynamic module manager"""
19
 
20
 
20
    modSubDir = None
21
    modSubDir = None
Line 136... Line 137...
136
   
137
   
137
    def loadFilter(self, name):
138
    def loadFilter(self, name):
138
        newFilt = self.dynamicModuleCfg.loadModule(name)
139
        newFilt = self.dynamicModuleCfg.loadModule(name)
139
        if newFilt is not None:
140
        if newFilt is not None:
140
            self.filterModules[name] = newFilt
141
            self.filterModules[name] = newFilt
141
            return True
142
            return True
142
        else:
143
        else:
143
            return False
144
            return False
144
 
145
 
145
    def loadFilters(self, config = None):
146
    def loadFilters(self, config = None):
146
        self.filterModules = self.dynamicModuleCfg.loadModules()
147
        self.filterModules = self.dynamicModuleCfg.loadModules()
147
        for fM in self.filterModules:
148
        for fM in self.filterModules:
Line 187... Line 188...
187
 
188
 
188
    def loadSpaces(self, config = None):
189
    def loadSpaces(self, config = None):
189
        self.spaceModules = self.dynamicModuleCfg.loadModules()
190
        self.spaceModules = self.dynamicModuleCfg.loadModules()
190
        for sM in self.spaceModules:
191
        for sM in self.spaceModules:
191
            log.debug(sM)
192
            log.debug(sM)
192
 
193
 
193
    def __saveSpace(self, className, classObj):
194
    def __saveSpace(self, className, classObj):
194
        self.dynamicModuleCfg.saveModule(className, classObj)
195
        self.dynamicModuleCfg.saveModule(className, classObj)
195
 
196
 
196
    def saveSpaces(self):
197
    def saveSpaces(self):
197
        for className in self.spaceModules:
198
        for className in self.spaceModules:
198
            self.__saveSpace(className, self.spaceModules[className])
199
            self.__saveSpace(className, self.spaceModules[className])
199
   
200
   
200
    def importSpace(self, name):
201
    def importSpace(self, name):
201
        """Imports a given state space definition file """
202
        """Imports a given state space definition file """
202
        classObj = self.dynamicModuleCfg.importModule(name, self.REQUIRED_ATTRIBUTES)
203
        classObj = self.dynamicModuleCfg.importModule(name, self.REQUIRED_ATTRIBUTES)
203
        if classObj is not None:
204
        if classObj is not None:
204
            print 'Imported: ' + classObj.DESCRIPTIVE_NAME
205
            print 'Imported: ' + classObj.DESCRIPTIVE_NAME
205
            return True
206
            return True
206
        else:
207
        else:
207
            return False
208
            return False
208
 
209
 
209
class DaemonConfig:
210
class DaemonConfig:
210
   
211
   
211
    stateSpaceCfg = None
212
    stateSpaceCfg = None
212
    filterCfg = None
213
    filterCfg = None
-
 
214
    pktHandler = None
-
 
215
   
213
    filterChain = []
216
    filterChain = []
-
 
217
    nodeInterfaces = []
-
 
218
    nodeInterfaceMap = {}
214
   
219
   
215
    def __init__ (self):
220
    def __init__ (self):
216
        self.filterCfg = FilterCfg()
221
        self.filterCfg = FilterCfg()
217
        self.stateSpaceCfg = StateSpaceCfg()
222
        self.stateSpaceCfg = StateSpaceCfg()
-
 
223
        self.pktHandler = CanPktHandler1()
-
 
224
       
-
 
225
    def load(self):
-
 
226
        self.stateSpaceCfg.loadSpaces()
-
 
227
        self.stateSpaceCfg.loadFilters()
-
 
228
        __setupFilterBindings()
-
 
229
        __setupFilterChain()
-
 
230
   
-
 
231
    def save(self):
-
 
232
        self.stateSpaceCfg.saveSpaces()
-
 
233
        self.filterCfg.saveFilters()
218
       
234
       
219
    def setupFilterChain(self):
235
    def __setupFilterChain(self):
220
        self.filterChain = ['DefaultFilter']
236
        self.filterChain = ['DefaultFilter']
221
   
237
   
222
    def setupFilterBindings(self):
238
    def __setupFilterBindings(self):
223
        for f in self.filterCfg.filterModules.values():
239
        for f in self.filterCfg.filterModules.values():
224
            assocSpaces = []
240
            assocSpaces = []
225
            for s in f.ASSOCIATED_SPACES:
241
            for s in f.ASSOCIATED_SPACES:
226
                if self.stateSpaceCfg.spaceModules.has_key(s):
242
                if self.stateSpaceCfg.spaceModules.has_key(s):
227
                    assocSpaces.append(self.stateSpaceCfg.spaceModules[s])
243
                    assocSpaces.append(self.stateSpaceCfg.spaceModules[s])