# This Jython script created by MRRM software from MTS Associates # Copyright 2004 - 2019 import java import javax.swing import jarray import jmri class CF_2_W2E(jmri.jmrit.automat.AbstractAutomaton) : # Class Variables are initialized. Access in defs by "self." prefix! loco1 = 0 loco2 = 0 sound_loco = "nosound" delay_time = 0 play_time = 0 throttle = 0 throttle2 = 0 loco_gear = "F" consist_direction = "West to East" stop_list = [] stopnote_list = [] slow_ms_list = [] depart_ms_list = [] stop_ms_list = [] slow_speed_list = [] depart_speed_list = [] blockBypassStatus = "No" takeBypass = "No" main_bypass = "N/A" alternate_bypass = "N/A" whichBypass = "N/A" trk_restrictSpeed = 0.12 trk_speed = 0.20 signalspeed = 0.15 trk_restrict_ms = 0.0 trk_max_ms = 0.0 sh_name_lastsignal = "LH0" blk_ck_ms = "0" next_altblock = 0 prior_block = 1 trigger = "LT0" b1_stub = "N" b1_sensor = 0 b1_turnout ="0" b1_state = 2 using_dispatcher = "false" def init(self): self.loco1 = loco1CF_2_W2E print self.loco1 self.loco2 = loco2CF_2_W2E print "CF_2_W2E runs West to East from Pottsville_Main_stop to Allentown" if self.loco1 > 127 : self.slong1 = True self.throttle = self.getThrottle(self.loco1, True) else : self.slong1 = False self.throttle = self.getThrottle(self.loco1, False) print "CF_2_W2E", self.throttle if (self.throttle == None) : print "CF_2_W2E Could not assign throttle" self.locoLeaving() self.throttle.setF0(True) self.throttle.setIsForward(True) self.throttle.setSpeedSetting(0.0) return def locoLeaving(self): self.throttle.setSpeedSetting(0) self.throttle.setF0(False) self.throttle.setIsForward(True) return def arrivalSounds(self): if self.sound_loco == "loco1" : self.throttle.setF2(True) # turn on horn self.waitMsec(2000) self.throttle.setF1(True) # turn on bell self.throttle.setF2(False) # turn off horn elif self.sound_loco == "loco2" : self.throttle2.setF2(True) # turn on horn self.waitMsec(2000) self.throttle2.setF1(True) # turn on bell self.throttle2.setF2(False) # turn off horn return def departureSounds(self): if self.sound_loco == "loco1" : self.throttle.setF2(True) # turn on horn LONG self.waitMsec(1000) self.throttle.setF2(False) # turn off horn self.waitMsec(500) self.throttle.setF2(True) # turn on horn LONG self.waitMsec(1000) self.throttle.setF2(False) # turn off horn self.waitMsec(2000) elif self.sound_loco == "loco2" : self.throttle2.setF2(True) # turn on horn LONG self.waitMsec(1000) self.throttle2.setF2(False) # turn off horn self.waitMsec(500) self.throttle2.setF2(True) # turn on horn LONG self.waitMsec(1000) self.throttle2.setF2(False) # turn off horn self.waitMsec(2000) return def reversingSounds(self): if self.sound_loco == "loco1" : print "CF_2_W2E reversing sound_loco = "+ self.sound_loco self.throttle.setF2(True) # turn on horn SHORT self.waitMsec(500) self.throttle.setF2(False) # turn off horn self.waitMsec(500) self.throttle.setF2(True) # turn on horn SHORT self.waitMsec(500) self.throttle.setF2(False) # turn off horn self.throttle.setF1(True) # turn on bell elif self.sound_loco == "loco2" : print "CF_2_W2E reversing sound_loco = "+ self.sound_loco self.throttle2.setF2(True) # turn on horn SHORT self.waitMsec(500) self.throttle2.setF2(False) # turn off horn self.waitMsec(500) self.throttle2.setF2(True) # turn on horn SHORT self.waitMsec(500) self.throttle2.setF2(False) # turn off horn self.throttle2.setF1(True) # turn on bell elif self.sound_loco == "nosound" : print "CF_2_W2E No reversing sound" return def passbySounds(self): if self.sound_loco == "loco1" : self.waitMsec(self.delay_time) self.throttle.setF2(True) # turn on horn self.waitMsec(self.play_time) self.throttle.setF2(False) # turn off horn elif self.sound_loco == "loco2" : self.waitMsec(self.delay_time) self.throttle2.setF2(True) # turn on horn self.waitMsec(self.play_time) self.throttle2.setF2(False) # turn off horn return def crossingSounds(self): if sound_loco == "loco1" : self.waitMsec(self.delay_time) self.throttle.setF1(True) # turn on bell self.waitMsec(self.play_time) self.throttle.setF1(False) # turn off bell elif sound_loco == "loco2" : self.waitMsec(self.delay_time) self.throttle2.setF1(True) # turn on bell self.waitMsec(self.play_time) self.throttle2.setF1(False) # turn off bell return def acceleration(self): self.throttle.setSpeedSetting(.15) self.waitMsec(500) self.throttle.setSpeedSetting(.20) self.waitMsec(500) self.throttle.setSpeedSetting(.30) self.waitMsec(500) return def deceleration(self): self.throttle.setSpeedSetting(.30) self.waitMsec(500) self.throttle.setSpeedSetting(.20) self.waitMsec(500) self.throttle.setSpeedSetting(.15) self.waitMsec(500) return def useBypass(self, theBypass): self.takeBypass = "No" self.trk_speed = 0.20 self.trk_restrictSpeed = 0.12 self.trk_max_ms = 2600.00 self.trk_restrict_ms = self.trk_max_ms * self.trk_speed / self.trk_restrictSpeed self.next_altblock = 0 if theBypass == "BP_W2E_92A93": self.trackBlock("18", "22", "LT92", "THROWN", "LH447", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 5465.00 self.blockBypassStatus = "Exit" self.trackBlock("15", "18", "LT93", "THROWN", "LH421", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_92M93": self.trackBlock("17", "22", "LT92", "CLOSED", "LH447", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 6558.00 self.blockBypassStatus = "Exit" self.trackBlock("15", "17", "LT93", "CLOSED", "LH423", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_89A196": self.trackBlock("2", "5", "LT89", "CLOSED", "LH399", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 13990.00 self.trackBlock("299", "2", "LT90", "CLOSED", "LH353", "loco1", "0","F","false","true","LS3587","0","0") self.trk_max_ms = 10784.00 self.blockBypassStatus = "Exit" self.trackBlock("27", "299", "LT196", "THROWN", "LH359", "loco1", "0","F","false","true","LS3621","0","0") elif theBypass == "BP_W2E_89M196": self.trackBlock("258", "5", "LT89", "THROWN", "LH397", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 1639.00 self.trackBlock("302", "258", "LT197", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2732.00 self.trackBlock("257", "302", "LT5", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2186.00 self.trackBlock("300", "257", "LT90", "CLOSED", "LH355", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 8197.00 self.blockBypassStatus = "Exit" self.trackBlock("27", "300", "LT196", "CLOSED", "LH357", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_45M43": self.trackBlock("287", "15", "LT45", "CLOSED", "LH369", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 15120.00 self.trackBlock("284", "287", "LT0", "Unknown", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 9837.00 self.blockBypassStatus = "Exit" self.trackBlock("33", "284", "LT43", "CLOSED", "LH343", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_45A43": self.trackBlock("288", "15", "LT45", "THROWN", "LH371", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 18071.00 self.trackBlock("283", "288", "LT199", "CLOSED", "LH0", "loco1", "0","F","false","true","LS3519","LS3721","0") self.trk_max_ms = 14865.00 self.blockBypassStatus = "Exit" self.trackBlock("33", "283", "LT43", "THROWN", "LH341", "loco1", "0","F","false","true","LS3775","0","0") elif theBypass == "BP_W2E_40M42": self.trk_max_ms = 5000.00 self.trackBlock("285", "13", "LT40", "CLOSED", "LH321", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 21000.00 self.blockBypassStatus = "Exit" self.trackBlock("40", "285", "LT42", "CLOSED", "LH335", "loco1", "0","F","false","true","LS3741","LS3743","LS3769") elif theBypass == "BP_W2E_40A42": self.trk_max_ms = 6000.00 self.trackBlock("286", "13", "LT40", "THROWN", "LH323", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 30000.00 self.blockBypassStatus = "Exit" self.trackBlock("40", "286", "LT42", "THROWN", "LH333", "loco1", "0","F","false","true","LS3741","LS3743","LS3769") elif theBypass == "BP_W2E_37M38": self.trackBlock("291", "7", "LT37", "THROWN", "LH433", "loco1", "0","F","false","true","0","0","0") self.trackBlock("297", "291", "LT2", "THROWN", "LH261", "loco1", "0","F","false","true","LS3545","LS3745","0") self.trk_max_ms = 25000.00 self.blockBypassStatus = "Exit" self.trackBlock("13", "297", "LT38", "CLOSED", "LH431", "loco1", "0","F","false","true","LS3563","LS3767","LS3767") elif theBypass == "BP_W2E_37A38": self.trk_max_ms = 2750.00 self.trackBlock("298", "7", "LT37", "CLOSED", "LH435", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 25000.00 self.blockBypassStatus = "Exit" self.trackBlock("13", "298", "LT38", "THROWN", "LH429", "loco1", "0","F","false","true","LS3763","LS3567","LS3767") elif theBypass == "BP_W2E_27M18": self.trackBlock("305", "35", "LT27", "CLOSED", "LH461", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 3279.00 self.trackBlock("306", "305", "LT28", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 13844.00 self.blockBypassStatus = "Exit" self.trackBlock("293", "306", "LT18", "CLOSED", "LH505", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_27A18": self.trackBlock("309", "35", "LT27", "THROWN", "LH461", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 13990.00 self.trackBlock("26", "309", "LT24", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_restrictSpeed = 0.05 self.trk_max_ms = 9715.00 self.trk_speed = 0.15 self.trackBlock("49", "26", "LT21", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_restrictSpeed = 0.15 self.trk_max_ms = 5246.00 self.trk_speed = 0.25 self.trackBlock("50", "49", "LT20", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 3498.00 self.trackBlock("51", "50", "LT19", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_restrictSpeed = 0.10 self.trk_max_ms = 1093.00 self.blockBypassStatus = "Exit" self.trackBlock("293", "51", "LT18", "THROWN", "LH507", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_17M34": self.trackBlock("307", "293", "LT17", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2915.00 self.trackBlock("314", "307", "LT32", "THROWN", "LH509", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 4372.00 self.trackBlock("303", "314", "LT0", "Unknown", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 8379.00 self.blockBypassStatus = "Exit" self.trackBlock("3", "303", "LT34", "CLOSED", "LH415", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_W2E_17A34": self.trackBlock("312", "293", "LT17", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 10201.00 self.trk_speed = 0.25 self.trackBlock("304", "312", "LT0", "Unknown", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 12824.00 self.blockBypassStatus = "Exit" self.trackBlock("3", "304", "LT34", "THROWN", "LH413", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_93M92": self.trackBlock("17", "15", "LT93", "CLOSED", "LH419", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 6558.00 self.blockBypassStatus = "Exit" self.trackBlock("22", "17", "LT92", "CLOSED", "LH443", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_93A92": self.trackBlock("18", "15", "LT93", "THROWN", "LH419", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 5465.00 self.blockBypassStatus = "Exit" self.trackBlock("22", "18", "LT92", "THROWN", "LH441", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_43M45": self.trackBlock("284", "33", "LT43", "CLOSED", "LH365", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 9837.00 self.trackBlock("287", "284", "LT0", "Unknown", "LH381", "loco1", "0","F","false","true","LS3519","0","0") self.trk_max_ms = 15120.00 self.blockBypassStatus = "Exit" self.trackBlock("15", "287", "LT45", "CLOSED", "LH331", "loco1", "0","F","false","true","LS3775","0","0") elif theBypass == "BP_E2W_43A45": self.trackBlock("283", "33", "LT43", "THROWN", "LH367", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 14865.00 self.trackBlock("288", "283", "LT199", "CLOSED", "LH383", "loco1", "0","F","false","true","LS3520","0","0") self.trk_max_ms = 18071.00 self.blockBypassStatus = "Exit" self.trackBlock("15", "288", "LT45", "THROWN", "LH329", "loco1", "0","F","false","true","LS3780","0","0") elif theBypass == "BP_E2W_42M40": self.trackBlock("285", "40", "LT42", "CLOSED", "LH379", "loco1", "0","F","false","true","LS3568","0","0") self.trk_max_ms =25000.00 self.blockBypassStatus = "Exit" self.trackBlock("13", "285", "LT40", "CLOSED", "LH325", "loco1", "0","F","false","true","LS3568","LS3564","LS3764") elif theBypass == "BP_E2W_42A40": self.trackBlock("286", "40", "LT42", "THROWN", "LH377", "loco1", "0","F","false","true","LS3768","0","0") self.trk_max_ms = 25000.00 self.blockBypassStatus = "Exit" self.trackBlock("13", "286", "LT40", "THROWN", "LH327", "loco1", "0","F","false","true","LS3768","LS3564","LS3764") elif theBypass == "BP_E2W_38M37": self.trackBlock("297", "13", "LT38", "CLOSED", "LH427", "loco1", "0","F","false","true","LS3762","LS3745","0") self.trk_max_ms = 25000.00 self.trackBlock("291", "297", "LT2", "THROWN", "LH0", "loco1", "0","F","false","true","LS3745","0","0") self.trk_max_ms = 2650.00 self.blockBypassStatus = "Exit" self.trackBlock("7", "291", "LT37", "THROWN", "LH437", "loco1", "0","F","false","true","LS3762","LS3560","LS3760") elif theBypass == "BP_E2W_38A37": self.trk_max_ms = 3000.00 self.trackBlock("298", "13", "LT38", "THROWN", "LH425", "loco1", "0","F","false","true","LS3562","0","0") self.trk_max_ms = 25000.00 self.trk_speed = 0.25 self.blockBypassStatus = "Exit" self.trackBlock("7", "298", "LT37", "CLOSED", "LH439", "loco1", "0","F","false","true","LS3562","LS3560","LS3760") elif theBypass == "BP_E2W_34M17": self.trackBlock("303", "3", "LT34", "CLOSED", "LH411", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 8379.00 self.trackBlock("314", "303", "LT0", "Unknown", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 4372.00 self.trackBlock("307", "314", "LT32", "THROWN", "LH495", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2915.00 self.blockBypassStatus = "Exit" self.trackBlock("293", "307", "LT17", "THROWN", "LH491", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_34A17": self.trackBlock("304", "3", "LT34", "THROWN", "LH409", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 12824.00 self.trk_speed = 0.25 self.trackBlock("312", "304", "LT0", "Unknown", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2915.00 self.blockBypassStatus = "Exit" self.trackBlock("293", "312", "LT17", "CLOSED", "LH489", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_196M89": self.trackBlock("300", "27", "LT196", "CLOSED", "LH391", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 9472.00 self.trackBlock("257", "300", "LT90", "CLOSED", "LH391", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 2186.00 self.trackBlock("302", "257", "LT5", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 8197.00 self.trackBlock("258", "302", "LT197", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 1639.00 self.blockBypassStatus = "Exit" self.trackBlock("5", "258", "LT89", "THROWN", "LH393", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_196A89": self.trackBlock("299", "27", "LT196", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 10784.00 self.trackBlock("2", "299", "LT90", "CLOSED", "LH389", "loco1", "0","F","false","true","LS3588","LS3801","0") self.trk_max_ms = 13990.00 self.blockBypassStatus = "Exit" self.trackBlock("5", "2", "LT89", "CLOSED", "LH395", "loco1", "0","F","false","true","LS3586","0","0") elif theBypass == "BP_E2W_18M27": self.trackBlock("306", "293", "LT18", "CLOSED", "LH483", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 13844.00 self.trackBlock("305", "306", "LT28", "CLOSED", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 3279.00 self.blockBypassStatus = "Exit" self.trackBlock("35", "305", "LT27", "CLOSED", "LH459", "loco1", "0","F","false","true","0","0","0") elif theBypass == "BP_E2W_18A27": self.trackBlock("51", "293", "LT18", "THROWN", "LH483", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 1093.00 self.trk_speed = 0.20 self.trk_restrictSpeed = 0.10 self.trackBlock("50", "51", "LT19", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 3498.00 self.trk_speed = 0.25 self.trackBlock("49", "50", "LT20", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 5246.00 self.trk_speed = 0.25 self.trackBlock("26", "49", "LT21", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_restrictSpeed = 0.05 self.trk_max_ms = 9715.00 self.trk_speed = 0.15 self.trackBlock("309", "26", "LT24", "THROWN", "LH0", "loco1", "0","F","false","true","0","0","0") self.trk_max_ms = 13990.00 self.trk_speed = 0.25 self.blockBypassStatus = "Exit" self.trackBlock("35", "309", "LT27", "THROWN", "LH457", "loco1", "0","F","false","true","0","0","0") return def checkBypassLogic(self): if self.blockBypassStatus == "Entry": if self.takeBypass == "Entry": if self.whichBypass == self.main_bypass: self.whichBypass = self.alternate_bypass else: self.whichBypass = self.main_bypass print "CF_2_W2E checkBypassLogic: Bypass route is defined by "+self.whichBypass self.useBypass(self.whichBypass) self.takeBypass = "Exit" elif self.blockBypassStatus == "Exit": print "CF_2_W2E Took the Exit Bypass - do not skip more blocks?" self.takeBypass = "No" return def emptyTheLists(self): del self.stop_list[:] del self.stopnote_list[:] del self.slow_ms_list[:] del self.depart_ms_list[:] del self.stop_ms_list[:] del self.slow_speed_list[:] del self.depart_speed_list[:] return def superBlockStatus(self, base_address): mem_handle = memories.getMemory("IM" + str(base_address)) if mem_handle.getComment() == "CF_2_W2E": return "Unoccuppied" first_sensor = int(base_address) self.senshand = sensors.provideSensor("LS"+str(base_address)) if self.senshand.getKnownState() == ACTIVE : return "Occuppied" b = [[5,33],[284,287],[257,302,258],[21,27],[51,50,49,26,309],[304,312],[303,314],[25,318],[305,35,39,40],[7,8],[22,259]] for list in b: east_sensor = list[0] west_sensor = list[-1] lengthoflist = len(list) if east_sensor == first_sensor and self.consist_direction == "East to West": west_sensor = list[-1] last_sensor = west_sensor elif west_sensor == first_sensor and self.consist_direction == "West to East": east_sensor = list[0] last_sensor = east_sensor else : continue self.senshand = sensors.provideSensor("LS"+str(first_sensor)) self.senshand2 = sensors.provideSensor("LS"+str(last_sensor)) if ( self.senshand.getKnownState() == ACTIVE or self.senshand2.getKnownState() == ACTIVE ) : return "Occuppied" if lengthoflist > 2 : ptr = 1 while ptr <= lengthoflist - 2 : inner_sensor = list[ptr] self.senshand = sensors.provideSensor("LS"+str(inner_sensor)) if self.senshand.getKnownState() == ACTIVE : return "Occuppied" ptr += 1 break return "Unoccuppied" def reserveBlocks(self, base_address, setString): first_sensor = int(base_address) mem_handle = memories.getMemory("IM" + str(first_sensor)) while mem_handle.getComment() <> "CF_2_W2E": if ( mem_handle.getComment() == "" or mem_handle.getComment() is None ) : break self.waitMsec(3000) print "CF_2_W2EWaiting for block memory",base_address,"to be available" mem_handle.setComment(setString) if (setString == "") and (int(self.b1_sensor) == int(base_address )) : if self.b1_stub == "Y" : turnouts.getTurnout(self.b1_turnout).setState(int(self.b1_state)) return b = [[5,33],[284,287],[257,302,258],[21,27],[51,50,49,26,309],[304,312],[303,314],[25,318],[305,35,39,40],[7,8],[22,259]] for list in b: east_sensor = list[0] west_sensor = list[-1] lengthoflist = len(list) if east_sensor == first_sensor and self.consist_direction == "East to West": west_sensor = list[-1] last_sensor = west_sensor elif west_sensor == first_sensor and self.consist_direction == "West to East": east_sensor = list[0] last_sensor = east_sensor else : continue first = "IM" + str(first_sensor) last = "IM" + str(last_sensor) memories.getMemory(first).setComment(setString) memories.getMemory(last).setComment(setString) if lengthoflist > 2 : ptr = 1 while ptr <= lengthoflist - 2 : inner_sensor = list[ptr] inner = "IM" + str(inner_sensor) memories.getMemory(inner).setComment(setString) ptr += 1 break return def set_tfcs(self, tfc1, tfc2, tfc3): sensors.provideSensor(tfc1).setState(ACTIVE) sensors.provideSensor(tfc2).setState(ACTIVE) sensors.provideSensor(tfc3).setState(ACTIVE) return def trackBlock(self, next_block, block_address, to_name, to_state, sh_name, sound_loco, blockStopCount, direct, accel, dispatch, tfc1, tfc2, tfc3): print "CF_2_W2E @@@@@ START OF TRACK BLOCK =",block_address, "; blockBypassStatus = ", self.blockBypassStatus,"; Speed is ", self.throttle.getSpeedSetting() print "CF_2_W2E self.throttle.getSpeedSetting() =",self.throttle.getSpeedSetting() print "CF_2_W2E self.trk_speed = ", self.trk_speed if self.trk_restrictSpeed == 0 : self.trk_restrictSpeed = 0.135 print "CF_2_W2E self.trk_restrictSpeed = ", self.trk_restrictSpeed if to_name <> "LT0" : self.trk_max_ms -= 2500 print "CF_2_W2E self.trk_max_ms = ", self.trk_max_ms self.trk_restrict_ms = self.trk_max_ms * self.trk_speed / self.trk_restrictSpeed print "CF_2_W2E self.trk_restrict_ms = ", self.trk_restrict_ms if self.sh_name_lastsignal is None : self.sh_name_lastsignal = "LH0" if self.sh_name_lastsignal <> "LH0" : self.sh_handle = signals.getBySystemName(self.sh_name_lastsignal) print "CF_2_W2E Last block signal =" ,self.sh_name_lastsignal,"; Color will define block speed" if self.sh_handle.getAppearance() == YELLOW : self.signalspeed = self.trk_restrictSpeed print "CF_2_W2E YELLOW" self.blk_ck_ms = self.trk_restrict_ms * 0.8 else : self.signalspeed = self.trk_speed print "CF_2_W2E GREEN" self.blk_ck_ms = self.trk_max_ms * 0.8 else : self.signalspeed = self.trk_restrictSpeed self.blk_ck_ms = self.trk_restrict_ms * 0.8 if self.signalspeed == 0.0 : self.signalspeed = 0.15 print "CF_2_W2E constrain Train speed to ", self.signalspeed," and travel time to (ms) = " + str(self.blk_ck_ms) print "CF_2_W2E self.prior_block =",self.prior_block if self.prior_block <> block_address : self.throttle.setSpeedSetting( self.signalspeed ) self.waitMsec(100) print "CF_2_W2E NOW RUNNING at speed = "+str(self.signalspeed)+" to Sensor LS"+block_address+" Active; Intrablock STOPS next, if any" else : print "CF_2_W2E ######################## STOP loco in 2nd run through of a bypass until next block begins" self.throttle.setSpeedSetting(0) self.waitMsec(100) self.bs_handle = sensors.provideSensor(block_address) self.waitSensorActive(self.bs_handle) print "CF_2_W2E sensor LS"+block_address+" is ******************* NOW ACTIVE ******************** " # if int(blockStopCount) > 0 : self.afterstopsms = 0.0 iPtr = 0 while iPtr < int(blockStopCount) : if self.stopnote_list[iPtr] == "Pass by Station": if sound_loco <> "nosound" : self.passbySounds() self.afterstopsms += (self.delay_time + self.play_time) elif self.stopnote_list[iPtr] == "Crossing": if sound_loco <> "nosound" : self.crossingSounds() self.afterstopsms += (self.delay_time + self.play_time) else : print "CF_2_W2E Normal Stop " + str(self.stop_list[iPtr]) print "CF_2_W2E time to slow to the stop (ms) " + str(self.slow_ms_list[iPtr]) self.waitMsec(long(self.slow_ms_list[iPtr])) if sound_loco == "loco1": self.throttle.setF1(False) elif self.sound_loco == "loco2": self.throttle.setF2(False) self.throttle.setSpeedSetting(0) self.waitMsec(100) print "CF_2_W2E Time to stay stopped (ms) " + str(self.stop_ms_list[iPtr]) self.waitMsec(long(self.stop_ms_list[iPtr])) self.departureSounds() if direct == "F" : self.throttle.setIsForward(True) print "CF_2_W2E Consist gearing is moving loco forward at restricted speed ",str(self.trk_restrictSpeed) self.throttle.setSpeedSetting( self.trk_restrictSpeed ) self.waitMsec(100) else : self.throttle.setIsForward(False) print "CF_2_W2E Locomotive is moving in reverse !!!" self.throttle.setSpeedSetting( self.trk_restrictSpeed ) self.waitMsec(100) self.reversingSounds() if sound_loco == "loco1": self.throttle.setF1(False) elif sound_loco == "loco2": self.throttle2.setF1(False) else: print "CF_2_W2E stop +self.stop_list[iPtr]+: No Sound with this Train!" self.afterstopsms += self.slow_ms_list[iPtr] iPtr += 1 if next_block == "0" : print "CF_2_W2E @@@@@ this is the last trackBlock so STOP!" self.takeBypass = "No" self.blockBypassStatus = "No" return self.blk_ck_ms -= self.afterstopsms print "CF_2_W2E @@@@@ Finished stations/xings in this block - RUN ",self.blk_ck_ms,"ms MORE" if self.blk_ck_ms > 0 : self.waitMsec(long(self.blk_ck_ms)) else: print "CF_2_W2E @@@@@ No stops in block! RUN ",self.blk_ck_ms,"ms MORE" self.throttle.setSpeedSetting( self.trk_restrictSpeed ) self.waitMsec(100) self.waitMsec(long(self.blk_ck_ms)) self.throttle.setSpeedSetting(0) self.waitMsec(100) print "CF_2_W2E @@@@@ STOP train to pre-process next block = ",next_block," : Speed is ", self.throttle.getSpeedSetting() nextblkctl = "not_done" while nextblkctl == "not_done" : print "CF_2_W2E WHILE: self.blockBypassStatus = " + self.blockBypassStatus print "CF_2_W2E self.next_altblock = ",self.next_altblock while self.blockBypassStatus == "Entry" : print "CF_2_W2E Entry" self.senshand = sensors.provideSensor(next_block) print "Entry Test",self.superBlockStatus(next_block) self.memhand = memories.getMemory("IM" + str(next_block)) if ( self.memhand.getComment() == "CF_2_W2E" or self.memhand.getComment() == "" or self.memhand.getComment() is None ): if self.superBlockStatus(next_block) == "Unoccuppied" : print "CF_2_W2E Entry drop to Normal Entry" break else : print "CF_2_W2E WARNING Entry: main track already occuppied; take next_altblock",self.next_altblock self.reserveBlocks(self.next_altblock, "CF_2_W2E") self.set_tfcs(tfc1, tfc2, tfc3) self.takeBypass = "Entry" self.reserveBlocks(self.prior_block, "") return else : print "CF_2_W2E Entry: main track occuppied by other robot or by non-robot so take bypass altblock track if > 0 " if ( self.next_altblock == 0 or self.next_altblock is None ) : print "CF_2_W2E no altblock so already in the bypass; wait until other train leaves block" while self.superBlockStatus(self.next_altblock) == "Occuppied" : print "CF_2_W2E waiting for robot or non robot train to leave Bypass block" self.waitMsec(5000) print "CF_2_W2E other train left bypass block , so process NORMAL path" break else : while self.superBlockStatus(self.next_altblock) == "Occuppied" : print "CF_2_W2E Entry Bypass: WAIT for non or other robot train to leave bypass track next_altblock = ", next_altblock self.waitMsec(3000) self.reserveBlocks(self.next_altblock, "CF_2_W2E") self.set_tfcs(tfc1, tfc2, tfc3) self.takeBypass = "Entry" print "CF_2_W2E Entry Bypass: go to Bypass via HANDLE" self.reserveBlocks(self.prior_block, "") return print "CF_2_W2E NORMAL PATH: next_block ",next_block," is not an Entry (Exit,Neither) or is Entry and is my memory and is not active (non-Robot) so proceed" print "CF_2_W2E self.prior_block =",self.prior_block if self.prior_block > 0 : self.reserveBlocks(self.prior_block, "") self.memhandle_nextblock = memories.getMemory("IM" + str(next_block)) self.mem_nextblock = self.memhandle_nextblock.getComment() while self.mem_nextblock <> "CF_2_W2E" : if ( self.mem_nextblock == "" or self.mem_nextblock is None ) : self.mem_nextblock = memories.getMemory("IM" + str(next_block)).setComment("CF_2_W2E") break self.waitMsec(2500) self.mem_nextblock = memories.getMemory("IM" + str(next_block)).getComment() self.senshand = sensors.provideSensor(next_block) if self.superBlockStatus(next_block) == "Unoccuppied" : print "CF_2_W2E SuperBlock",next_block,"is NOT occuppied by another train" while self.superBlockStatus(next_block) == "Occuppied" : print "CF_2_W2E ACTIVE Sensor - wait for SuperBlock ",next_block,"NOT ACTIVE" self.waitMsec(3000) while self.superBlockStatus(next_block) == "Unoccuppied" : self.reserveBlocks(next_block, "CF_2_W2E") if to_name <> "LT0" : if to_state == "CLOSED": self.to_state_code = 2 else : self.to_state_code = 4 if turnouts.getTurnout(to_name).getCommandedState() <> self.to_state_code : if self.using_dispatcher == "true" : print "CF_2_W2E INCORRECT turnout ",to_name," - await Dispatcher" if turnouts.getTurnout(to_name).getCommandedState() <> self.to_state_code : print "CF_2_W2E WAIT 10 sec - TURNOUT ",to_name," INCORRECT - awaiting DISPATCHER action" self.waitMsec(60000) continue else : turnouts.getTurnout(to_name).setState(self.to_state_code) self.waitMsec(3000) print "CF_2_W2E awaited tortoise; corrected turnout",to_name,"for next block" else : print "CF_2_W2E turnout",to_name,"was CORRECT!" self.sh_name_lastsignal = "LH0" if sh_name <> "LH0" : if signals.getBySystemName(sh_name).getAppearance() == RED : self.waitMsec(3000) print "CF_2_W2E RED signal",sh_name," - wait then retry" continue print "CF_2_W2E Signal",sh_name,"is NOT RED!" self.sh_name_lastsignal = sh_name else : print "CF_2_W2E No Signal precedes next block" if self.blockBypassStatus == "Exit": print "CF_2_W2E blockBypassStatus = Exit. Let HANDLE manage takebypass!" else : self.takeBypass = "No" break break print "CF_2_W2E self.mem_nextblock =",self.mem_nextblock self.reserveBlocks(next_block, "CF_2_W2E") self.prior_block = block_address self.set_tfcs(tfc1, tfc2, tfc3) self.waitMsec(400) self.throttle.setSpeedSetting(0.13) self.waitMsec(100) print "CF_2_W2E @@@@@ RUN TRAIN to end of block",block_address, "; STOP TRAIN when touching next block sensor",next_block self.nbs_handle = sensors.provideSensor(next_block) self.waitSensorActive(self.nbs_handle) self.throttle.setSpeedSetting(0) self.waitMsec(100) print "CF_2_W2E @@@@@ END-OF-BLOCK: TRAIN IS NOW STOPPED; goto HANDLE / BYPASS for Next Block",next_block,"with Resuming Speed = ",str(self.signalspeed) print "CF_2_W2E self.mem_nextblock =",self.mem_nextblock return def handle(self): #Handle is main routine for this class if turnouts.provideTurnout("LT2046").getKnownState() == 2 : print "Quitting" return 0 print "CF_2_W2E ------ HANDLE: preparing Main Block = 303; Next Block = 3; Step 1 *****************" self.trk_max_ms = 16529.00 self.trk_restrictSpeed = 0.17 self.trk_speed = 0.22 self.emptyTheLists() self.stop_list.append("Pottsville_Main_stop") self.stopnote_list.append("Crossing") self.slow_ms_list.append(5000) self.depart_ms_list.append(6000) self.stop_ms_list.append(0) self.slow_speed_list.append(0.22) self.depart_speed_list.append(0.22) b1_stub = "N" self.this_block = 303 print "CF_2_W2Eself.this_block = ", self.this_block blocks.getBlock("IB" + str(self.this_block)).value = self.loco1 while sensors.provideSensor("LS" + str(self.this_block)).getKnownState == ACTIVE : print "CF_2_W2E first block is occuppied" self.waitMsec(5000) self.mem_handle = memories.getMemory("IM" + str(self.this_block)) if self.mem_handle.getComment() == "CF_2_W2E" or self.mem_handle.getComment() == "" : print "CF_2_W2E Memory Assigned/Assignable to my train" else : while (self.mem_handle.getComment() <> "" ) : self.waitMsec(5000) print "CF_2_W2E Unknown owner of block; Waiting for available memory for block ", self.this_block self.reserveBlocks(303, "CF_2_W2E" ) self.set_tfcs("LS3555", "LS0", "LS0") self.trk_max_ms *= 0.5 self.trk_restrict_ms = self.trk_max_ms * self.trk_speed / self.trk_restrictSpeed print "CF_2_W2E Start Handle() with Loco Number ", self.loco1 self.next_altblock = 0 print "CF_2_W2E Block ID 1 is a Bypass EXIT PORTAL if train direction = West to East" self.blockBypassStatus = "Exit" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("3", "303", "LT34", "CLOSED", "LH415", "nosound", "1","F","false","false", "LS3555", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 2 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 3; Next Block = 8; Step 2 *****************" self.trk_max_ms = 14876.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.22 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("8", "3", "LT35", "CLOSED", "LH387", "nosound", "0","F","false","false", "LS3557", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 3 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 8; Next Block = 7; Step 3 *****************" self.trk_max_ms = 3497.00 self.trk_restrictSpeed = 0.10 self.trk_speed = 0.13 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("7", "8", "LT36", "CLOSED", "LH271", "nosound", "0","F","false","false", "LS3561", "LS3761", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 4 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 7; Next Block = 291; Step 4 *****************" self.trk_max_ms = 1818.00 self.trk_restrictSpeed = 0.09 self.trk_speed = 0.10 b1_stub = "N" self.next_altblock = 298 self.blockBypassStatus = "Entry" self.takeBypass = "No" self.main_bypass = "BP_W2E_37M38" self.alternate_bypass = "BP_W2E_37A38" self.whichBypass = self.main_bypass if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("291", "7", "LT37", "THROWN", "LH433", "nosound", "0","F","false","false", "LS3561", "LS3761", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 5 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 291; Next Block = 297; Step 5 *****************" self.trk_max_ms = 455.00 self.trk_restrictSpeed = 0.09 self.trk_speed = 0.10 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("297", "291", "LT2", "THROWN", "LH261", "nosound", "0","F","false","false", "LS3746", "LS3546", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 6 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 297; Next Block = 13; Step 6 *****************" self.trk_max_ms = 23809.00 self.trk_restrictSpeed = 0.17 self.trk_speed = 0.21 b1_stub = "N" self.next_altblock = 0 print "CF_2_W2E Block ID 6 is a Bypass EXIT PORTAL if train direction = West to East" self.blockBypassStatus = "Exit" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("13", "297", "LT38", "CLOSED", "LH431", "nosound", "0","F","false","false", "LS3563", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 7 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 13; Next Block = 285; Step 7 *****************" self.trk_max_ms = 25108.00 self.trk_restrictSpeed = 0.17 self.trk_speed = 0.21 b1_stub = "N" self.next_altblock = 286 self.blockBypassStatus = "Entry" self.takeBypass = "No" self.main_bypass = "BP_W2E_40M42" self.alternate_bypass = "BP_W2E_40A42" self.whichBypass = self.main_bypass if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("285", "13", "LT40", "CLOSED", "LH321", "nosound", "0","F","false","false", "LS3567", "LS3767", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 8 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 285; Next Block = 40; Step 8 *****************" self.trk_max_ms = 24880.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.19 b1_stub = "N" self.next_altblock = 0 print "CF_2_W2E Block ID 8 is a Bypass EXIT PORTAL if train direction = West to East" self.blockBypassStatus = "Exit" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("40", "285", "LT42", "CLOSED", "LH335", "nosound", "0","F","false","false", "LS3573", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 9 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 40; Next Block = 39; Step 9 *****************" self.trk_max_ms = 23967.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.22 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("39", "40", "LT0", "Unknown", "LH0", "nosound", "0","F","false","false", "LS3741", "LS3743", "LS3769") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 10 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 39; Next Block = 35; Step 10 *****************" self.trk_max_ms = 5785.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.22 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("35", "39", "LT41", "CLOSED", "LH349", "nosound", "0","F","false","false", "LS3571", "LS3769", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 11 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 35; Next Block = 305; Step 11 *****************" self.trk_max_ms = 11364.00 self.trk_restrictSpeed = 0.13 self.trk_speed = 0.20 b1_stub = "N" self.next_altblock = 309 self.blockBypassStatus = "Entry" self.takeBypass = "No" self.main_bypass = "BP_W2E_27M18" self.alternate_bypass = "BP_W2E_27A18" self.whichBypass = self.main_bypass if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("305", "35", "LT27", "CLOSED", "LH461", "nosound", "0","F","false","false", "LS3741", "LS3743", "LS3737") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 12 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 305; Next Block = 310; Step 12 *****************" self.trk_max_ms = 6993.00 self.trk_restrictSpeed = 0.11 self.trk_speed = 0.13 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("310", "305", "LT28", "THROWN", "LH0", "nosound", "0","F","false","false", "LS3741", "LS3743", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 13 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 310; Next Block = 311; Step 13 *****************" self.trk_max_ms = 12554.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.21 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("311", "310", "LT135", "CLOSED", "LH475", "nosound", "0","F","false","false", "LS3503", "LS3701", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 14 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 311; Next Block = 314; Step 14 *****************" self.trk_max_ms = 20779.00 self.trk_restrictSpeed = 0.15 self.trk_speed = 0.21 b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("314", "311", "LT32", "CLOSED", "LH511", "nosound", "0","F","false","false", "LS3551", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 15 Start *******************" print "CF_2_W2E ------ HANDLE: preparing Main Block = 314; Next Block = 0; Step 15 *****************" self.trk_max_ms = 11111.00 self.trk_restrictSpeed = 0.14 self.trk_speed = 0.18 self.emptyTheLists() self.stop_list.append("Allentown") self.stopnote_list.append("Normal Stop") self.slow_ms_list.append(3030) self.depart_ms_list.append(3000) self.stop_ms_list.append(5000) self.slow_speed_list.append(0.15) self.depart_speed_list.append(0.15) b1_stub = "N" self.next_altblock = 0 self.blockBypassStatus = "No" if self.takeBypass == "Exit" : print "CF_2_W2E skip this block!" if self.blockBypassStatus == "Exit" : self.takeBypass = "No" self.blockBypassStatus = "No" print "CF_2_W2E do not skip any more of the original blocks" else: self.takeBypass = "No" self.trackBlock("0", "314", "LT0", "", "LH0", "nosound", "1","F","false","false", "LS3555", "LS0", "LS0") print"CF_2_W2E self.takeBypass = ", self.takeBypass self.checkBypassLogic() print "CF_2_W2E HANDLE self.takeBypass = ",self.takeBypass #print "CF_2_W2E ************************************ TRACK BLOCK DIVIDER number 16 Start *******************" print "CF_2_W2E script has completed!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" memories.getMemory("IM314").setComment("") print "prior_block =", self.prior_block if self.prior_block > 0 : memories.getMemory("IM" + self.prior_block).setComment("") if "3" <> "0" : memories.getMemory("IM3").setComment("") self.throttle.setSpeedSetting(0) self.throttle.setF0(False) print "Stop Loco and turn off lights" return # end of class definition loco1CF_2_W2E = 5574 loco2CF_2_W2E = 0 CF_2_W2E().start()