master/fsm_master.c
changeset 607 7b1daa325c5f
parent 605 96a894895999
child 610 29489a43ecee
equal deleted inserted replaced
606:a82c53d6a5d4 607:7b1daa325c5f
   309             wake_up(&master->eeprom_queue);
   309             wake_up(&master->eeprom_queue);
   310             continue;
   310             continue;
   311         }
   311         }
   312 
   312 
   313         // found pending EEPROM write operation. execute it!
   313         // found pending EEPROM write operation. execute it!
   314         EC_INFO("Writing EEPROM of slave %i...\n", slave->ring_position);
   314         if (master->debug_level)
       
   315             EC_DBG("Writing EEPROM data to slave %i...\n",
       
   316                     slave->ring_position);
   315         fsm->eeprom_request = request;
   317         fsm->eeprom_request = request;
   316         fsm->eeprom_index = 0;
   318         fsm->eeprom_index = 0;
   317         ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->offset,
   319         ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->offset,
   318                 request->words, EC_FSM_SII_NODE);
   320                 request->words, EC_FSM_SII_NODE);
   319         fsm->state = ec_fsm_master_state_write_eeprom;
   321         fsm->state = ec_fsm_master_state_write_eeprom;
   780 
   782 
   781 /**
   783 /**
   782    Master state: WRITE EEPROM.
   784    Master state: WRITE EEPROM.
   783 */
   785 */
   784 
   786 
   785 void ec_fsm_master_state_write_eeprom(ec_fsm_master_t *fsm /**< master state machine */)
   787 void ec_fsm_master_state_write_eeprom(
       
   788         ec_fsm_master_t *fsm /**< master state machine */)
   786 {
   789 {
   787     ec_master_t *master = fsm->master;
   790     ec_master_t *master = fsm->master;
   788     ec_eeprom_write_request_t *request = fsm->eeprom_request;
   791     ec_eeprom_write_request_t *request = fsm->eeprom_request;
   789     ec_slave_t *slave = request->slave;
   792     ec_slave_t *slave = request->slave;
   790 
   793 
   791     if (ec_fsm_sii_exec(&fsm->fsm_sii)) return;
   794     if (ec_fsm_sii_exec(&fsm->fsm_sii)) return;
   792 
   795 
   793     if (!ec_fsm_sii_success(&fsm->fsm_sii)) {
   796     if (!ec_fsm_sii_success(&fsm->fsm_sii)) {
   794         slave->error_flag = 1;
   797         slave->error_flag = 1;
   795         EC_ERR("Failed to write EEPROM contents to slave %i.\n",
   798         EC_ERR("Failed to write EEPROM data to slave %i.\n",
   796                slave->ring_position);
   799                 slave->ring_position);
   797         request->state = EC_EEPROM_REQ_ERROR;
   800         request->state = EC_EEPROM_REQ_ERROR;
   798         wake_up(&master->eeprom_queue);
   801         wake_up(&master->eeprom_queue);
   799         fsm->state = ec_fsm_master_state_error;
   802         fsm->state = ec_fsm_master_state_error;
   800         return;
   803         return;
   801     }
   804     }
   809         ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately
   812         ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately
   810         return;
   813         return;
   811     }
   814     }
   812 
   815 
   813     // finished writing EEPROM
   816     // finished writing EEPROM
   814     EC_INFO("Finished writing EEPROM of slave %i.\n", slave->ring_position);
   817     if (master->debug_level)
       
   818         EC_DBG("Finished writing EEPROM data to slave %i.\n",
       
   819                 slave->ring_position);
   815     request->state = EC_EEPROM_REQ_COMPLETED;
   820     request->state = EC_EEPROM_REQ_COMPLETED;
   816     wake_up(&master->eeprom_queue);
   821     wake_up(&master->eeprom_queue);
   817 
   822 
   818     // TODO: Evaluate new EEPROM contents!
   823     // TODO: Evaluate new EEPROM contents!
   819 
   824