517 can_drv_prefix = self.GetCTRoot().GetBuilder().dlopen_prefix |
517 can_drv_prefix = self.GetCTRoot().GetBuilder().dlopen_prefix |
518 can_driver_name = can_drv_prefix + "libcanfestival_" + can_driver + can_drv_ext |
518 can_driver_name = can_drv_prefix + "libcanfestival_" + can_driver + can_drv_ext |
519 else: |
519 else: |
520 can_driver_name = "" |
520 can_driver_name = "" |
521 |
521 |
522 format_dict = {"locstr": "_".join(map(str, self.GetCurrentLocation())), |
522 format_dict = { |
523 "candriver": can_driver_name, |
523 "locstr": "_".join(map(str, self.GetCurrentLocation())), |
524 "nodes_includes": "", |
524 "candriver": can_driver_name, |
525 "board_decls": "", |
525 "nodes_includes": "", |
526 "nodes_init": "", |
526 "board_decls": "", |
527 "nodes_open": "", |
527 "nodes_init": "", |
528 "nodes_stop": "", |
528 "nodes_open": "", |
529 "nodes_close": "", |
529 "nodes_stop": "", |
530 "nodes_send_sync": "", |
530 "nodes_close": "", |
531 "nodes_proceed_sync": "", |
531 "nodes_send_sync": "", |
532 "slavebootups": "", |
532 "nodes_proceed_sync": "", |
533 "slavebootup_register": "", |
533 "slavebootups": "", |
534 "post_sync": "", |
534 "slavebootup_register": "", |
535 "post_sync_register": "", |
535 "post_sync": "", |
536 "pre_op": "", |
536 "post_sync_register": "", |
537 "pre_op_register": "", |
537 "pre_op": "", |
538 } |
538 "pre_op_register": "", |
|
539 } |
539 for child in self.IECSortedChildren(): |
540 for child in self.IECSortedChildren(): |
540 childlocstr = "_".join(map(str, child.GetCurrentLocation())) |
541 childlocstr = "_".join(map(str, child.GetCurrentLocation())) |
541 nodename = "OD_%s" % childlocstr |
542 nodename = "OD_%s" % childlocstr |
542 |
543 |
543 # Try to get Slave Node |
544 # Try to get Slave Node |
545 if child_data is None: |
546 if child_data is None: |
546 # Not a slave -> master |
547 # Not a slave -> master |
547 child_data = getattr(child, "CanFestivalNode") |
548 child_data = getattr(child, "CanFestivalNode") |
548 # Apply sync setting |
549 # Apply sync setting |
549 format_dict["nodes_init"] += 'NODE_MASTER_INIT(%s, %s)\n ' % ( |
550 format_dict["nodes_init"] += 'NODE_MASTER_INIT(%s, %s)\n ' % ( |
550 nodename, |
551 nodename, |
551 child_data.getNodeId()) |
552 child_data.getNodeId()) |
552 if child_data.getSync_TPDOs(): |
553 if child_data.getSync_TPDOs(): |
553 format_dict["nodes_send_sync"] += 'NODE_SEND_SYNC(%s)\n ' % (nodename) |
554 format_dict["nodes_send_sync"] += 'NODE_SEND_SYNC(%s)\n ' % (nodename) |
554 format_dict["nodes_proceed_sync"] += 'NODE_PROCEED_SYNC(%s)\n ' % (nodename) |
555 format_dict["nodes_proceed_sync"] += 'NODE_PROCEED_SYNC(%s)\n ' % (nodename) |
555 |
556 |
556 # initialize and declare node boot status variables for post_SlaveBootup lookup |
557 # initialize and declare node boot status variables for post_SlaveBootup lookup |
589 " }\n" + |
590 " }\n" + |
590 "}\n") |
591 "}\n") |
591 format_dict["post_sync_register"] += ( |
592 format_dict["post_sync_register"] += ( |
592 "%s_Data.post_sync = %s_post_sync;\n" % (nodename, nodename)) |
593 "%s_Data.post_sync = %s_post_sync;\n" % (nodename, nodename)) |
593 format_dict["nodes_init"] += 'NODE_SLAVE_INIT(%s, %s)\n ' % ( |
594 format_dict["nodes_init"] += 'NODE_SLAVE_INIT(%s, %s)\n ' % ( |
594 nodename, |
595 nodename, |
595 child_data.getNodeId()) |
596 child_data.getNodeId()) |
596 |
597 |
597 # Include generated OD headers |
598 # Include generated OD headers |
598 format_dict["nodes_includes"] += '#include "%s.h"\n' % (nodename) |
599 format_dict["nodes_includes"] += '#include "%s.h"\n' % (nodename) |
599 # Declare CAN channels according user filled config |
600 # Declare CAN channels according user filled config |
600 format_dict["board_decls"] += 'BOARD_DECL(%s, "%s", "%s")\n' % ( |
601 format_dict["board_decls"] += 'BOARD_DECL(%s, "%s", "%s")\n' % ( |
601 nodename, |
602 nodename, |
602 child.GetCanDevice(), |
603 child.GetCanDevice(), |
603 child_data.getCAN_Baudrate()) |
604 child_data.getCAN_Baudrate()) |
604 format_dict["nodes_open"] += 'NODE_OPEN(%s)\n ' % (nodename) |
605 format_dict["nodes_open"] += 'NODE_OPEN(%s)\n ' % (nodename) |
605 format_dict["nodes_close"] += 'NODE_CLOSE(%s)\n ' % (nodename) |
606 format_dict["nodes_close"] += 'NODE_CLOSE(%s)\n ' % (nodename) |
606 format_dict["nodes_stop"] += 'NODE_STOP(%s)\n ' % (nodename) |
607 format_dict["nodes_stop"] += 'NODE_STOP(%s)\n ' % (nodename) |
607 |
608 |
608 filename = paths.AbsNeighbourFile(__file__, "cf_runtime.c") |
609 filename = paths.AbsNeighbourFile(__file__, "cf_runtime.c") |