Subversion Repositories HomeAutomation

Rev

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

Rev 2003 Rev 2006
Line 13... Line 13...
13
	modules = []
13
	modules = []
14
	for fileName in os.listdir(moddir):
14
	for fileName in os.listdir(moddir):
15
		if fileName[0] != '.' and fileName != "template":
15
		if fileName[0] != '.' and fileName != "template":
16
			modules.append(fileName)
16
			modules.append(fileName)
17
 
17
 
18
	return sorted(modules)
18
	return sorted(modules, key=str.lower)
19
 
19
 
20
 
20
 
21
def getLocalModules():
21
def getLocalModules():
22
	modules = []
22
	modules = []
23
	for fileName in os.listdir(localmoddir):
23
	for fileName in os.listdir(localmoddir):
24
		if fileName[0] != '.':
24
		if fileName[0] != '.':
25
			modules.append(fileName)
25
			modules.append(fileName)
26
 
26
 
27
	return sorted(modules)
27
	return sorted(modules, key=str.lower)
28
 
28
 
29
 
29
 
30
def parseModuleIdFromFile(moduleName, fileName):
30
def parseModuleIdFromFile(moduleName, fileName):
31
	config_inc = open(fileName, 'r') 
31
	config_inc = open(fileName, 'r') 
32
	config_inc_lines = config_inc.readlines()
32
	config_inc_lines = config_inc.readlines()
Line 49... Line 49...
49
		if applicationName[0] != '.' and os.path.exists("../" + applicationName + "/config.inc"):
49
		if applicationName[0] != '.' and os.path.exists("../" + applicationName + "/config.inc"):
50
			takenIds = parseModuleIdFromFile(moduleName, "../" + applicationName + "/config.inc")
50
			takenIds = parseModuleIdFromFile(moduleName, "../" + applicationName + "/config.inc")
51
 
51
 
52
	return takenIds
52
	return takenIds
53
	
53
	
54
def parseAllModuleIdFromFile(fileName):
54
def parseAllModuleIdFromFile(fileName, foundModules):
-
 
55
	index = 0
55
	modules = getModules()
56
	modules = getModules()
56
	config_inc = open(fileName, 'r') 
57
	config_inc = open(fileName, 'r') 
57
	config_inc_lines = config_inc.readlines()
58
	config_inc_lines = config_inc.readlines()
58
	config_inc.close()
59
	config_inc.close()
-
 
60
	parts = fileName.split("/")
-
 
61
	node = parts[1]
59
	for line in config_inc_lines:
62
	for line in config_inc_lines:
60
		line = line.strip("\n").strip(" ")
63
		line = line.strip("\n").strip(" ")
61
		
64
		
62
		if line.find("_ID") != -1:
65
		if line.find("_ID") != -1:
63
			parts = line.split("=")
66
			parts = line.split("=")
64
			if (parts[0][:-3] in modules):
67
			if (parts[0][:-3] in modules):
65
				if parts[1].strip(" ") != -1 and parts[1].strip(" ") != "<ID>":
68
				if parts[1].strip(" ") != -1 and parts[1].strip(" ") != "<ID>":
-
 
69
					if (foundModules == 0):
66
					print "\tModule: "+parts[0][:-3]+"\t"+parts[1].strip(" ")
70
						print "\tModule: "+parts[0][:-3]+"\t"+parts[1].strip(" ")
-
 
71
					else:
-
 
72
						foundModules.append(parts[0][:-3]+"$"+node+"$"+parts[1].strip(" ")) 
-
 
73
					      
-
 
74
	return foundModules
67
	
75
	
68
def getAllModuleIdsFromFile():
76
def getAllModuleIdsFromFile():
-
 
77
	foundModules = []
69
	for applicationName in os.listdir("../"):	
78
	for applicationName in os.listdir("../"):	
-
 
79
		if applicationName[0] != '.' and os.path.exists("../" + applicationName + "/config.inc"):
-
 
80
			parseAllModuleIdFromFile("../" + applicationName + "/config.inc", foundModules)
-
 
81
			
-
 
82
	foundModulesSorted = sorted(foundModules, key=str.lower)
-
 
83
	lastModule = ""
-
 
84
	for x in foundModulesSorted:
-
 
85
		splitted = x.split("$")
-
 
86
		if (lastModule != splitted[0]):
-
 
87
			lastModule = splitted[0]
-
 
