@@ -2,7 +2,6 @@ package can
2
2
3
3
import (
4
4
"encoding/hex"
5
- "fmt"
6
5
"math/big"
7
6
)
8
7
@@ -265,51 +264,22 @@ func (p *Payload) SetBit(i uint16, value bool) {
265
264
// return packed
266
265
// }
267
266
267
+ // PackLittleEndian packs the byte array into a continuous little endian big.Int
268
268
func (p * Payload ) PackLittleEndian () * big.Int {
269
269
if p .PackedLittleEndian == nil {
270
- // Initialize a big.Int called packed
271
- //var packed, _ = new(big.Int).SetString(strings.Repeat("00000000", int(p.Length)), 2)
272
- packed , _ := new (big.Int ).SetString (CanBitsLittleEndian (p .Data ), 2 )
273
-
274
- // for i := 0; i < int(p.Length); i++ {
275
- // //packed |= uint8(packed >> (i * 8))
276
- // fmt.Println(fmt.Sprintf("%08b", p.Data[i]))
277
- // }
278
- //packed.SetBytes(p.Data)
270
+ packed := new (big.Int ).SetBytes (reverse (p .Data ))
279
271
p .PackedLittleEndian = packed
280
272
}
281
273
return new (big.Int ).Set (p .PackedLittleEndian )
282
274
}
283
275
284
- // CanBitsLittleEndian creates the zig zag pattern of bits feeding into a can.Data frame
285
- func CanBitsLittleEndian (bytes []byte ) string {
286
- var bits string
287
- for _ , n := range bytes {
288
- bn := fmt .Sprintf ("%08b" , n )
289
-
290
- // Need to reverse the binary strings because of the definition of bit order
291
- bits += reverse (bn )
292
- }
293
- return reverse (bits )
294
- }
295
-
296
- // CanBitsBigEndian creates the zig zag pattern of bits feeding into a can.Data frame
297
- func CanBitsBigEndian (bytes []byte ) string {
298
- var bits string
299
- for _ , n := range bytes {
300
- bn := fmt .Sprintf ("%08b" , n )
301
- bits += bn
302
- }
303
- return bits
304
- }
305
-
306
- // function to reverse strings
307
- func reverse (s string ) string {
308
- runes := []rune (s )
309
- for i , j := 0 , len (runes )- 1 ; i < j ; i , j = i + 1 , j - 1 {
310
- runes [i ], runes [j ] = runes [j ], runes [i ]
276
+ // reverse byte array for little endian signals
277
+ func reverse (data []byte ) []byte {
278
+ reversedArray := make ([]byte , len (data ))
279
+ for i , j := 0 , len (data )- 1 ; i < j ; i , j = i + 1 , j - 1 {
280
+ reversedArray [i ], reversedArray [j ] = data [j ], data [i ]
311
281
}
312
- return string ( runes )
282
+ return reversedArray
313
283
}
314
284
315
285
// // PackBigEndian packs the data into a contiguous uint64 value for big-endian signals.
@@ -326,9 +296,10 @@ func reverse(s string) string {
326
296
// return packed
327
297
// }
328
298
299
+ // PackBigEndian packs the byte array into a continuous big endian big.Int
329
300
func (p * Payload ) PackBigEndian () * big.Int {
330
301
if p .PackedBigEndian == nil {
331
- var packed , _ = new (big.Int ).SetString ( CanBitsBigEndian ( p .Data ), 2 )
302
+ var packed = new (big.Int ).SetBytes ( p .Data )
332
303
p .PackedBigEndian = packed
333
304
}
334
305
return new (big.Int ).Set (p .PackedBigEndian )
0 commit comments