I left the setup running in the REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING state waiting for reconnection, and eventually, after roughly 40 minutes, the connection came back up again. Log:
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING
psRegistrationStatus==REGISTRATION_STATUS_REGISTERED_HOME
#----------------------------------------------------------#
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING
psRegistrationStatus==REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING
#----------------------------------------------------------#
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_REGISTRATION_DENIED
psRegistrationStatus==REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING
#----------------------------------------------------------#
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_REGISTRATION_DENIED
psRegistrationStatus==REGISTRATION_STATUS_REGISTRATION_DENIED
#----------------------------------------------------------#
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_REGISTERED_HOME
psRegistrationStatus==REGISTRATION_STATUS_REGISTRATION_DENIED
#----------------------------------------------------------#
#----------------------------------------------------------#
RegisterUrcNetworkRegistrationEventCallback triggered…
networkRegistrationMode==REGISTRATION_MODE_UNKNOWN
csRegistrationStatus==REGISTRATION_STATUS_REGISTERED_HOME
psRegistrationStatus==REGISTRATION_STATUS_REGISTERED_HOME
Clearly a 40 minute connection loss when the real loss was only about a minute will not give a usable product.
Do I need to implement some kind of watchdog thread that tries to reset the connection after a certain time in the REGISTRATION_STATUS_NOT_REGISTERED_SEARCHING state? That seems like a rather ugly way of addressing this issue.