Hayes AT Commands: Détecter le blocage à distance?

Comment êtes-vous censé détecter par programme lorsque le modem distant sur votre appel raccroche? J’écris un programme C qui s’interface avec un périphérique SoftModem /dev/ttySL0 sous Linux Ubuntu. Je peux configurer le modem à l’aide des commandes Hayes AT et communiquer avec le modem distant. Cependant, je n’ai pas été en mesure de déterminer comment je suis supposé détecter que l’autre extrémité a raccroché.

Le modem est configuré de sorte que, lorsque l’autre extrémité raccroche, le périphérique n’imprime NO CARRIER et passe en mode commande. Cependant, je ne peux pas utiliser la chaîne NO CARRIER car je ne peux pas garantir que le modem ne recevra pas cette chaîne en mode données.

Comment “écoutez-vous” pour raccrocher à distance?

Tester pour NO CARRIER tant que texte ne suffira pas. Ce texte apparaît fréquemment sur les sites du réseau, même sur les sites de questions-réponses.

Venant du modem, il devrait être entouré de sauts de ligne.

En outre, après avoir détecté ce texte, vous pouvez essayer de passer en mode commande avec +++ . Si cela fonctionne, votre connexion persiste et vous pouvez la reconnecter et continuer à l’utiliser. Si ce n’est pas le cas (parce que vous y êtes déjà et que +++ est une commande invalide), la connexion a disparu.

Il s’agit d’un signal matériel sur les modems, la ligne de détection de porteuse (CD). Vous devrez le surveiller pour savoir que la connexion a été perdue. Les bases de Linux sont décrites dans ce tutoriel. Vous obtenez l’état du signal avec ioctl () à l’aide de la commande TIOCM_CAR.