Yeah more hardware serial is a good thing…
For a parser, they’re all a bit specific, so I end up writing my own. It’s not too hard if you’re patient.
The trick with the modem, is that some operations take from milliseconds to seconds to complete, and you don’t want to block your processor for that long.
The most difficult thing I found is handling unexpected ‘service messages’ sent by the carrier, or wrong numbers.
My modem handlers (originally based on FONA), are heavily modified, and use a state machine to interact with the various phases of some activities - no blocking.
It was a bit of work, but was well worth the effort.
I was hoping to rewrite it as a class/library but health issues got in the way.