129 MasterDevice &m, |
129 MasterDevice &m, |
130 const ConfigList &configList |
130 const ConfigList &configList |
131 ) |
131 ) |
132 { |
132 { |
133 ConfigList::const_iterator configIter; |
133 ConfigList::const_iterator configIter; |
134 unsigned int j, k, l; |
134 unsigned int i, j, k, l; |
135 ec_ioctl_slave_t slave; |
135 ec_ioctl_slave_t slave; |
136 ec_ioctl_config_pdo_t pdo; |
136 ec_ioctl_config_pdo_t pdo; |
137 ec_ioctl_config_pdo_entry_t entry; |
137 ec_ioctl_config_pdo_entry_t entry; |
138 ec_ioctl_config_sdo_t sdo; |
138 ec_ioctl_config_sdo_t sdo; |
139 |
139 |
157 << " (" << alStateString(slave.al_state) << ")" << endl; |
157 << " (" << alStateString(slave.al_state) << ")" << endl; |
158 } else { |
158 } else { |
159 cout << "none" << endl; |
159 cout << "none" << endl; |
160 } |
160 } |
161 |
161 |
|
162 cout << "Watchdog divider: "; |
|
163 if (configIter->watchdog_divider) { |
|
164 cout << dec << configIter->watchdog_divider; |
|
165 } else { |
|
166 cout << "(Default)"; |
|
167 } |
|
168 cout << endl |
|
169 << "Watchdog intervals: "; |
|
170 if (configIter->watchdog_intervals) { |
|
171 cout << dec << configIter->watchdog_intervals; |
|
172 } else { |
|
173 cout << "(Default)"; |
|
174 } |
|
175 cout << endl; |
|
176 |
162 for (j = 0; j < EC_MAX_SYNC_MANAGERS; j++) { |
177 for (j = 0; j < EC_MAX_SYNC_MANAGERS; j++) { |
163 if (configIter->syncs[j].pdo_count) { |
178 if (configIter->syncs[j].pdo_count) { |
164 cout << "SM" << dec << j << " (" |
179 cout << "SM" << dec << j << ", Dir: " |
165 << (configIter->syncs[j].dir == EC_DIR_INPUT |
180 << (configIter->syncs[j].dir == EC_DIR_INPUT |
166 ? "Input" : "Output") << ")" << endl; |
181 ? "Input" : "Output") << ", Watchdog: "; |
|
182 switch (configIter->syncs[j].watchdog_mode) { |
|
183 case EC_WD_DEFAULT: cout << "Default"; break; |
|
184 case EC_WD_ENABLE: cout << "Enable"; break; |
|
185 case EC_WD_DISABLE: cout << "Disable"; break; |
|
186 default: cout << "???"; break; |
|
187 } |
|
188 cout << endl; |
|
189 |
167 for (k = 0; k < configIter->syncs[j].pdo_count; k++) { |
190 for (k = 0; k < configIter->syncs[j].pdo_count; k++) { |
168 m.getConfigPdo(&pdo, configIter->config_index, j, k); |
191 m.getConfigPdo(&pdo, configIter->config_index, j, k); |
169 |
192 |
170 cout << " PDO 0x" << hex << setfill('0') |
193 cout << " PDO 0x" << hex << setfill('0') |
171 << setw(4) << pdo.index << endl; |
194 << setw(4) << pdo.index << endl; |
192 |
215 |
193 cout << " 0x" |
216 cout << " 0x" |
194 << hex << setfill('0') |
217 << hex << setfill('0') |
195 << setw(4) << sdo.index << ":" |
218 << setw(4) << sdo.index << ":" |
196 << setw(2) << (unsigned int) sdo.subindex |
219 << setw(2) << (unsigned int) sdo.subindex |
197 << ", " << dec << sdo.size << " byte: " << hex; |
220 << ", " << dec << sdo.size << " byte" << endl; |
198 |
221 |
199 switch (sdo.size) { |
222 cout << " " << hex; |
200 case 1: |
223 for (i = 0; i < min((uint32_t) sdo.size, |
201 cout << "0x" << setw(2) |
224 (uint32_t) EC_MAX_SDO_DATA_SIZE); i++) { |
202 << (unsigned int) *(uint8_t *) &sdo.data; |
225 cout << setw(2) << (unsigned int) sdo.data[i]; |
203 break; |
226 if ((i + 1) % 16 == 0 && i < sdo.size - 1) { |
204 case 2: |
227 cout << endl << " "; |
205 cout << "0x" << setw(4) |
228 } else { |
206 << le16_to_cpup(&sdo.data); |
229 cout << " "; |
207 break; |
230 } |
208 case 4: |
|
209 cout << "0x" << setw(8) |
|
210 << le32_to_cpup(&sdo.data); |
|
211 break; |
|
212 default: |
|
213 cout << "???"; |
|
214 } |
231 } |
215 |
232 |
216 cout << endl; |
233 cout << endl; |
|
234 if (sdo.size > EC_MAX_SDO_DATA_SIZE) { |
|
235 cout << " ..." << endl; |
|
236 } |
217 } |
237 } |
218 } else { |
238 } else { |
219 cout << " None." << endl; |
239 cout << " None." << endl; |
220 } |
240 } |
221 |
241 |