SMS not working when replace delay with millis

It’s not as easy as it looks, because there are three phases required to send a message.
Plus there are other AT functions that can make life a lot easier in a real-time system.

The only way to do it is with a state-machine that tracks the message sending phase progress.

I’ve been considering developing a generic class to do this, but health has slowed me down.
I have the code working (based on the FONA library, but it’s quite tangled at the moment.

As an example - the code simultaneously handles about 30 concurrent millis() timing counters, along with flashing LEDs, timing relays, serial messages, text command parsing and other functions.