88
			print lastModule
-
 
89
		print "%20s :" % splitted[1],
-
 
90
		print splitted[2]
-
 
91
	
-
 
92
def getAllNodesFromFile():
-
 
93
	files = sorted(os.listdir("../"), key=str.lower)
-
 
94
	for applicationName in files:	
70
		if applicationName[0] != '.' and os.path.exists("../" + applicationName + "/config.inc"):
95
		if applicationName[0] != '.' and os.path.exists("../" + applicationName + "/config.inc"):
71
			print "Found node: "+applicationName
96
			print "Found node: "+applicationName
72
			parseAllModuleIdFromFile("../" + applicationName + "/config.inc")
97
			parseAllModuleIdFromFile("../" + applicationName + "/config.inc", 0)
73
 
98
 
74
def getFreeModuleId(takenIds):
99
def getFreeModuleId(takenIds):
75
	if len(takenIds) == 0:
100
	if len(takenIds) == 0:
76
		return 1
101
		return 1
77
	takenIds.sort()
102
	takenIds.sort()
78
 
103
 
Line 80... Line 105...
80
 
105
 
81
	for takenId in takenIds:
106
	for takenId in takenIds:
82
		if takenId != lastId+1:
107
		if takenId != lastId+1:
83
			return lastId+1
108
			return lastId+1
84
		lastId = takenId
109
		lastId = takenId
85
 
110
 
86
	return lastId+1
111
	return lastId+1
87
 
112
 
88
 
113
 
89
 
114
 
90
def compileMainFile():
115
def compileMainFile():
Line 92... Line 117...
92
	main_c_template = open('src/main.c.template', 'r') 
117
	main_c_template = open('src/main.c.template', 'r') 
93
	main_c_template_lines = main_c_template.readlines()
118
	main_c_template_lines = main_c_template.readlines()
94
	main_c_template.close()
119
	main_c_template.close()
95
	
120
	
96
	modules = getLocalModules()
121
	modules = getLocalModules()
97
	
122
	
98
	main_c = open('src/main.c', 'w') 
123
	main_c = open('src/main.c', 'w') 
99
	
124
	
100
	for main_c_template_line in main_c_template_lines:
125
	for main_c_template_line in main_c_template_lines:
101
		pos_include = main_c_template_line.find('%INCLUDE')
126
		pos_include = main_c_template_line.find('%INCLUDE')
102
		pos_init = main_c_template_line.find('%INIT')
127
		pos_init = main_c_template_line.find('%INIT')
Line 109... Line 134...
109
				main_c.write(main_c_template_line[:pos_include] + "#include \"../modules/" + moduleName + "/" + moduleName + ".h\"\n")
134
				main_c.write(main_c_template_line[:pos_include] + "#include \"../modules/" + moduleName + "/" + moduleName + ".h\"\n")
110
		elif pos_init != -1:
135
		elif pos_init != -1:
111
			for moduleName in modules:
136
			for moduleName in modules:
112
				main_c.write(main_c_template_line[:pos_init] + moduleName + "_Init();\n")
137
				main_c.write(main_c_template_line[:pos_init] + moduleName + "_Init();\n")
113
		elif pos_process != -1:
138
		elif pos_process != -1:
114
			for moduleName in modules:
139
			for moduleName in modules:
115
				main_c.write(main_c_template_line[:pos_process] + moduleName + "_Process();\n")
140
				main_c.write(main_c_template_line[:pos_process] + moduleName + "_Process();\n")
116
		elif pos_list != -1:
141
		elif pos_list != -1:
117
			count = 1
142
			count = 1
118
			for moduleName in modules:
143
			for moduleName in modules:
119
				main_c.write(main_c_template_line[:pos_list] + moduleName + "_List(" + str(count) + ");\n")
144
				main_c.write(main_c_template_line[:pos_list] + moduleName + "_List(" + str(count) + ");\n")
Line 249... Line 274...
249
				if line[0] != '#':
274
				if line[0] != '#':
250
					uniqueSet2.append(line)
275
					uniqueSet2.append(line)
251
	
276
	
252
	for sources_list_template_line in sources_list_template_lines:
277
	for sources_list_template_line in sources_list_template_lines:
253
		line = sources_list_template_line.strip("\n").strip(" ")
278
		line = sources_list_template_line.strip("\n").strip(" ")
254
		if len(line) > 0:
279
		if len(line) > 0:
