Skip to content
  • Blog
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Community Forum

  1. Home
  2. Categories
  3. Téléinfo
  4. WifInfo
  5. Fonction Readconfig et check CRC ?

Fonction Readconfig et check CRC ?

Scheduled Pinned Locked Moved WifInfo
2 Posts 2 Posters 1.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    nherreyre
    wrote on last edited by nherreyre
    #1

    Hello,

    En relisant le code de la fonction readConfig, je ne comprend pas comment le crc calculé lors de la lecture de l'EEPROM est vérifié :

    
    bool readConfig (bool clear_on_error) 
    {	
    	// For whole size of config structure
    	for (uint16_t i = 0; i < sizeof(_Config); ++i) {
    		// read data
    		data = EEPROM.read(i);
    			
    		// calc CRC
    		crc = crc16Update(crc, data);
    	}
    	
    	// CRC Error ?
    	if (crc != 0) {    <-----
    
    

    ne faudrait il pas plutôt tester dans le IF la valeur de la variable "crc" avec celle de "config.crc" ?

    je suis peut être passé a coté de quelque chose vu que suis nul en calcul de CRC 😉

    a+

    Nicolas.

    1 Reply Last reply
    • M Offline
      M Offline
      mjeanne
      wrote on last edited by mjeanne
      #2

      On ne teste pas ici le crc de chaque variable de config, mais le crc de toute la structure.
      Mes cours sur le CRC sont loin, mais ce qui est fait ici, c'est un calcul de crc sur chaque valeur de la config (et non sur l'objet "config"), qui contient elle-même une "sauvegarde" du crc. On fait donc un calcul de crc sur l'ensemble "config.* + config.crc", donc le résultat du modulo devrait être 0. Si le crc déjà calculé lors de la sauvegarde n'était pas stocké dans l'objet config, ça ne fonctionnerait pas pareil et on ferait une comparaison config.crc et crc.

      Par contre, l'extrait de code à été simplifié ? Parce que je n'y vois pas l'initialisation de crc avant la boucle.

      Sinon, pour simplifier la compréhension, le code dans la boucle aurait pu resembler à ça:
      ancienCRC = crc;
      crc = crc16Update(ancienCRC, data);

      1 Reply Last reply

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      3

      Online

      5.8k

      Users

      565

      Topics

      5.3k

      Posts

      Top Topics

      Popular Tags

      teleinfo
      25 topics
      arduino
      19 topics
      remora
      16 topics
      esp8266
      10 topics
      arduipi
      10 topics
      raspberry
      8 topics
      wifinfo
      7 topics
      broadcast
      7 topics
      Copyright © 2022 Charles-Henri Hallard | Return to blog page | Powered by NodeBB
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Blog
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups