83 |
83 |
84 void CommandUpload::execute(MasterDevice &m, const StringVector &args) |
84 void CommandUpload::execute(MasterDevice &m, const StringVector &args) |
85 { |
85 { |
86 SlaveList slaves; |
86 SlaveList slaves; |
87 stringstream err, strIndex, strSubIndex; |
87 stringstream err, strIndex, strSubIndex; |
88 int sval; |
|
89 ec_ioctl_slave_sdo_upload_t data; |
88 ec_ioctl_slave_sdo_upload_t data; |
|
89 const DataType *dataType = NULL; |
90 unsigned int uval; |
90 unsigned int uval; |
91 const DataType *dataType = NULL; |
|
92 |
91 |
93 if (args.size() != 2) { |
92 if (args.size() != 2) { |
94 err << "'" << getName() << "' takes two arguments!"; |
93 err << "'" << getName() << "' takes two arguments!"; |
95 throwInvalidUsageException(err); |
94 throwInvalidUsageException(err); |
96 } |
95 } |
176 } |
175 } |
177 |
176 |
178 cout << setfill('0'); |
177 cout << setfill('0'); |
179 switch (dataType->coeCode) { |
178 switch (dataType->coeCode) { |
180 case 0x0002: // int8 |
179 case 0x0002: // int8 |
181 sval = *(int8_t *) data.target; |
180 { |
182 cout << sval << " 0x" << hex << setw(2) << sval << endl; |
181 int val = (int) *data.target; |
|
182 cout << "0x" << hex << setw(2) << val |
|
183 << " " << dec << val << endl; |
|
184 } |
183 break; |
185 break; |
184 case 0x0003: // int16 |
186 case 0x0003: // int16 |
185 sval = le16_to_cpup(data.target); |
187 { |
186 cout << sval << " 0x" << hex << setw(4) << sval << endl; |
188 int16_t val = le16_to_cpup(data.target); |
|
189 cout << "0x" << hex << setw(4) << val |
|
190 << " " << dec << val << endl; |
|
191 } |
187 break; |
192 break; |
188 case 0x0004: // int32 |
193 case 0x0004: // int32 |
189 sval = le32_to_cpup(data.target); |
194 { |
190 cout << sval << " 0x" << hex << setw(8) << sval << endl; |
195 int32_t val = le32_to_cpup(data.target); |
|
196 cout << "0x" << hex << setw(8) << val |
|
197 << " " << dec << val << endl; |
|
198 } |
191 break; |
199 break; |
192 case 0x0005: // uint8 |
200 case 0x0005: // uint8 |
193 uval = (unsigned int) *(uint8_t *) data.target; |
201 { |
194 cout << uval << " 0x" << hex << setw(2) << uval << endl; |
202 unsigned int val = (unsigned int) *data.target; |
|
203 cout << "0x" << hex << setw(2) << val |
|
204 << " " << dec << val << endl; |
|
205 } |
195 break; |
206 break; |
196 case 0x0006: // uint16 |
207 case 0x0006: // uint16 |
197 uval = le16_to_cpup(data.target); |
208 { |
198 cout << uval << " 0x" << hex << setw(4) << uval << endl; |
209 uint16_t val = le16_to_cpup(data.target); |
|
210 cout << "0x" << hex << setw(4) << val |
|
211 << " " << dec << val << endl; |
|
212 } |
199 break; |
213 break; |
200 case 0x0007: // uint32 |
214 case 0x0007: // uint32 |
201 uval = le32_to_cpup(data.target); |
215 { |
202 cout << uval << " 0x" << hex << setw(8) << uval << endl; |
216 uint32_t val = le32_to_cpup(data.target); |
|
217 cout << "0x" << hex << setw(8) << val |
|
218 << " " << dec << val << endl; |
|
219 } |
203 break; |
220 break; |
204 case 0x0009: // string |
221 case 0x0009: // string |
205 cout << string((const char *) data.target, data.data_size) |
222 cout << string((const char *) data.target, data.data_size) |
206 << endl; |
223 << endl; |
207 break; |
224 break; |