crc.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #
  2. # Simple PWM controller
  3. # Remote control tool
  4. #
  5. # Copyright (c) 2018-2021 Michael Buesch <m@bues.ch>
  6. #
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License along
  18. # with this program; if not, write to the Free Software Foundation, Inc.,
  19. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  20. #
  21. __all__ = [
  22. "crc8",
  23. ]
  24. from libsimplepwm.util import *
  25. def crc8(data):
  26. P = 0x07
  27. crc = 0
  28. for d in data:
  29. tmp = crc ^ d
  30. for i in range(8):
  31. if tmp & 0x80:
  32. tmp = ((tmp << 1) & 0xFF) ^ P
  33. else:
  34. tmp = (tmp << 1) & 0xFF
  35. crc = tmp
  36. return crc ^ 0xFF
  37. # vim: ts=4 sw=4 expandtab