Subversion Repositories HomeAutomation

Rev

Rev 2003 | Rev 2127 | Go to most recent revision | Show entire file | Ignore 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()
Line 90... Line 115...
90
def compileMainFile():
115
def compileMainFile():
91
	print "Compiling new main.c..."
116
	print "Compiling new main.c..."
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:
Line 113... Line 138...
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")
120
				count += 1
145
				count += 1
121
		elif pos_handlemsg != -1:
146
		elif pos_handlemsg != -1:
122
			for moduleName in modules:
147
			for moduleName in modules:
123
				main_c.write(main_c_template_line[:pos_handlemsg] + moduleName + "_HandleMessage(&rxMsg);\n")
148
				main_c.write(main_c_template_line[:pos_handlemsg] + moduleName + "_HandleMessage(&rxMsg);\n")
Line 298... Line 323...
298
def regenerateModules():
323
def regenerateModules():
299
	print "Regenerating modules..."
324
	print "Regenerating modules..."
300
	print ""
325
	print ""
301
	compileSourcesFile()
326
	compileSourcesFile()
302
	print ""
327
	print ""
303
	compileMainFile()
328
	compileMainFile()
304
	print ""
329
	print ""
305
	updateConfigFile()
330
	updateConfigFile()
306
	print ""
331
	print ""
307
	print "Regenerating modules complete"
332
	print "Regenerating modules complete"
308
	print ""
333
	print ""
309
 
334
 
310
def listUsedModules():
335
def listUsedModules():
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()