OK, give this one a try. A pretty obvious problem is that, if it got an error while sending a message, the busy time stamp wouldn't get set which would mean that the field would stay stuck in True state and never recover. So now it makes sure that the busy field gets reset on reconnect. And, if an error occurs during send, it makes sure the timer gets set so that it will go through a normal busy cycle just in case (and the Busy field will then get cleared.)