# Commandes Hayes

Les Commandes Hayes, parfois appelées Commandes AT, constituent un langage de commandes développé à l'origine pour le modem Hayes Smartmodem 300. Ce jeu de commandes s'est ensuite retrouvé dans tous les modems produits.
Ces commandes permettant par exemple :
* de composer un numéro de téléphone
* de commander le raccordement du modem à la ligne (l'équivalent de décrocher le téléphone)
* de connaître l'état de la ligne : tonalité d'invitation à transmettre, ligne occupée...
* de spécifier le type de transmission et le protocole de liaison à utiliser
* de régler le volume sonore du haut-parleur interne du modem
* d'envoyer les caractères transmis simultanément vers l'écran
* d'afficher certains renseignements concernant le modem
* de manipuler les registres internes du modem

## Contexte

Les commandes AT sont des commandes que l'on peut directement envoyer au modem, lorsque celui-ci est en mode Command, ce qui se produit :
* à la mise sous tension ;
* à la fin d'une communication ;
* après l'exécution d'une commande autre que AT0 ou AT&T ;
* lors de la réception, alors que le modem est en mode on-line, d'une séquence d'échappement (constituée de l'envoi de 3 caractères identiques aux caractères stockés dans un registre interne du modem, généralement '+++', suivie d'un silence) ;
* lors de la transition ON vers OFF de la ligne DTR (si D1, &D2 ou &D3 sont activés).

## Protocole

Chaque commande est envoyée sous la forme d'une ligne de texte encodée en ASCII, terminée par le caractère \r seul (code ASCII 13). Le modem retourne une réponse sous la forme d'une ou plusieurs lignes selon la commande envoyée, chaque ligne se terminant par les caractères \r suivi de \n (codes ASCII 13 et 10).

## Commandes

Ci-après, un résumé des commandes AT ; toutes les commandes doivent être précédées de AT. Par exemple, ATA signifie "répondre". Certaines commandes, comme ATA, sont communes à tous les modems, d'autres sont variables selon le modèle spécifique, comme l'affichage de la configuration peuvent varier selon l'équipement. Il faut donc se reporter à la documentation de son modem.
Quelques commandes AT :
| Commande | Description |
| A | (Answer) Répondre |
| A/ | Répéter la dernière commande |
| ATy=x | Écrire x dans le registre y interne du modem actuellement sélectionné |
| AT? | Lire le contenu du registre sélectionné |
| Bn | (Bell) Sélectionne le mode Bell (américain) ou CCITT (européen) |
| Cn | (Control) Contrôle de la porteuse |
| Dn | (Dial) Compose le numéro de téléphone n |
| DTn | Numérotation en fréquences vocales (Ex:ATDT06xxxxxxxx) |
| DPn | Numérotation par impulsion (Ex:ATDP06xxxxxxxx) |
| En | (Echo) Commande de l'écho |
| Hn | (Hold) Contrôle la prise de ligne et la déconnexion |
| In | (Identify) Identification du modem |
| Ln | Contrôle le volume du haut-parleur interne du modem |
| Mn | Contrôle le volume du haut-parleur interne du modem |
| On | (On-line) Retour au mode on-line |
| P | (Pulse) Sélectionne la numérotation par impulsions |
| Qn | Contrôle du code "résultat" renvoyé par le modem après exécution de la commande ; ce code est constitué soit de 1 à 3 chiffres (code court), soit d'une chaîne de caractères plus explicite (code étendu) |
| Sn | Accès au registre interne n |
| T | (Tone) Sélectionne la numérotation par tonalités |
| Vn | Forme du code "résultat" |
| Wn | Contrôle du code de résultat de connexion |
| Xn | (eXtended) Contrôle du code "résultat" étendu |
| Yn | Déconnexion avec long délai |
| Zn | Reset |
| &Cn | (Carrier control) Contrôle du DCD (Data Carrier Detect) |
| &Dn | (Dtr) option DTR (Data Terminal Ready) |
| &Fn | Restaure la configuration par défaut du modem |
| &Gn | (Guard tone) Sélectionne la tonalité de garde |
| &Kn | Contrôle du flux d'informations |
| &Mn | (Mode) Sélection du mode |
| &Pn | (Pulse control) Contrôle de la numérotation par impulsions |
| &Qn | Sélection du mode |
| &Sn | Option DSR (Data Set Ready) |
| &Tn | (Test) Test et diagnostic |
| &V | afficher la configuration actuelle |
| &Wn | (Write) Mémoriser la configuration actuelle |
| &Yn | Sélectionne la configuration par défaut |
| &Zn=x | Mémorise le numéro de téléphone x dans le registre n |
| \An | Sélectionne la taille maximum de bloc MNP |
| \Bn | (Break) Transmettre break au modem distant |
| \Jn | Ajustement de la cadence DCE |
| \Kn | Contrôle du break |
| %En | Contrôle automatique fallback/fallforward |

## Exemples d’utilisation des commandes AT

* Composition de numéro de téléphone : ATDT(555)555-5555
(Attention parfois il faut mettre le signe ";" point virgule à la fin du numéro)
* Répondre : ATA
* Raccrocher : ATH

## Exemples de codes "résultat"

Exemples de codes "résultat" :
| Forme étendue | Forme courte | Signification |
| OK | 0 | Confirmation d’exécution d’une commande |
| CONNECT | 1 | La connexion est établie à 300 bit/s |
| RING | 2 | Détection de la tonalité de sonnerie |
| NO CARRIER | 3 | Problème de connexion |
| ERROR | 4 | Erreur de syntaxe dans la ligne de commandes |
| CONNECT1200 | 5 | La connexion est établie à 1 200 bit/s |
| BUSY | 7 | Ligne occupée |
| CONNECT56000 | 82 | La connexion est établie à 56 000 bit/s |