summaryrefslogtreecommitdiffstats
path: root/low-can-binding/utils
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2019-12-04 17:26:58 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2020-01-09 16:25:36 +0100
commit0ff6413b6dc42849f87ce8caa17a91f44ede2f93 (patch)
tree4ad97df3b971fe8d7d6a3a07f4563ec80d2c03fa /low-can-binding/utils
parent7f905a75de0600ef0c2316db0f3deaa33aabd9e7 (diff)
decoder: rework how to swap frame layout.
This also change the bit_position to retrieve the bit word starting from the left or the right of the frame depending on the endianness of the frame layout. Change-Id: I28658e9d46bd35d8ecabeece317331832229384a Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'low-can-binding/utils')
-rw-r--r--low-can-binding/utils/converter.cpp20
-rw-r--r--low-can-binding/utils/converter.hpp3
2 files changed, 14 insertions, 9 deletions
diff --git a/low-can-binding/utils/converter.cpp b/low-can-binding/utils/converter.cpp
index 0a09125f..6392fbdf 100644
--- a/low-can-binding/utils/converter.cpp
+++ b/low-can-binding/utils/converter.cpp
@@ -65,20 +65,24 @@ void converter_t::signal_to_bits_bytes(unsigned int bit_position, unsigned int b
* @param bit_size Size of the data.
* @return uint32_t New bit position.
*/
-uint32_t converter_t::bit_position_swap(uint32_t bit_position,uint32_t bit_size)
+uint32_t converter_t::bit_position_swap(unsigned int msg_length, unsigned int bit_position, unsigned int bit_size)
{
- uint32_t start_byte_position = (uint32_t)(bit_position/8);
- uint32_t bit_size_rest = bit_size;
+ return msg_length - bit_position - bit_size;
+ /*
+ unsigned int start_byte_position = (unsigned int)(bit_position/8);
+ unsigned int bit_size_rest = bit_size;
- if((int)(bit_size-(8 + start_byte_position*8-bit_position%8))>0)
+ if((int)(bit_size-(8 + start_byte_position * 8 - bit_position % 8)) > 0)
{
AFB_ERROR("Error: bit_position and bit_size getting out of range");
return bit_position;
}
- if(bit_size<=8 && ((bit_position+bit_size)%8==bit_size || (bit_position+bit_size)%8==0))
+ if(bit_size <= 8 &&
+ ((bit_position+bit_size) % 8 == bit_size ||
+ (bit_position+bit_size)%8==0))
{
- return (uint32_t)(start_byte_position*8 + (8-bit_size));
+ return (unsigned int)(start_byte_position*8 + (8-bit_size));
}
else
{
@@ -88,7 +92,7 @@ uint32_t converter_t::bit_position_swap(uint32_t bit_position,uint32_t bit_size)
start_byte_position--;
bit_position = start_byte_position*8;
} while (bit_size_rest>8);
- return (uint32_t)(start_byte_position*8 + (8-bit_size_rest));
+ return (unsigned int)(start_byte_position*8 + (8-bit_size_rest));
}
-
+ */
}
diff --git a/low-can-binding/utils/converter.hpp b/low-can-binding/utils/converter.hpp
index 32c898f1..23f8ae77 100644
--- a/low-can-binding/utils/converter.hpp
+++ b/low-can-binding/utils/converter.hpp
@@ -29,6 +29,7 @@ class converter_t
int &new_end_byte,
uint8_t &new_start_bit,
uint8_t &new_end_bit);
- static uint32_t bit_position_swap(unsigned int bit_position,
+ static uint32_t bit_position_swap(unsigned int msg_length,
+ unsigned int bit_position,
unsigned int bit_size);
};
1'>301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395