1 /***************************************************************************** |
1 /***************************************************************************** |
2 * |
2 * |
3 * $Id: DataTypeHandler.cpp,v 9a136c0c30a2 2010/04/15 10:33:48 fp $ |
3 * $Id$ |
4 * |
4 * |
5 * Copyright (C) 2006-2009 Florian Pose, Ingenieurgemeinschaft IgH |
5 * Copyright (C) 2006-2009 Florian Pose, Ingenieurgemeinschaft IgH |
6 * |
6 * |
7 * This file is part of the IgH EtherCAT Master. |
7 * This file is part of the IgH EtherCAT Master. |
8 * |
8 * |
376 break; |
376 break; |
377 case 0xfffb: // sm8 |
377 case 0xfffb: // sm8 |
378 { |
378 { |
379 int8_t val = *(uint8_t *) data; |
379 int8_t val = *(uint8_t *) data; |
380 int8_t smval = val < 0 ? (val & 0x7f) * -1 : val; |
380 int8_t smval = val < 0 ? (val & 0x7f) * -1 : val; |
381 |
381 |
382 o << "0x" << hex << setw(2) << (int) val |
382 o << "0x" << hex << setw(2) << (int) val |
383 << " " << dec << (int) smval << endl; |
383 << " " << dec << (int) smval << endl; |
384 } |
384 } |
385 break; |
385 break; |
386 case 0xfffc: // sm16 |
386 case 0xfffc: // sm16 |
387 { |
387 { |
388 int16_t val = le16_to_cpup(data); |
388 int16_t val = le16_to_cpup(data); |
389 int16_t smval = val < 0 ? (val & 0x7fff) * -1 : val; |
389 int16_t smval = val < 0 ? (val & 0x7fff) * -1 : val; |
390 |
390 |
391 o << "0x" << hex << setw(4) << val |
391 o << "0x" << hex << setw(4) << val |
392 << " " << dec << smval << endl; |
392 << " " << dec << smval << endl; |
393 } |
393 } |
394 break; |
394 break; |
395 case 0xfffd: // sm32 |
395 case 0xfffd: // sm32 |
396 { |
396 { |
397 int32_t val = le32_to_cpup(data); |
397 int32_t val = le32_to_cpup(data); |
398 int32_t smval = val < 0 ? (val & 0x7fffffffUL) * -1 : val; |
398 int32_t smval = val < 0 ? (val & 0x7fffffffUL) * -1 : val; |
399 |
399 |
400 o << "0x" << hex << setw(8) << val |
400 o << "0x" << hex << setw(8) << val |
401 << " " << dec << smval << endl; |
401 << " " << dec << smval << endl; |
402 } |
402 } |
403 break; |
403 break; |
404 case 0xfffe: // sm64 |
404 case 0xfffe: // sm64 |
405 { |
405 { |
406 int64_t val = le64_to_cpup(data); |
406 int64_t val = le64_to_cpup(data); |
407 int64_t smval = |
407 int64_t smval = |
408 val < 0 ? (val & 0x7fffffffffffffffULL) * -1 : val; |
408 val < 0 ? (val & 0x7fffffffffffffffULL) * -1 : val; |
409 |
409 |
410 o << "0x" << hex << setw(16) << val |
410 o << "0x" << hex << setw(16) << val |
411 << " " << dec << smval << endl; |
411 << " " << dec << smval << endl; |
412 } |
412 } |
413 break; |
413 break; |
414 |
414 |