def printTask(task):
	print("Name: " + task.name)
	print("Type: " + str(task.kind_of_task))
	
	if task.kind_of_task == KindOfTask.Cyclic:
		print("Prio: {} Interval: {}{}".format(task.priority, task.interval, task.interval_unit))
	elif task.kind_of_task == KindOfTask.Event or task.kind_of_task == KindOfTask.Status:
		print("Prio: {} Event: {}".format(task.priority, task.event))
	elif task.kind_of_task == KindOfTask.ExternalEvent:
		print("Prio: {} Ext. Event: {}".format(task.priority, task.external_event))
	elif task.kind_of_task == KindOfTask.Freewheeling:
		print("Prio: {}".format(task.priority))
	elif task.kind_of_task == KindOfTask.ParentSynchron:
		print("Prio: {} Parent task: {}".format(task.priority, task.parent_synchron_task))
	else:
		print("Unknown kind of task")

	if task.core_binding >= 0:
		print("Core binding: " + str(task.core_binding))

	if task.watchdog.enabled:
		wd = task.watchdog
		print("Watchdog Time: {}{} Sensitivity: {}".format(wd.time, wd.time_unit, wd.sensitivity))
	else:
		print("No watchdog")

#
# Main program
#
proj = projects.primary

found = proj.find('Application', True)
assert(found, 'Application not found')
app = found[0]

# Print task(s) below the task configuration
children = app.get_children(False)
for child in children:
	if child.is_task_configuration:
		for subchild in child.get_children(False):
			if subchild.is_task:
				printTask(subchild)

# Find the app which has no task configuration
found = proj.find('App', True)
assert(found, 'App not found')
app = found[0]

# Create task configuration
taskconfig = app.create_task_configuration()
assert(taskconfig, 'task config was not created')

# Create task which is executed every 100ms
task = taskconfig.create_task("CyclicTask")
task.kind_of_task = KindOfTask.Cyclic
task.interval = "100"
task.interval_unit = "ms"
printTask(task)

# Create task which is free wheeling
task = taskconfig.create_task("FreeWheelingTask")
task.kind_of_task = KindOfTask.Freewheeling
printTask(task)

# Create task which is triggered by an event
task = taskconfig.create_task("EventTask")
task.kind_of_task = KindOfTask.Event
task.event = "GVL.xEvent"
task.priority = "10"
printTask(task)

# Create task which is synchronized with a task from the parent/device application
task = taskconfig.create_task("ParentSyncTask")
task.kind_of_task = KindOfTask.ParentSynchron
task.parent_synchron_task = "ParentTask"
printTask(task)

