master/slave_config.c
changeset 843 b6bddb663755
parent 842 40e27e5a8dce
child 844 8839ba8bfeb4
equal deleted inserted replaced
842:40e27e5a8dce 843:b6bddb663755
   445         )
   445         )
   446 {
   446 {
   447     const ec_sync_t *sync;
   447     const ec_sync_t *sync;
   448     const ec_pdo_t *default_pdo;
   448     const ec_pdo_t *default_pdo;
   449 
   449 
       
   450     if (sc->master->debug_level)
       
   451         EC_DBG("Loading default configuration for Pdo 0x%04X in"
       
   452                 " config %u:%u.\n", pdo->index, sc->alias, sc->position);
       
   453 
   450     pdo->default_config = 1;
   454     pdo->default_config = 1;
   451 
   455 
   452     if (!sc->slave) {
   456     if (!sc->slave) {
   453         EC_WARN("Failed to load default Pdo configuration for %u:%u:"
   457         EC_WARN("Failed to load default Pdo configuration for %u:%u:"
   454                 " Slave not found.\n", sc->alias, sc->position);
   458                 " Slave not found.\n", sc->alias, sc->position);
   495 {
   499 {
   496     ec_pdo_mapping_t *pm = &sc->mapping[dir];
   500     ec_pdo_mapping_t *pm = &sc->mapping[dir];
   497     ec_pdo_t *pdo;
   501     ec_pdo_t *pdo;
   498     
   502     
   499     if (pm->default_mapping) {
   503     if (pm->default_mapping) {
       
   504         if (sc->master->debug_level)
       
   505             EC_DBG("Clearing default mapping for dir %u, config %u:%u.\n",
       
   506                     dir, sc->alias, sc->position);
   500         pm->default_mapping = 0;
   507         pm->default_mapping = 0;
   501         ec_pdo_mapping_clear_pdos(pm);
   508         ec_pdo_mapping_clear_pdos(pm);
   502     }
   509     }
       
   510 
       
   511     if (sc->master->debug_level)
       
   512         EC_DBG("Adding Pdo 0x%04X to mapping for dir %u, config %u:%u.\n",
       
   513                 index, dir, sc->alias, sc->position);
   503 
   514 
   504     if (!(pdo = ec_pdo_mapping_add_pdo(pm, index, dir)))
   515     if (!(pdo = ec_pdo_mapping_add_pdo(pm, index, dir)))
   505         return -1;
   516         return -1;
   506 
   517 
   507     ec_slave_config_load_default_pdo_config(sc, pdo);
   518     ec_slave_config_load_default_pdo_config(sc, pdo);
   515         uint8_t entry_bit_length)
   526         uint8_t entry_bit_length)
   516 {
   527 {
   517     ec_direction_t dir;
   528     ec_direction_t dir;
   518     ec_pdo_t *pdo;
   529     ec_pdo_t *pdo;
   519     
   530     
       
   531     if (sc->master->debug_level)
       
   532         EC_DBG("Adding Pdo entry 0x%04X:%u (%u bit) to configuration of Pdo"
       
   533                 " 0x%04X, config %u:%u.\n", entry_index, entry_subindex,
       
   534                 entry_bit_length, pdo_index, sc->alias, sc->position);
       
   535 
   520     for (dir = EC_DIR_OUTPUT; dir <= EC_DIR_INPUT; dir++)
   536     for (dir = EC_DIR_OUTPUT; dir <= EC_DIR_INPUT; dir++)
   521         if ((pdo = ec_pdo_mapping_find_pdo(&sc->mapping[dir], pdo_index)))
   537         if ((pdo = ec_pdo_mapping_find_pdo(&sc->mapping[dir], pdo_index)))
   522             break;
   538             break;
   523 
   539 
       
   540     if (!pdo) {
       
   541         EC_ERR("Pdo 0x%04X was not found in the mapping of config %u:%u.\n",
       
   542                 pdo_index, sc->alias, sc->position);
       
   543         return -1;
       
   544     }
       
   545 
   524     if (pdo->default_config) {
   546     if (pdo->default_config) {
       
   547         if (sc->master->debug_level)
       
   548             EC_DBG("Clearing default configuration of Pdo 0x%04X,"
       
   549                     " config %u:%u.\n", pdo->index, sc->alias, sc->position);
   525         pdo->default_config = 0;
   550         pdo->default_config = 0;
   526         ec_pdo_clear_entries(pdo);
   551         ec_pdo_clear_entries(pdo);
   527     }
   552     }
   528 
   553 
   529     return ec_pdo_add_entry(pdo, entry_index, entry_subindex,
   554     return ec_pdo_add_entry(pdo, entry_index, entry_subindex,
   544     for (i = 0; i < n_entries; i++) {
   569     for (i = 0; i < n_entries; i++) {
   545         pi = &pdo_infos[i];
   570         pi = &pdo_infos[i];
   546         pm = &sc->mapping[pi->dir];
   571         pm = &sc->mapping[pi->dir];
   547 
   572 
   548         if (pm->default_mapping) {
   573         if (pm->default_mapping) {
       
   574             if (sc->master->debug_level)
       
   575                 EC_DBG("Clearing default mapping for dir %u, config %u:%u.\n",
       
   576                         pi->dir, sc->alias, sc->position);
   549             pm->default_mapping = 0;
   577             pm->default_mapping = 0;
   550             ec_pdo_mapping_clear_pdos(pm);
   578             ec_pdo_mapping_clear_pdos(pm);
   551         }
   579         }
   552 
   580 
   553         if (sc->master->debug_level)
   581         if (sc->master->debug_level)
   554             EC_INFO("Adding Pdo 0x%04X to mapping.\n", pi->index);
   582             EC_DBG("Adding Pdo 0x%04X to mapping.\n", pi->index);
   555 
   583 
   556         if (!(pdo = ec_pdo_mapping_add_pdo(pm, pi->dir, pi->index)))
   584         if (!(pdo = ec_pdo_mapping_add_pdo(pm, pi->dir, pi->index)))
   557             return -1;
   585             return -1;
   558 
   586 
   559         if (pi->n_entries && pi->entries) { // configuration provided
   587         if (pi->n_entries && pi->entries) { // configuration provided
   565                 if (!ec_pdo_add_entry(pdo, ei->index, ei->subindex,
   593                 if (!ec_pdo_add_entry(pdo, ei->index, ei->subindex,
   566                             ei->bit_length))
   594                             ei->bit_length))
   567                     return -1;
   595                     return -1;
   568             }
   596             }
   569         } else { // use default Pdo configuration
   597         } else { // use default Pdo configuration
   570             if (sc->master->debug_level)
       
   571                 EC_DBG("  Using default Pdo configuration.\n");
       
   572             ec_slave_config_load_default_pdo_config(sc, pdo);
   598             ec_slave_config_load_default_pdo_config(sc, pdo);
   573         }
   599         }
   574     }
   600     }
   575 
   601 
   576     return 0;
   602     return 0;