diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2015-10-01 15:04:06 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2015-10-01 15:04:06 +1300 |
commit | c2ecf80df96f9782ef716d01678ed33f886a6480 (patch) | |
tree | fd3debdb195edd49e91072e668371254ff145ff6 | |
parent | e84f02c3bffda311e86fab584d7c40702b5223be (diff) | |
download | trackermap-server-c2ecf80df96f9782ef716d01678ed33f886a6480.tar.gz trackermap-server-c2ecf80df96f9782ef716d01678ed33f886a6480.tar.bz2 trackermap-server-c2ecf80df96f9782ef716d01678ed33f886a6480.zip |
Fix Luhn checksum calculation
-rw-r--r-- | src/org/traccar/helper/Crc.java | 2 | ||||
-rw-r--r-- | src/org/traccar/protocol/MeiligaoProtocolDecoder.java | 5 | ||||
-rw-r--r-- | test/org/traccar/helper/CrcTest.java | 1 |
3 files changed, 3 insertions, 5 deletions
diff --git a/src/org/traccar/helper/Crc.java b/src/org/traccar/helper/Crc.java index 418ec3132..522a25403 100644 --- a/src/org/traccar/helper/Crc.java +++ b/src/org/traccar/helper/Crc.java @@ -172,7 +172,7 @@ public class Crc { remain /= 10; } - return 10 - (checksum % 10); + return (10 - (checksum % 10)) % 10; } } diff --git a/src/org/traccar/protocol/MeiligaoProtocolDecoder.java b/src/org/traccar/protocol/MeiligaoProtocolDecoder.java index c660107ca..faf3a5baf 100644 --- a/src/org/traccar/protocol/MeiligaoProtocolDecoder.java +++ b/src/org/traccar/protocol/MeiligaoProtocolDecoder.java @@ -98,14 +98,11 @@ public class MeiligaoProtocolDecoder extends BaseProtocolDecoder { } if (id.length() == 14) { + // Try to recreate full IMEI number // Sometimes first digit is cut, so this won't work if (identify(id + Crc.luhnChecksum(Long.valueOf(id)), channel, null, false)) { return true; } - } else if (id.length() > 15) { - if (identify(id.substring(0, 15), channel, null, false)) { - return true; - } } return identify(id, channel); diff --git a/test/org/traccar/helper/CrcTest.java b/test/org/traccar/helper/CrcTest.java index 46e7dfc79..7bd4a0482 100644 --- a/test/org/traccar/helper/CrcTest.java +++ b/test/org/traccar/helper/CrcTest.java @@ -9,6 +9,7 @@ public class CrcTest { public void testLuhnChecksum() { Assert.assertEquals(7, Crc.luhnChecksum(12345678901234L)); + Assert.assertEquals(0, Crc.luhnChecksum(63070019470771L)); } |