Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds flexible data rate CAN payload to account for 64 byte CANFD and > 64 byte ethernet payloads #21

Open
wants to merge 38 commits into
base: master
Choose a base branch
from
Open
Changes from 6 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
4e93a88
Support canfd (#1)
jshiv Mar 1, 2021
047b82f
Assign byte array directly to big.Int for big and little endian signa…
jshiv Mar 2, 2021
9986b66
Removed payload.Length property and calculate length with len(payload…
jshiv Mar 2, 2021
b87d69e
Added Decode and DecodePayload signal methods for decoding without sh…
Mar 22, 2021
592beb4
Added unit tests for Decode() to signal_test.go
Mar 23, 2021
fd0c28c
Added unit tests to test Decode() and DecodePayload()
Mar 23, 2021
f845a4a
Added unit tests for UnmarshalPhysical() and UnmarshalPhysicalPayload()
Mar 24, 2021
51c1b50
Merge pull request #4 from jshiv/fix/do_not_shift_ranges_signal_decode
naveenv92 Mar 24, 2021
36ce676
Added message.Decode method
Mar 25, 2021
cdee1a2
Updated message.Decode to use signal.Decode internally
Mar 25, 2021
6e5dbc8
Merge pull request #5 from jshiv/feature/message_decode
naveenv92 Mar 26, 2021
cddec59
Updated README with example of decoding and dbc file with >8 byte mes…
naveenv92 Apr 1, 2021
ec1debd
Merge remote-tracking branch 'upstream/master'
Apr 1, 2021
a2d4186
Merged with upstream/master
Apr 1, 2021
ef9ceb3
Removed example_payload.dbc and added a string dbc to the example in …
Apr 1, 2021
0248a67
Shortened DBC in the README and fixed linting issues
Apr 1, 2021
f697a62
Removed global for linter
Apr 1, 2021
16b04f8
Fixed linting issues - passes all golint tests locally
Apr 1, 2021
0ec95e8
go mod tidy
Apr 1, 2021
b67ca94
Updated generated go code from new Message struct format to avoid mal…
Apr 1, 2021
623b114
Merge branch 'master' of github.com:jshiv/can-go
Apr 1, 2021
194a970
init
pvora27 Jul 30, 2021
eb9bd02
add long name metadata
pvora27 Jul 30, 2021
2514e7c
Merge pull request #7 from jshiv/support_long_signal_names
naveenv92 Aug 2, 2021
70928fe
Added multiplexing
Jul 22, 2022
ba99d84
Updated README
Jul 22, 2022
24b187a
Updated README
Jul 22, 2022
f5e2511
Fixed reverse function
Aug 2, 2022
2376779
Merge remote-tracking branch 'upstream/master'
Aug 2, 2022
d599b93
Removed copy from reverse function
Aug 2, 2022
f5d4371
Cleaned up code
Aug 2, 2022
2a78a25
Reverted to len(data) from len(reversedArray)
Aug 2, 2022
68bf611
Changed reverse to append logic and updated unit test
Aug 2, 2022
615c5a9
Merge pull request #9 from jshiv/fix/change_reverse
naveenv92 Aug 2, 2022
a76019b
Merge branch 'master' of github.com:jshiv/can-go
Aug 3, 2022
4d6ffd9
Merge pull request #8 from jshiv/feature/add_multiplex_decoding
naveenv92 Aug 3, 2022
7487488
Merge branch 'einride:master' into master
jshiv Nov 18, 2022
566b73c
Fixed broken UnmarshalValueDescriptionPayload (#10)
jshiv Nov 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions payload.go
Original file line number Diff line number Diff line change
@@ -251,10 +251,9 @@ func (p *Payload) PackLittleEndian() *big.Int {

// Reverse byte array for little endian signals.
func reverse(data []byte) []byte {
reversedArray := make([]byte, len(data))
copy(reversedArray, data)
for i, j := 0, len(reversedArray)-1; i < j; i, j = i+1, j-1 {
reversedArray[i], reversedArray[j] = reversedArray[j], reversedArray[i]
reversedArray := make([]byte, 0, len(data))
for i := len(data) - 1; i >= 0; i-- {
reversedArray = append(reversedArray, data[i])
}
return reversedArray
}
19 changes: 19 additions & 0 deletions payload_test.go
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@ package can

import (
"fmt"
"reflect"
"testing"
)

@@ -66,6 +67,24 @@ func TestSignedBigEndian(t *testing.T) {
fmt.Println(payload.SignedBitsBigEndian(signal.start, signal.length))
}

func TestReverse(t *testing.T) {
payloadHexes := []string{
"17399b6c89d22805003f", // Even Length
"17399b6c89d22805003f17399b6c89d22805003f17399b6c89d22805003f", // Long Even
"17399b6c89d2280500", // Odd Length
"17399b6c89d228050017399b6c89d228050017399b6c89d2280500", // Long Odd
}

for _, hex := range payloadHexes {
p, _ := PayloadFromHex(hex)

twiceReversed := reverse(reverse(p.Data))
if !reflect.DeepEqual(p.Data, twiceReversed) {
t.Errorf("Reversed slices are not equal, input: %v, output: %v", p.Data, twiceReversed)
}
}
}

func Benchmark4BytesPayload_PackLittleEndian(b *testing.B) {
data := []byte{0x40, 0x23, 0x01, 0x12}
payload := Payload{Data: data}