255
			if line[0] != '#':
280
			if line[0] != '#':
256
				uniqueSet.append(line)
281
				uniqueSet.append(line)
257
		
282
		
258
	modules = getLocalModules()
283
	modules = getLocalModules()
259
	
284
	
Line 311... Line 336...
311
	print "Listing modules..."
336
	print "Listing modules..."
312
	print ""
337
	print ""
313
	getAllModuleIdsFromFile()
338
	getAllModuleIdsFromFile()
314
	print ""
339
	print ""
315
	print "Listing modules complete"
340
	print "Listing modules complete"
-
 
341
	print ""
-
 
342
	
-
 
343
def listUsedNodes():
-
 
344
	print "Listing nodes..."
-
 
345
	print ""
-
 
346
	getAllNodesFromFile()
-
 
347
	print ""
-
 
348
	print "Listing nodes complete"
316
	print ""
349
	print ""
317
 
350
 
318
def addModule(moduleName):
351
def addModule(moduleName):
319
	print "Trying to add module " + moduleName
352
	print "Trying to add module " + moduleName
320
	
353
	
Line 387... Line 420...
387
	print "  --list               List avalible and installed modules"
420
	print "  --list               List avalible and installed modules"
388
	print "  --add=<module name>  Adds a module to the application"
421
	print "  --add=<module name>  Adds a module to the application"
389
	print "  --del=<module name>  Removes a module from the application"
422
	print "  --del=<module name>  Removes a module from the application"
390
	print "  --new=<module name>  Creates a new module from the module template"
423
	print "  --new=<module name>  Creates a new module from the module template"
391
	print "  --modules            Lists all used modules in your personal folder"
424
	print "  --modules            Lists all used modules in your personal folder"
-
 
425
	print "  --nodes              Lists all nodes in your personal folder"
392
	print ""
426
	print ""
393
 
427
 
394
 
428
 
395
def main():
429
def main():
396
	try:
430
	try:
397
		opts, args = getopt.getopt(sys.argv[1:], "hlrcm", ["help", "list", "modules", "regenerate", "add=", "del=", "new="])
431
		opts, args = getopt.getopt(sys.argv[1:], "hlrcmn", ["help", "list", "modules", "nodes", "regenerate", "add=", "del=", "new="])
398
	except getopt.GetoptError, err:
432
	except getopt.GetoptError, err:
399
		# print help information and exit:
433
		# print help information and exit:
400
		print str(err) # will print something like "option -a not recognized"
434
		print str(err) # will print something like "option -a not recognized"
401
		usage()
435
		usage()
402
		sys.exit(2)
436
		sys.exit(2)
403
	
437
	
404
	if len(sys.argv) == 1:
438
	if len(sys.argv) == 1:
405
		usage()
439
		usage()
406
		sys.exit()
440
		sys.exit()
407
	
441
	
408
	for o, a in opts:
442
	for o, a in opts:
409
		if o in ("-c"):
443
		if o in ("-c"):
410
			modules = getModules()
444
			modules = getModules()
411
			
445
			
412
			for module in modules:
446
			for module in modules:
413
				print module
447
				print module
414
 
448
 
415
		elif o in ("-l", "--list"):
449
		elif o in ("-l", "--list"):
416
			modules = getModules()
450
			modules = getModules()
417
			print "Available modules"
451
			print "Available modules"
418
			print "================="
452
			print "================="
Line 431... Line 465...
431
					print module
465
					print module
432
			
466
			
433
		elif o in ("-h", "--help"):
467
		elif o in ("-h", "--help"):
434
			usage()
468
			usage()
435
			sys.exit()
469
			sys.exit()
436
			
470
			
437
		elif o in ("-r", "--regenerate"):
471
		elif o in ("-r", "--regenerate"):
438
			regenerateModules()
472
			regenerateModules()
439
			
473
			
440
		elif o in ("-m", "--modules"):
474
		elif o in ("-m", "--modules"):
441
			listUsedModules()
475
			listUsedModules()
-
 
476
		
-
 
477
		elif o in ("-n", "--nodes"):
-
 
478
			listUsedNodes()
442
			
479
			
443
		elif o in ("--add"):
480
		elif o in ("--add"):
444
			if len(a) == 0:
481
			if len(a) == 0:
445
				print "No modulename specified"
482
				print "No modulename specified"
446
				usage()
483
				usage()