34 #include "CommandRegRead.h" |
34 #include "CommandRegRead.h" |
35 |
35 |
36 /*****************************************************************************/ |
36 /*****************************************************************************/ |
37 |
37 |
38 CommandRegRead::CommandRegRead(): |
38 CommandRegRead::CommandRegRead(): |
39 Command("reg_read", "Output a slave's register contents.") |
39 CommandReg("reg_read", "Output a slave's register contents.") |
40 { |
40 { |
41 } |
41 } |
42 |
42 |
43 /*****************************************************************************/ |
43 /*****************************************************************************/ |
44 |
44 |
61 << " can be omitted), if a selected data type" << endl |
61 << " can be omitted), if a selected data type" << endl |
62 << " implies a length." << endl |
62 << " implies a length." << endl |
63 << endl |
63 << endl |
64 << "These are the valid data types:" << endl |
64 << "These are the valid data types:" << endl |
65 << " int8, int16, int32, int64, uint8, uint16, uint32," << endl |
65 << " int8, int16, int32, int64, uint8, uint16, uint32," << endl |
66 << " uint64, string, octet_string, raw." << endl |
66 << " uint64, string, raw." << endl |
67 << endl |
67 << endl |
68 << "Command-specific options:" << endl |
68 << "Command-specific options:" << endl |
69 << " --alias -a <alias>" << endl |
69 << " --alias -a <alias>" << endl |
70 << " --position -p <pos> Slave selection. See the help of" << endl |
70 << " --position -p <pos> Slave selection. See the help of" << endl |
71 << " the 'slaves' command." << endl |
71 << " the 'slaves' command." << endl |
157 delete [] data.data; |
157 delete [] data.data; |
158 throw e; |
158 throw e; |
159 } |
159 } |
160 |
160 |
161 cout << setfill('0'); |
161 cout << setfill('0'); |
162 if (!dataType || |
162 if (!dataType || dataType->name == "string") { |
163 dataType->name == "string" || |
|
164 dataType->name == "octet_string") { |
|
165 uint16_t i; |
163 uint16_t i; |
166 for (i = 0; i < data.length; i++) { |
164 for (i = 0; i < data.length; i++) { |
167 cout << data.data[i]; |
165 cout << data.data[i]; |
168 } |
166 } |
|
167 if (dataType) |
|
168 cout << endl; |
169 } else if (dataType->name == "int8") { |
169 } else if (dataType->name == "int8") { |
170 int sval = *(int8_t *) data.data; |
170 int sval = *(int8_t *) data.data; |
171 cout << sval << " 0x" << hex << setw(2) << sval << endl; |
171 cout << sval << " 0x" << hex << setw(2) << sval << endl; |
172 } else if (dataType->name == "int16") { |
172 } else if (dataType->name == "int16") { |
173 int sval = le16_to_cpup(data.data); |
173 int sval = le16_to_cpup(data.data); |
188 unsigned int uval = le32_to_cpup(data.data); |
188 unsigned int uval = le32_to_cpup(data.data); |
189 cout << uval << " 0x" << hex << setw(8) << uval << endl; |
189 cout << uval << " 0x" << hex << setw(8) << uval << endl; |
190 } else if (dataType->name == "uint64") { |
190 } else if (dataType->name == "uint64") { |
191 long long unsigned int uval = le32_to_cpup(data.data); |
191 long long unsigned int uval = le32_to_cpup(data.data); |
192 cout << uval << " 0x" << hex << setw(8) << uval << endl; |
192 cout << uval << " 0x" << hex << setw(8) << uval << endl; |
193 } else { |
193 } else { // raw |
194 uint8_t *d = data.data; |
194 uint8_t *d = data.data; |
195 unsigned int size = data.length; |
195 unsigned int size = data.length; |
196 |
196 |
197 cout << hex << setfill('0'); |
197 cout << hex << setfill('0'); |
198 while (size--) { |
198 while (size--) { |