Categories

Communication challenge 2013

Objectifs

Ce « communication challenge » a pour but de vous faire développer une application en un temps limité afin de mettre en œuvre vos connaissances acquises lors des cours et des travaux pratiques.

Un quizz vous sera présenté en 802.15.4, et vous devez trouver un moyen d’y répondre (en 802.15.4 également).

La note sera déterminée :

  • à partir de vos résultats lors du quizz, ce qui nécessite que vous soyez en mesure d’y répondre ;
  • du code qui se trouvera dans vos dépôt git à la fin du challenge.

Un quizz est composé de 10 questions, chacune accompagnée de quatre réponses possibles.

Protocole

La communication avec le serveur de quizz se fait en mode 802.15.4 avec des adresses sur 16 bits. L’adresse du serveur est 0x5351 (correspondant aux lettres “SQ”, serveur de quizz). Il faut également configurer le PAN ID sur “SQ”. Comme lors du TP STM32, l’adresse de chaque participant sera composée avec le code ASCII de la première lettre du prénom en majuscules et celui de la première lettre du nom de famille en majuscules également.

Le dialogue aura la forme suivante

  1. Un client souhaitant commencer un quizz envoie le caractère 0x02 au serveur pour réaliser un quizz de test (pendant le développement) ou 0x01 pour un quizz noté.
    Attention : l’envoi d’un tel caractère termine un éventuel quizz en cours, et pour un quizz noté cela signifie que toutes les questions non répondues sont considérées comme ayant eu une mauvaise réponse. Il est donc conseillé d’utiliser 0x02 tant que vous n’êtes pas prêt à être noté.
  2. Le serveur répond en renvoyant trois fois ce même caractère (0x02 ou 0x01) pour indiquer qu’il a bien reçu votre demande. Cela vous permet également de vous resynchroniser avec le flux d’entrée. Si vous avez demandé un quizz noté et que vous avez dépassé la limite, le serveur vous répondra que vous êtes en mode test, puisque vous ne pouvez plus passer de quizz noté.
  3. Le serveur envoie alors la première question sous la forme suivante :
    • Un caractère donne l’identifiant de la question (appelons le id), qui n’a aucune signification particulière. Ce caractère sera compris entre 0x03 et 0x3F.
    • La question est transmise sous la forme d’une chaîne de 80 caractères au maximum, suivie du caractère \n.
    • Les quatre réponses sont transmises sous la forme d’une chaîne de 16 caractères au maximum chacune, chacune étant suivie du caractère \n.
  4. Le client doit transmettre sa réponse sous la forme d’un caractère répété trois fois. Ce caractère est composé de l’identifiant de la question (id) sur les 6 bits de poids fort, et de la réponse (entre 0 et 3, dans l’ordre d’arrivée des réponses possibles) sur les 2 bits de poids faible.
  5. Si moins de 10 questions ont été transmises, le processus reprend à l’étape 3. Sinon, il continue à l’étape suivante.
  6. Le serveur envoie la note obtenue sous la forme d’un octet contenant le score (entre 0 et 10) avec le bit de poids fort positionné. 0x80 correspond donc à 0/10, 0x8a correspond à 10/10.

Note : le caractère 0x00 peut être envoyé à tout moment au serveur, qui l’ignorera.

Déroulement des quizz

Vous pouvez passer des quizz en mode test autant de fois que vous le voulez.

Par contre, les quizz en mode noté ne peuvent être passés que 5 fois au maximum, et tout quizz commencé est décompté. Soyez certain de n’utiliser ce mode que lorsque vous êtes confiants que votre programme est fiable et se comportera correctement dans tous les cas possibles. La meilleure note des cinq premiers quizz passés en mode noté sera utilisée. N’hésitez pas à repasser en mode test si vous détectez ou soupçonnez un problème.

Bien entendu, les questions en mode test et noté peuvent être différentes.

Remarques

  • Chaque question pouvant faire jusqu’à 80 caractères, il peut être nécessaire de prévoir une fonction de défilement sur l’afficheur LCD.
  • Chaque réponse pouvant faire jusqu’à 16 caractères, il peut être nécessaire de prévoir un dispositif de sélection de la réponse. Pour cela, vous avez la possibilité d’utiliser le potentiomètre et les boutons qui se trouvent sur vos cartes.
  • Il est totalement interdit de perturber le déroulement des tests pour les autres participants, de quelque manière que ce soit. Notamment, tout envoi de paquet en mode broadcast ou l’utilisation de l’adresse de quelqu’un d’autre sont totalement interdits et seront sanctionnés.
  • Comme mentionné ci-dessus, tout envoi de 0x01 consomme un quizz noté, même si aucune réponse n’est envoyée par la suite. Soyez prudents dans vos émissions.

2 comments to Communication challenge 2013

  • Felix

    On peut avoir un streaming de l’écran des scores ? 😀

  • Good luck everybody! And big up to the first who will waste all his attempts because he did not control what he sent. It happens even to the best coders! (I mean before they became ROSEeux)