Skip to main content

Just ran across this post so I'm a little late to the party.

I've had similar problems to what GRJ had experienced on his club layout, but my layout configuration is a little different. There are seven sidings scattered about that may have Legacy, TMCC or MTH DCS engines stored and when activated via relays are powered from the mainlines (1 & 2) using two Lionel PH180's. In other words, I do not have a separate power feed to the sidings.

There is a single TIU powered in Passive mode using Fixed 1 Output, which is currently the only output in use. Also, since I do not own a DCS-RC unit (and they have obviously become more scarce than hen's teeth) I'm looking for a different solution.

In one of Barry Broskowitz replies he stated "Actually, the watch dog is issued any time the voltage at a TIU channel output port changes from 0 to any greater value."

Does anyone know if the watchdog is issued across all the outputs when a single output changes? For example, a voltage change on Fixed 2 would also trigger the watchdog on Fixed 1.

Thanks,

Barry

@barnun posted:

... There are seven sidings scattered about that may have Legacy, TMCC or MTH DCS engines stored and when activated via relays are powered from the mainlines (1 & 2) using two Lionel PH180's. In other words, I do not have a separate power feed to the sidings.

There is a single TIU powered in Passive mode using Fixed 1 Output, which is currently the only output in use. Also, since I do not own a DCS-RC unit (and they have obviously become more scarce than hen's teeth) I'm looking for a different solution.

1. So there are seven relays that switch power.  How are the relays controlled (e.g., by an AIU)?

2. Do you ever need more than one siding on at a given time?

If the DCS-RC method is no longer a practical option, why not the approach GRJ proposed in the first post of this thread (over 5 years ago!).  In other words every time you turn on a siding, you momentarily remove power from the passively powered TIU channel to use the TIU's watchdog.  Depending on answers to above 2 questions, there might be a way for the proverbial man-behind-the-curtain to do it transparently.

@stan2004 posted:

In other words every time you turn on a siding, you momentarily remove power from the passively powered TIU channel to use the TIU's watchdog.

That is my plan for 3 or 4 sidings that I'll use to park engines. I have the relays for turning siding power on and off. I have two staging tracks that I turn power off now so the EOTs don't sit blinking all the time.  I'm thinking of wiring in a time delay relay that will turn TIU channel power off when I select and engine siding and the delay relay will turn the channel power back on after a few seconds. It means dedicating a TIU channel to the engine parks but I have two not being used.

I keep watching for RC boards to show up on the parts site but I doubt they ever will.

I'm using a rotary switch to control  yard power.  I select the lane and push a button to turn yard power on and off.  I use inexpensive electronically latching relays to carry the track power.  When a different lane is selected, power is automatically turned off on the previously selected lane so only one lane can be powered at a time.  I haven't worked the WD timer issue yet.

@stan2004 posted:

1. So there are seven relays that switch power.  How are the relays controlled (e.g., by an AIU)?

2. Do you ever need more than one siding on at a given time?

If the DCS-RC method is no longer a practical option, why not the approach GRJ proposed in the first post of this thread (over 5 years ago!).  In other words every time you turn on a siding, you momentarily remove power from the passively powered TIU channel to use the TIU's watchdog.  Depending on answers to above 2 questions, there might be a way for the proverbial man-behind-the-curtain to do it transparently.

Stan,

The relays are controlled by Arduino Microcontrollers via an NRF24L01+  2.4gHz radio network, seven slave nodes controlled by a single Master.  The sidings are located on module 1 with 2 spur sidings, 1 spur siding which spans modules 4 & 5 and module 7 (with 4 yard sidings).  The Master is co-located with the TIU & WIU, more often than not multiple sidings would be powering on / off during a session.

My original thought was if the TIU issued the watchdog across all outputs when one was changed, problem solved and the most elegant solution.  Simply toggle a small voltage change on the currently unused Fixed 2.  GRJ's testing proved that is not a viable option.

For now I'm thinking my options are to 1. toggle Fixed 1 off and back on for a brief period of time, something in the 1 second ballpark or as brief as it can be so that the watchdog is triggered.  Just not sure what impact that will have on running DCS locomotives.  2. Bridge Fixed 2 across Fixed 1 for a brief period of time, same as option 1.  In essence using Fixed 2 as the DCS-RC module.  Again, just not sure what impact that will have on running DCS locomotives.

Thanks,

Barry

Here's my two cents worth. I have a nine stall roundhouse and seven whisker tracks around my turn table. I used two 12v 8up relay banks for powering these tracks thru the accessory ports of two AIU's. When I activate a stall/whisker with my remote it also turns on one of these inexpensive (I got these for $1.20 ea.) timer relays and powers up the DCS-RC for whatever time I have the timer relay set for (about 4 to 6 seconds). Here is a pic of my setup.



Attachments

Images (1)
  • mceclip0

I just have the DCS-RC running continuously on the TIU channel that controls all my siding tracks, 14 in total.  Each track is independently switched, and the DCS-RC in continually hammering out it's WD, so engines come up dark and silent, job done.

In point of fact, I have four DCS-RC WD boxes, one for each TIU output, all my tracks get the treatment.

Attachments

Images (1)
  • mceclip0
@milwrd posted:

Here's my two cents worth. I have a nine stall roundhouse and seven whisker tracks around my turn table. I used two 12v 8up relay banks for powering these tracks thru the accessory ports of two AIU's. When I activate a stall/whisker with my remote it also turns on one of these inexpensive (I got these for $1.20 ea.) timer relays and powers up the DCS-RC for whatever time I have the timer relay set for (about 4 to 6 seconds). Here is a pic of my setup.

milwrd,  Nice setup, very very tidy!!

I just have the DCS-RC running continuously on the TIU channel that controls all my siding tracks, 14 in total.  Each track is independently switched, and the DCS-RC in continually hammering out it's WD, so engines come up dark and silent, job done.

In point of fact, I have four DCS-RC WD boxes, one for each TIU output, all my tracks get the treatment.

GRJ, makes perfect sense and great setup.  May I read your response to infer that your gut says bridging Fixed 2 to Fixed 1 briefly may be the simplest solution?

Dan, Steve and all, thanks for the replies so far.

Barry

Just checked eBay and the most recent actual sales show a used DCS-RC for $30 buy-it-now which seems reasonable.  A new unit, which includes the handheld remote (albeit unneeded for this application), went for $200.  There are a couple sellers actively offering new DCS-RC for a whopping $250!  Yikes.  It wasn't that long ago guys on OGR were giving away (just pay shipping) unused/unneeded DCS-RC units as they were included in MTH Starter Sets.

dcsrc on ebay

Attachments

Images (1)
  • dcsrc on ebay
@stan2004 posted:

Just checked eBay and the most recent actual sales show a used DCS-RC for $30 buy-it-now which seems reasonable.  A new unit, which includes the handheld remote (albeit unneeded for this application), went for $200.  There are a couple sellers actively offering new DCS-RC for a whopping $250!  Yikes.  It wasn't that long ago guys on OGR were giving away (just pay shipping) unused/unneeded DCS-RC units as they were included in MTH Starter Sets.

Stan,

Thanks for checking!  I did see the new ones going for exorbitant prices and regarding the OGR units as usual I'm a day late and dollar short.  Unfortunately, I could not find any available via my normal commercial outlets.  Petersen Supply did have a web page showing one in stock, but it was an out-of-date cached web page according to the exceptionally pleasant lady I spoke with at Petersen's.  I'll post a 'wanted to buy' here on OGR and put some feelers out to the normal 'train collection recycling' businesses along with a recurring search on eBay.  Surely one will turn up at some point.  Thanks again.

Barry

@barnun posted:

...

The relays are controlled by Arduino Microcontrollers via an NRF24L01+  2.4gHz radio network, seven slave nodes controlled by a single Master.  The sidings are located on module 1 with 2 spur sidings, 1 spur siding which spans modules 4 & 5 and module 7 (with 4 yard sidings).  The Master is co-located with the TIU & WIU, more often than not multiple sidings would be powering on / off during a session.

But who/what controls the Master?  By "co-located" is this just physical location or is there any "software" interaction between the 2.4 GHz radio network and DCS... for example at the Wi-Fi level.  Note that to turn on a newly powered engine (e.g., on a siding) in the silent state and in Command mode, you don't need to generate the Watchdog packet itself.  ANY DCS activity during the first few seconds will tell a newly powered DCS engine to start up silent and in Command mode.  The Watchdog is essentially a benign placeholder command that doesn't do anything (doesn't change speed, doesn't blow horn, etc.) other than tell a newly powered engine that this is a Command control environment so be quiet and wait for further instructions.

This idea of "manually" creating DCS activity during the first few seconds of turning on a siding was discussed early on in the thread - some 5 years ago!  It just seems that with all those Arduino's there ought to be some way to "hack" into the WIU to tell the TIU to issue some benign DCS activity whenever a new siding is powered.

Another scheme discussed early on required Arduino-type smarts (which you have).  Why not have the Arduino generate the watchdog or whatever suitable DCS activity and put it on the track.  There are issues with this which you can review but I regurgitate it for the sake of completeness or potentially stimulate additional what-ifs.

But I think your Plan B is the way to go - since your Master knows when it is turning on a siding, simply add a relay to momentarily interrupt the passively applied power to Fixed 1.  Since the TIU is passively powered, the engines will not see the power interruption so they are none the wiser.  It's only if the power interruption somehow confuses the TIU such as whatever information it has about Active Engines or whatever.  But this momentary power-interruption method was what GRJ proposed in his original post so I think the most logical next step.

@stan2004 posted:

But who/what controls the Master?  By "co-located" is this just physical location or is there any "software" interaction between the 2.4 GHz radio network and DCS... for example at the Wi-Fi level.  Note that to turn on a newly powered engine (e.g., on a siding) in the silent state and in Command mode, you don't need to generate the Watchdog packet itself.  ANY DCS activity during the first few seconds will tell a newly powered DCS engine to start up silent and in Command mode.  The Watchdog is essentially a benign placeholder command that doesn't do anything (doesn't change speed, doesn't blow horn, etc.) other than tell a newly powered engine that this is a Command control environment so be quiet and wait for further instructions.

This idea of "manually" creating DCS activity during the first few seconds of turning on a siding was discussed early on in the thread - some 5 years ago!  It just seems that with all those Arduino's there ought to be some way to "hack" into the WIU to tell the TIU to issue some benign DCS activity whenever a new siding is powered.

Another scheme discussed early on required Arduino-type smarts (which you have).  Why not have the Arduino generate the watchdog or whatever suitable DCS activity and put it on the track.  There are issues with this which you can review but I regurgitate it for the sake of completeness or potentially stimulate additional what-ifs.

But I think your Plan B is the way to go - since your Master knows when it is turning on a siding, simply add a relay to momentarily interrupt the passively applied power to Fixed 1.  Since the TIU is passively powered, the engines will not see the power interruption so they are none the wiser.  It's only if the power interruption somehow confuses the TIU such as whatever information it has about Active Engines or whatever.  But this momentary power-interruption method was what GRJ proposed in his original post so I think the most logical next step.

Stan,

Wow, a lot to think about and digest.  I'll start with the Master Arduino.  It's directives come from a keypad mounted on the control console or via Bluetooth from an Android tablet.  When I first built the layout there were four rows with five columns of the Atlas 2 position switches wired to the switches on the layout along with accessories and sidings.  Talk about a wad of wires.   So if I wanted to throw Node  1 Switch 1 on the mainline, I'd toggle switch R1C1.  Now I input 11 on the keypad or tablet and press send.  It was the easiest way I could think of not having to re-learn a new number schema.

'Co-located' references physical location, both the Master and TIU reside in the same cavity at the master console with the WIU on top.  So physical wiring / interconnection is not a problem.  The main point of converting to wireless was to minimize the wired connections between the console and the layout.

There is currently no direct interaction between the radios and DCS.  I've only very recently started to dip my toes in the Arduino / Legacy pond and have a very large amount of knowledge to learn.  One place I fall really short right now would be with the WIU and how it interfaces with the tablet.  From everything I've read on the Forum it seems MTH never released the protocols for DCS unlike Lionel has for TMCC / Legacy.  Needless to say a 'hack' between the Master and the WIU or TIU would be the perfect solution.  Just not sure how I get to there from here.

I tend to agree with your assessment regarding Plan B.  Since I'm still in the process of converting the layout to wireless, it's not really operational at the moment.  I will try to come up with some kind of test bed to check on the Fixed 1 momentary interruption.  I think where my brain is at regards the timing around an engine on the inactive list being powered up, moving to the active list and some form of DCS command being issued for that specific locomotive.

Your and John's PWB is also an attractive solution.

As always Stan, I appreciate your (and all on the Forum) input.

Thanks, Barry

OK, Plan C Revision 1 Addendum 1.
Since I now have full ownership of and legal rights to a DCS-RC unit and a PWB is on the way from GRJ, can anyone think of a good reason the following would not work instead of adding the PWB board.

1. Wire the DCS-RC unit to the TIU Fixed 1 output in passive mode.
2. Wire a ground between the Arduino MC and the DCS-RC unit ground pin.
3. Wire a connection between an Arduino MC Output Pin (set normally High) and the DCS-RC unit          Reset Pin.
4. Whenever the Arduino MC throws a relay to power any of the sidings the next line of code drives the Output Pin to ground for 'x' amount of time for say 3 repetitions. Theoretically causing the DCS-RC to reset and issue it's watchdog 3 times.

I do understand that as currently deployed on numerous layouts the PWB resets once a second and the watchdog does not cause any problems.  My thoughts were, 1. it should reduce the digital traffic on the control channel and 2. Allows full control of the watchdog timing.

I now control the vertical, I now control the horizontal, do not attempt to adjust your DCS-RC. (for those of you old enough to remember 'The Outer Limits' of which I more than qualify).

Just thought I'd throw this out to the forum brain trust.
Barry

Oh. You mean you want to know the reason? 

The track ground (black banana jack) on the DCS-RC is NOT the same as the internal digital signal ground as used by the microcontroller chip.  I confirmed this with a DMM continuity measurement.

dcsrc track ground not same as internal digital ground

By peeking under the hood, there is a bridge rectifier which converts the track voltage (typically AC but can be DC) and converts it to DC for use by the digital electronics.  So the track voltage "ground" and the internal digital signal "ground" are not the same.  The signal transformer also kind-of sort-of corroborates this as this is in all likelihood how the high-frequency DCS watchdog signal is coupled onto the track voltage coming from a circuit with a different ground.

Not to worry.  Just hook up a 25 cent DC-optocoupler and a 5 cent resistor between your Arduino output pin and the DCS-RC.  If not familiar with this interconnection technique, I can draw you a diagram/schematic.  If you don't have these parts lying around, it will be annoying since the shipping will be 10 times the cost of the components.

Actually, you could connect the Arduino ground to the DCS-RC internal ground rather than to the DCS-RC track ground.  You would not need an optocoupler and could directly connect the Arduino output pin to the DCS-RC reset pin.  Everyone is entitled to their opinion; my opinion is you should NOT do it this way...please use the optocoupler method. 

But moving on.  So every time you trigger a relay to power up a previously unpowered siding, issue a reset pulse to the DCS-RC.  The pulse should be, say, 0.1 seconds long.  Do this 3 times (or however many you want) with each pulse separated by 1 second.  Note from earlier discussion that the DCS-RC sends out the Watchdog burst about 3/4 second after you issue the reset pulse.  The duration of the Watchdog burst is very short - less than 0.1 seconds IIRC.

Attachments

Images (1)
  • dcsrc track ground not same as internal digital ground
@stan2004 posted:

I can.

LOL.

Stan,

It was my intention to hook up to the signal ground and not the track ground using the pins you and GRJ use to power your reset board.  Obviously, I was less than clear in the previous post.  But, I really really like the idea of the optocoupler.  Should anything happen in the DCS-RC unit (albeit unlikely) it would be much better to fry an .89 cent optocoupler as opposed to an $8 MC, and no waiting or shipping cost as I have a number of the pre-fab units on hand.  I should have thought of that earlier.

Curious as to the logic behind using the Track ground as opposed to the Signal ground.  Your thoughts?

I truly appreciate the timing synopsis!  Should make writing the code that much easier, my current view is when activating a spur or yard siding is to set a variable (most likely WDT) to the number of times I wish to reset the DSC-RC and decrement it by one each time the MC issues the reset command till it reads 0.  Provides an easy and convenient method of controlling the desired number of resets and the main loop runs quickly as the only time it branches to the watchdog subroutine is when WDT => 1.

Also, on a different topic .... in your spare time could you possibly start working on a Warp Drive?

Thanks, Barry

Why are you making a simple job complicated?

GRJ,

Good morning, the most likely answer is 'a minor character flaw'. 

Personally I don't really view this as being much more complex, with either option I still have to open the case, solder in a header on the DCS-RC board and either insert the PBW or two wires. The coding is a nit and pretty much already good to go. To be honest I really have not yet decided on which way I want to go, kinda' reviewing options.

On the PBW plus side, known working good reliable solution for todays environment.
Simply my opinion, on the PBW minus side is the continuous traffic on the control channel and more limited ability to modify the hardware timing parameters should the environment change in the future.

On the MC plus side, reduced control channel traffic and a more easily implemented range of software timing solutions should the environment change tomorrow. Plus, sometimes I enjoy a good challenge, hope that helps 'splain where my head's at.

I'm also hoping to receive your & Stan's PBW board today.
Barry

@barnun posted:

...
3. Wire a connection between an Arduino MC Output Pin (set normally High) and the DCS-RC unit Reset Pin.

...

@barnun posted:


...

But, I really really like the idea of the optocoupler.  Should anything happen in the DCS-RC unit (albeit unlikely) it would be much better to fry an .89 cent optocoupler as opposed to an $8 MC, and no waiting or shipping cost as I have a number of the pre-fab units on hand.  I should have thought of that earlier.

Curious as to the logic behind using the Track ground as opposed to the Signal ground.  Your thoughts?



...

In thinking about years of OGR Electrical Forum discussions, there's been interchangeable use of terms signal ground, track ground, earth ground, outer-rail ground, trigger ground, chassis ground, logic ground, local ground, ground coffee (OK, maybe not that one)...but you get the idea.  Ground was what you connect the black probe of a meter to and the black terminal of a transformer.  I believe there are many guys who simply lump all grounds together as being one-and-the-same sort of like a universal "common." Obviously you are not of that school of thought!

Anyway, to further glaze over more eyes, if directly hooking up an Arduino output pin to an active-low microcontroller reset line (as in the DCS-RC), I would set the Arduino output pin to "normally Tri-state" rather than "normally High."   Especially in this case where you're driving an unknown environment.  You will see that the PBW board uses an open-collector transistor to pull down the DCS-RC reset line.  So this is equivalent to going "tri-state" except when generating the reset pulse.  This allows other elements of the unknown circuit to drive the reset line too - and again we have no schematics so it would be "rude" to assume you can drive the signal HIGH when you aren't using it!  Additionally, microcontroller circuits can multiplex the active-low reset pin to take on other circuit functions which would of course be compromised if some interloping circuit drives the pin HIGH.  OK, I think I made my point. LOL.

So all this goes away with an opto-coupler.  You can drive the Arduino output pin HIGH and LOW rather than mucking around with driving the output pin TRI-STATE and LOW.  My only concern is what you mean by a "pre-fab" unit.  Is this some kind of opto-coupler that might buffer (drive) the isolated output HIGH.  I was assuming a generic DC opto-coupler which has an "open-collector" transistor as its output pins and thereby would only turn on when the Arduino outputs the short reset pulse.

And to your point about frying an 89 cent optocoupler instead of whatever, I think the last thing you want to roll the dice on is frying the DCS-RC custom-programmed microcontroller chip which is surely irreplaceable.  The galvanic isolation of the opto-coupler insures there is no current path from an external source and each circuit maintains its own "ground."  That is, the DCS-RC signal ground is effectively one-diode voltage away from the nasty track voltage ground.  Connecting this to the Arduino ground is like shackling a ball-and-chain to your leg... in my opinion of course!

Last edited by stan2004
@stan2004 posted:

'interchangeable use of terms signal ground, track ground, earth ground, outer-rail ground, trigger ground, chassis ground, logic ground, local ground, ground coffee'

LOL ... you forgot 'hallowed ground and ground down to a bloody pulp.

'Especially in this case where you're driving an unknown environment.'   'OK, I think I made my point. LOL.'

Succinctly, with great clarity and relevance!

'I was assuming a generic DC opto-coupler which has an "open-collector" transistor as its output pins and thereby would only turn on when the Arduino outputs the short reset pulse.'

I'm assuming that's why I didn't see any triode tubes .  My experience to date with the 'pre-fab' optocouplers is the output duplicates the input.  If it receives a high (1)  it outputs a high (1), if it receives a low (0) it outputs a low (0).  But I can easily test that.   Tri-State in Arduino speak would be : pinMode((pin x), INPUT_PULLUP).  I will say previously I've only set the pin's pinMode during setup, but I see no reason (yet) that it couldn't be toggled (from Input to Output do a digitalWrite and back to Input) during a subroutine.  Again, an easy test (easy to say as I sit here not having tried that yet).

Just did a little research and according to :
https://www.baldengineer.com/w...pinmode-and-why.html    'Starting with IDE 1.0.1, if pinMode() is called with INPUT, the internal pull-up resistor is explicitly disabled. However, when pinMode() is called with INPUT_PULLUP, the pull-up will be enabled. You can still override the state of the pin after pinMode() has been called by using digitalWrite.'

That sounds like I may not have to change the pinMode, simply do a digitalWrite.  But, I'm never that lucky.

'frying the DCS-RC custom-programmed microcontroller chip which is surely irreplaceable.'  ' in my opinion of course! '

Which is spot on and always valued!  Thanks, Barry



d213

OK.  I'm 99% confident it will work in this specific application but there are many flag-on-the-fields to make one scratch their head or other body parts.

I pulled the above from an eBay listing and I realize all the sellers are copying the verbiage from another listing etc. etc.

But a TTL micro?  Yeah, there were a few "TTL" micros back in the day but they would burn so much power as to make them  impractical except for maybe some military or esoteric applications.  For example, it appears there's a 220 Ohm resistor on the input opto diode.  So if using a 5V Arduino, and driving the DL213 ~1.2V opto led, that's a (5V-1.2V)/220 Ohm = 17 mA drive current.  Are you kidding me?!  Can an Arduino even source that much current on an output pin?  Well, even if it can, that's just insane...when the output of the module has a 10K pullup resistor which means that if it is indeed mimic'ing (i.e., High input -> High output) the opto input, it can only source, say, 5V/10K Ohms = 0.5 mA.  That kind of current-transfer-ratio doesn't pass the laugh test.  Either that or maybe the jokes on me?

Well, my concern was to insert galvanic isolation between your Arduino and the DCS-RC, and you get that so it is what it is. 

Attachments

Images (1)
  • d213

Sorry to be in this camp, but I'm still of the opinion that we're searching for the answer to a question that shouldn't have been asked.  The additional "traffic" added by the WD generator is trivial, and installing it is dead simple, just connected it to the TIU output.  It's still a mystery to me why all the work to accomplish so little.

So in addition to being the MacGyver of train repairs you are an Existential Philosopher too!

@stan2004 posted:

= 17 mA drive current.  Are you kidding me?!  Can an Arduino even source that much current on an output pin?

Gentlemen,  good morning.

Stan, although I've never measured the current, my understanding is the Arduino can source up to 20 mA on a pin safely (40 mA tops with the Mega 2560).  Up to the current limit of the power supply on the board when using multiple pins simultaneously which somewhere in the back of my little pea brain says 200 mA.  Submitted in the spirit of 'just fyi'.

Sorry to be in this camp, but I'm still of the opinion that we're searching for the answer to a question that shouldn't have been asked. 

GRJ, in my opinion there is nothing to be sorry about.  I would only disagree with 'shouldn't have been asked.'  This is all kinda' moot as I've decided to just use the PWB as is.  But, if in the future I need to address a completely different situation with a similar solution it is documented here and I've considered this as a learning opportunity.

As always, my thanks to everyone. Barry

NO!  You will only cause problems connecting TIU outputs, that's a giant no-no!

Can you elaborate on this?  What is it about hooking two TIU outputs together is a no-no?

For example, would powering the donor TIU channel with a separate power supply and then capacitively coupling the two channels help so that "only" the high-frequency DCS Watchdog signal is injected into the yard track?

Does this apply if the TIU output is from a completely separate TIU? That is, someone may have an old version or partially functional TIU and use it as a Watchdog generator.  On eBay now the cheapest you can get a USED DCS-RC is $130 plus shipping.  New ones go for $200 and up!  At those prices kind of begs the question, why not or what would it take to apply an unused TIU channel?!

Last edited by stan2004

Add Reply

Post
The DCS Forum is sponsored by
OGR Publishing, Inc., 1310 Eastside Centre Ct, Suite 6, Mountain Home, AR 72653
330-757-3020

www.ogaugerr.com
×
×
×
×
Link copied to your clipboard.
×
×