canfestival/canfestival.py
changeset 1878 fb73a6b6622d
parent 1853 47a3f39bead0
child 1919 ccea0fa6ea91
equal deleted inserted replaced
1877:da5f1fa46f2b 1878:fb73a6b6622d
   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")