906 ec_eeprom_pdo_entry_t *pdo_entry; |
904 ec_eeprom_pdo_entry_t *pdo_entry; |
907 ec_sdo_t *sdo; |
905 ec_sdo_t *sdo; |
908 ec_sdo_entry_t *sdo_entry; |
906 ec_sdo_entry_t *sdo_entry; |
909 int first, i; |
907 int first, i; |
910 |
908 |
911 if (!verbosity) { |
|
912 if (slave->type) { |
|
913 EC_INFO("%2i) %s %s: %s\n", slave->ring_position, |
|
914 slave->type->vendor_name, slave->type->product_name, |
|
915 slave->type->description); |
|
916 } |
|
917 else { |
|
918 EC_INFO("%2i) UNKNOWN SLAVE: 0x%08X 0x%08X\n", |
|
919 slave->ring_position, slave->sii_vendor_id, |
|
920 slave->sii_product_code); |
|
921 } |
|
922 return; |
|
923 } |
|
924 |
|
925 EC_INFO("x-- EtherCAT slave information ---------------\n"); |
|
926 |
|
927 if (slave->type) { |
909 if (slave->type) { |
928 EC_INFO("| Vendor \"%s\", Product \"%s\": %s\n", |
910 EC_INFO("%i) %s %s: %s\n", slave->ring_position, |
929 slave->type->vendor_name, slave->type->product_name, |
911 slave->type->vendor_name, slave->type->product_name, |
930 slave->type->description); |
912 slave->type->description); |
931 } |
913 } |
932 else { |
914 else { |
933 EC_INFO("| *** This slave has no type information! ***\n"); |
915 EC_INFO("%i) UNKNOWN SLAVE: vendor 0x%08X, product 0x%08X\n", |
934 } |
916 slave->ring_position, slave->sii_vendor_id, |
935 |
917 slave->sii_product_code); |
936 EC_INFO("| Ring position: %i, Station address: 0x%04X\n", |
918 } |
937 slave->ring_position, slave->station_address); |
919 |
938 |
920 if (!verbosity) return; |
939 EC_INFO("| Data link status:\n"); |
921 |
|
922 EC_INFO(" Station address: 0x%04X\n", slave->station_address); |
|
923 |
|
924 EC_INFO(" Data link status:\n"); |
940 for (i = 0; i < 2; i++) { |
925 for (i = 0; i < 2; i++) { |
941 EC_INFO("| Port %i: link %s, loop %s, %s\n", i, |
926 EC_INFO(" Port %i: link %s, loop %s, comm %s\n", i, |
942 slave->dl_status_link[i] ? "up" : "down", |
927 slave->dl_status_link[i] ? "up" : "down", |
943 slave->dl_status_loop[i] ? "closed" : "open", |
928 slave->dl_status_loop[i] ? "closed" : "open", |
944 slave->dl_status_comm[i] ? "comm. establ." : "no comm."); |
929 slave->dl_status_comm[i] ? "up" : "down"); |
945 } |
930 } |
946 |
931 |
947 EC_INFO("| Base information:\n"); |
932 EC_INFO(" Base information:\n"); |
948 EC_INFO("| Type %u, Revision %i, Build %i\n", |
933 EC_INFO(" Type %u, revision %i, build %i\n", |
949 slave->base_type, slave->base_revision, slave->base_build); |
934 slave->base_type, slave->base_revision, slave->base_build); |
950 EC_INFO("| Supported FMMUs: %i, Sync managers: %i\n", |
935 EC_INFO(" Supported FMMUs: %i, sync managers: %i\n", |
951 slave->base_fmmu_count, slave->base_sync_count); |
936 slave->base_fmmu_count, slave->base_sync_count); |
952 |
937 |
953 if (slave->sii_mailbox_protocols) { |
938 if (slave->sii_mailbox_protocols) { |
954 EC_INFO("| Mailbox communication:\n"); |
939 EC_INFO(" Mailbox communication:\n"); |
955 EC_INFO("| RX mailbox: 0x%04X/%i, TX mailbox: 0x%04X/%i\n", |
940 EC_INFO(" RX mailbox: 0x%04X/%i, TX mailbox: 0x%04X/%i\n", |
956 slave->sii_rx_mailbox_offset, slave->sii_rx_mailbox_size, |
941 slave->sii_rx_mailbox_offset, slave->sii_rx_mailbox_size, |
957 slave->sii_tx_mailbox_offset, slave->sii_tx_mailbox_size); |
942 slave->sii_tx_mailbox_offset, slave->sii_tx_mailbox_size); |
958 EC_INFO("| Supported protocols: "); |
943 EC_INFO(" Supported protocols: "); |
959 |
944 |
960 first = 1; |
945 first = 1; |
961 if (slave->sii_mailbox_protocols & EC_MBOX_AOE) { |
946 if (slave->sii_mailbox_protocols & EC_MBOX_AOE) { |
962 printk("AoE"); |
947 printk("AoE"); |
963 first = 0; |
948 first = 0; |
987 printk("VoE"); |
972 printk("VoE"); |
988 } |
973 } |
989 printk("\n"); |
974 printk("\n"); |
990 } |
975 } |
991 |
976 |
992 EC_INFO("| EEPROM data:\n"); |
977 EC_INFO(" EEPROM data:\n"); |
993 |
978 |
994 if (slave->sii_alias) |
979 if (slave->sii_alias) |
995 EC_INFO("| Configured station alias: 0x%04X (%i)\n", |
980 EC_INFO(" Configured station alias: 0x%04X (%i)\n", |
996 slave->sii_alias, slave->sii_alias); |
981 slave->sii_alias, slave->sii_alias); |
997 |
982 |
998 EC_INFO("| Vendor-ID: 0x%08X, Product code: 0x%08X\n", |
983 EC_INFO(" Vendor-ID: 0x%08X, Product code: 0x%08X\n", |
999 slave->sii_vendor_id, slave->sii_product_code); |
984 slave->sii_vendor_id, slave->sii_product_code); |
1000 EC_INFO("| Revision number: 0x%08X, Serial number: 0x%08X\n", |
985 EC_INFO(" Revision number: 0x%08X, Serial number: 0x%08X\n", |
1001 slave->sii_revision_number, slave->sii_serial_number); |
986 slave->sii_revision_number, slave->sii_serial_number); |
1002 |
987 |
1003 if (slave->eeprom_name) |
988 if (slave->eeprom_name) |
1004 EC_INFO("| Name: %s\n", slave->eeprom_name); |
989 EC_INFO(" Name: %s\n", slave->eeprom_name); |
1005 if (slave->eeprom_group) |
990 if (slave->eeprom_group) |
1006 EC_INFO("| Group: %s\n", slave->eeprom_group); |
991 EC_INFO(" Group: %s\n", slave->eeprom_group); |
1007 if (slave->eeprom_desc) |
992 if (slave->eeprom_desc) |
1008 EC_INFO("| Description: %s\n", slave->eeprom_desc); |
993 EC_INFO(" Description: %s\n", slave->eeprom_desc); |
1009 |
994 |
1010 if (!list_empty(&slave->eeprom_syncs)) { |
995 if (!list_empty(&slave->eeprom_syncs)) { |
1011 EC_INFO("| Sync-Managers:\n"); |
996 EC_INFO(" Sync-Managers:\n"); |
1012 list_for_each_entry(sync, &slave->eeprom_syncs, list) { |
997 list_for_each_entry(sync, &slave->eeprom_syncs, list) { |
1013 EC_INFO("| %i: 0x%04X, length %i, control 0x%02X, %s\n", |
998 EC_INFO(" %i: 0x%04X, length %i, control 0x%02X, %s\n", |
1014 sync->index, sync->physical_start_address, |
999 sync->index, sync->physical_start_address, |
1015 sync->length, sync->control_register, |
1000 sync->length, sync->control_register, |
1016 sync->enable ? "enable" : "disable"); |
1001 sync->enable ? "enable" : "disable"); |
1017 } |
1002 } |
1018 } |
1003 } |
1019 |
1004 |
1020 list_for_each_entry(pdo, &slave->eeprom_pdos, list) { |
1005 list_for_each_entry(pdo, &slave->eeprom_pdos, list) { |
1021 EC_INFO("| %s \"%s\" (0x%04X), -> Sync-Manager %i\n", |
1006 EC_INFO(" %s \"%s\" (0x%04X), -> Sync-Manager %i\n", |
1022 pdo->type == EC_RX_PDO ? "RXPDO" : "TXPDO", |
1007 pdo->type == EC_RX_PDO ? "RXPDO" : "TXPDO", |
1023 pdo->name ? pdo->name : "???", |
1008 pdo->name ? pdo->name : "???", |
1024 pdo->index, pdo->sync_manager); |
1009 pdo->index, pdo->sync_manager); |
1025 |
1010 |
1026 list_for_each_entry(pdo_entry, &pdo->entries, list) { |
1011 list_for_each_entry(pdo_entry, &pdo->entries, list) { |
1027 EC_INFO("| \"%s\" 0x%04X:%X, %i Bit\n", |
1012 EC_INFO(" \"%s\" 0x%04X:%X, %i Bit\n", |
1028 pdo_entry->name ? pdo_entry->name : "???", |
1013 pdo_entry->name ? pdo_entry->name : "???", |
1029 pdo_entry->index, pdo_entry->subindex, |
1014 pdo_entry->index, pdo_entry->subindex, |
1030 pdo_entry->bit_length); |
1015 pdo_entry->bit_length); |
1031 } |
1016 } |
1032 } |
1017 } |
1033 |
1018 |
1034 if (verbosity > 1) // sehr geschwätzig |
1019 if (verbosity < 2) return; |
1035 { |
1020 |
1036 if (!list_empty(&slave->sdo_dictionary)) { |
1021 if (!list_empty(&slave->sdo_dictionary)) { |
1037 EC_INFO("| SDO-Dictionary:\n"); |
1022 EC_INFO(" SDO-Dictionary:\n"); |
1038 list_for_each_entry(sdo, &slave->sdo_dictionary, list) { |
1023 list_for_each_entry(sdo, &slave->sdo_dictionary, list) { |
1039 EC_INFO("| 0x%04X \"%s\"\n", sdo->index, |
1024 EC_INFO(" 0x%04X \"%s\"\n", sdo->index, |
1040 sdo->name ? sdo->name : ""); |
1025 sdo->name ? sdo->name : ""); |
1041 EC_INFO("| Type 0x%04X, features: 0x%02X\n", |
1026 EC_INFO(" Type 0x%04X, features: 0x%02X\n", |
1042 sdo->type, sdo->features); |
1027 sdo->type, sdo->features); |
1043 list_for_each_entry(sdo_entry, &sdo->entries, list) { |
1028 list_for_each_entry(sdo_entry, &sdo->entries, list) { |
1044 EC_INFO("| 0x%04X:%i \"%s\", type 0x%04X, %i bits\n", |
1029 EC_INFO(" 0x%04X:%i \"%s\", type 0x%04X, %i bits\n", |
1045 sdo->index, sdo_entry->subindex, |
1030 sdo->index, sdo_entry->subindex, |
1046 sdo_entry->name ? sdo_entry->name : "", |
1031 sdo_entry->name ? sdo_entry->name : "", |
1047 sdo_entry->data_type, sdo_entry->bit_length); |
1032 sdo_entry->data_type, sdo_entry->bit_length); |
1048 } |
|
1049 } |
1033 } |
1050 } |
1034 } |
1051 } |
1035 } |
1052 |
|
1053 EC_INFO("x---------------------------------------------\n"); |
|
1054 } |
1036 } |
1055 |
1037 |
1056 /*****************************************************************************/ |
1038 /*****************************************************************************/ |
1057 |
1039 |
1058 /** |
1040 /** |