master/slave.c
changeset 879 9b395c5646ab
parent 876 8acdecb5a75e
child 904 ba6f222aa06e
equal deleted inserted replaced
878:40c379697ebf 879:9b395c5646ab
   613                         pdo->sync_index, pdo->index, slave->ring_position);
   613                         pdo->sync_index, pdo->index, slave->ring_position);
   614                 return -1;
   614                 return -1;
   615             }
   615             }
   616             sync = &slave->sii.syncs[pdo->sync_index];
   616             sync = &slave->sii.syncs[pdo->sync_index];
   617 
   617 
   618             if (ec_pdo_mapping_add_pdo_copy(&sync->mapping, pdo))
   618             if (ec_pdo_list_add_pdo_copy(&sync->pdos, pdo))
   619                 return -1;
   619                 return -1;
   620 
   620 
   621             sync->mapping_source = EC_SYNC_MAPPING_SII;
   621             sync->assign_source = EC_ASSIGN_SII;
   622         }
   622         }
   623     }
   623     }
   624 
   624 
   625     return 0;
   625     return 0;
   626 }
   626 }
   796         buf += sprintf(buf, "  Current consumption: %i mA\n\n",
   796         buf += sprintf(buf, "  Current consumption: %i mA\n\n",
   797                 slave->sii.current_on_ebus);
   797                 slave->sii.current_on_ebus);
   798     }
   798     }
   799 
   799 
   800     if (slave->sii.sync_count) {
   800     if (slave->sii.sync_count) {
   801         buf += sprintf(buf, "Sync managers / Pdo mapping:\n");
   801         buf += sprintf(buf, "Sync managers / assigned Pdos:\n");
   802 
   802 
   803         for (i = 0; i < slave->sii.sync_count; i++) {
   803         for (i = 0; i < slave->sii.sync_count; i++) {
   804             sync = &slave->sii.syncs[i];
   804             sync = &slave->sii.syncs[i];
   805             buf += sprintf(buf,
   805             buf += sprintf(buf,
   806                     "  SM%u: addr 0x%04X, size %u, control 0x%02X, %s\n",
   806                     "  SM%u: addr 0x%04X, size %u, control 0x%02X, %s\n",
   807                     sync->index, sync->physical_start_address,
   807                     sync->index, sync->physical_start_address,
   808                     sync->length, sync->control_register,
   808                     sync->length, sync->control_register,
   809                     sync->enable ? "enable" : "disable");
   809                     sync->enable ? "enable" : "disable");
   810 
   810 
   811             if (list_empty(&sync->mapping.pdos)) {
   811             if (list_empty(&sync->pdos.list)) {
   812                 buf += sprintf(buf, "    No Pdos mapped.\n");
   812                 buf += sprintf(buf, "    No Pdos assigned.\n");
   813             } else if (sync->mapping_source != EC_SYNC_MAPPING_NONE) {
   813             } else if (sync->assign_source != EC_ASSIGN_NONE) {
   814                 buf += sprintf(buf,
   814                 buf += sprintf(buf, "    Pdo assignment from ");
   815                         "    Pdo mapping information from %s.\n",
   815                 switch (sync->assign_source) {
   816                         sync->mapping_source == EC_SYNC_MAPPING_SII
   816                     case EC_ASSIGN_SII:
   817                         ? "SII" : "CoE");
   817                         buf += sprintf(buf, "SII");
       
   818                         break;
       
   819                     case EC_ASSIGN_COE:
       
   820                         buf += sprintf(buf, "CoE");
       
   821                         break;
       
   822                     case EC_ASSIGN_CUSTOM:
       
   823                         buf += sprintf(buf, "application");
       
   824                         break;
       
   825                     default:
       
   826                         buf += sprintf(buf, "?");
       
   827                         break;
       
   828                 }
       
   829                 buf += sprintf(buf, ".\n");
   818             }
   830             }
   819 
   831 
   820             list_for_each_entry(pdo, &sync->mapping.pdos, list) {
   832             list_for_each_entry(pdo, &sync->pdos.list, list) {
   821                 buf += sprintf(buf, "    %s 0x%04X \"%s\"\n",
   833                 buf += sprintf(buf, "    %s 0x%04X \"%s\"\n",
   822                         pdo->dir == EC_DIR_OUTPUT ? "RxPdo" : "TxPdo",
   834                         pdo->dir == EC_DIR_OUTPUT ? "RxPdo" : "TxPdo",
   823                         pdo->index, pdo->name ? pdo->name : "???");
   835                         pdo->index, pdo->name ? pdo->name : "???");
   824 
   836 
   825                 list_for_each_entry(pdo_entry, &pdo->entries, list) {
   837                 list_for_each_entry(pdo_entry, &pdo->entries, list) {
   841         list_for_each_entry(pdo, &slave->sii.pdos, list) {
   853         list_for_each_entry(pdo, &slave->sii.pdos, list) {
   842             buf += sprintf(buf, "  %s 0x%04X \"%s\"",
   854             buf += sprintf(buf, "  %s 0x%04X \"%s\"",
   843                     pdo->dir == EC_DIR_OUTPUT ? "RxPdo" : "TxPdo",
   855                     pdo->dir == EC_DIR_OUTPUT ? "RxPdo" : "TxPdo",
   844                     pdo->index, pdo->name ? pdo->name : "???");
   856                     pdo->index, pdo->name ? pdo->name : "???");
   845             if (pdo->sync_index >= 0)
   857             if (pdo->sync_index >= 0)
   846                 buf += sprintf(buf, ", default mapping: SM%u.\n",
   858                 buf += sprintf(buf, ", default assignment: SM%u.\n",
   847                         pdo->sync_index);
   859                         pdo->sync_index);
   848             else
   860             else
   849                 buf += sprintf(buf, ", no default mapping.\n");
   861                 buf += sprintf(buf, ", no default assignment.\n");
   850 
   862 
   851             list_for_each_entry(pdo_entry, &pdo->entries, list) {
   863             list_for_each_entry(pdo_entry, &pdo->entries, list) {
   852                 buf += sprintf(buf, "    0x%04X:%X \"%s\", %u bit\n",
   864                 buf += sprintf(buf, "    0x%04X:%X \"%s\", %u bit\n",
   853                         pdo_entry->index, pdo_entry->subindex,
   865                         pdo_entry->index, pdo_entry->subindex,
   854                         pdo_entry->name ? pdo_entry->name : "???",
   866                         pdo_entry->name ? pdo_entry->name : "???",
  1300     const ec_pdo_t *pdo;
  1312     const ec_pdo_t *pdo;
  1301 
  1313 
  1302     for (i = 0; i < slave->sii.sync_count; i++) {
  1314     for (i = 0; i < slave->sii.sync_count; i++) {
  1303         sync = &slave->sii.syncs[i];
  1315         sync = &slave->sii.syncs[i];
  1304 
  1316 
  1305         if (!(pdo = ec_pdo_mapping_find_pdo_const(&sync->mapping, index)))
  1317         if (!(pdo = ec_pdo_list_find_pdo_const(&sync->pdos, index)))
  1306             continue;
  1318             continue;
  1307 
  1319 
  1308         return pdo;
  1320         return pdo;
  1309     }
  1321     }
  1310 
  1322