Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
flockwave-gps / gps / crc.py
Size: Mime:
"""CRC code calculation routines."""

__all__ = ("crc24q",)


_crc24q_table = [
    0x000000,
    0x864CFB,
    0x8AD50D,
    0x0C99F6,
    0x93E6E1,
    0x15AA1A,
    0x1933EC,
    0x9F7F17,  # noqa
    0xA18139,
    0x27CDC2,
    0x2B5434,
    0xAD18CF,
    0x3267D8,
    0xB42B23,
    0xB8B2D5,
    0x3EFE2E,  # noqa
    0xC54E89,
    0x430272,
    0x4F9B84,
    0xC9D77F,
    0x56A868,
    0xD0E493,
    0xDC7D65,
    0x5A319E,  # noqa
    0x64CFB0,
    0xE2834B,
    0xEE1ABD,
    0x685646,
    0xF72951,
    0x7165AA,
    0x7DFC5C,
    0xFBB0A7,  # noqa
    0x0CD1E9,
    0x8A9D12,
    0x8604E4,
    0x00481F,
    0x9F3708,
    0x197BF3,
    0x15E205,
    0x93AEFE,  # noqa
    0xAD50D0,
    0x2B1C2B,
    0x2785DD,
    0xA1C926,
    0x3EB631,
    0xB8FACA,
    0xB4633C,
    0x322FC7,  # noqa
    0xC99F60,
    0x4FD39B,
    0x434A6D,
    0xC50696,
    0x5A7981,
    0xDC357A,
    0xD0AC8C,
    0x56E077,  # noqa
    0x681E59,
    0xEE52A2,
    0xE2CB54,
    0x6487AF,
    0xFBF8B8,
    0x7DB443,
    0x712DB5,
    0xF7614E,  # noqa
    0x19A3D2,
    0x9FEF29,
    0x9376DF,
    0x153A24,
    0x8A4533,
    0x0C09C8,
    0x00903E,
    0x86DCC5,  # noqa
    0xB822EB,
    0x3E6E10,
    0x32F7E6,
    0xB4BB1D,
    0x2BC40A,
    0xAD88F1,
    0xA11107,
    0x275DFC,  # noqa
    0xDCED5B,
    0x5AA1A0,
    0x563856,
    0xD074AD,
    0x4F0BBA,
    0xC94741,
    0xC5DEB7,
    0x43924C,  # noqa
    0x7D6C62,
    0xFB2099,
    0xF7B96F,
    0x71F594,
    0xEE8A83,
    0x68C678,
    0x645F8E,
    0xE21375,  # noqa
    0x15723B,
    0x933EC0,
    0x9FA736,
    0x19EBCD,
    0x8694DA,
    0x00D821,
    0x0C41D7,
    0x8A0D2C,  # noqa
    0xB4F302,
    0x32BFF9,
    0x3E260F,
    0xB86AF4,
    0x2715E3,
    0xA15918,
    0xADC0EE,
    0x2B8C15,  # noqa
    0xD03CB2,
    0x567049,
    0x5AE9BF,
    0xDCA544,
    0x43DA53,
    0xC596A8,
    0xC90F5E,
    0x4F43A5,  # noqa
    0x71BD8B,
    0xF7F170,
    0xFB6886,
    0x7D247D,
    0xE25B6A,
    0x641791,
    0x688E67,
    0xEEC29C,  # noqa
    0x3347A4,
    0xB50B5F,
    0xB992A9,
    0x3FDE52,
    0xA0A145,
    0x26EDBE,
    0x2A7448,
    0xAC38B3,  # noqa
    0x92C69D,
    0x148A66,
    0x181390,
    0x9E5F6B,
    0x01207C,
    0x876C87,
    0x8BF571,
    0x0DB98A,  # noqa
    0xF6092D,
    0x7045D6,
    0x7CDC20,
    0xFA90DB,
    0x65EFCC,
    0xE3A337,
    0xEF3AC1,
    0x69763A,  # noqa
    0x578814,
    0xD1C4EF,
    0xDD5D19,
    0x5B11E2,
    0xC46EF5,
    0x42220E,
    0x4EBBF8,
    0xC8F703,  # noqa
    0x3F964D,
    0xB9DAB6,
    0xB54340,
    0x330FBB,
    0xAC70AC,
    0x2A3C57,
    0x26A5A1,
    0xA0E95A,  # noqa
    0x9E1774,
    0x185B8F,
    0x14C279,
    0x928E82,
    0x0DF195,
    0x8BBD6E,
    0x872498,
    0x016863,  # noqa
    0xFAD8C4,
    0x7C943F,
    0x700DC9,
    0xF64132,
    0x693E25,
    0xEF72DE,
    0xE3EB28,
    0x65A7D3,  # noqa
    0x5B59FD,
    0xDD1506,
    0xD18CF0,
    0x57C00B,
    0xC8BF1C,
    0x4EF3E7,
    0x426A11,
    0xC426EA,  # noqa
    0x2AE476,
    0xACA88D,
    0xA0317B,
    0x267D80,
    0xB90297,
    0x3F4E6C,
    0x33D79A,
    0xB59B61,  # noqa
    0x8B654F,
    0x0D29B4,
    0x01B042,
    0x87FCB9,
    0x1883AE,
    0x9ECF55,
    0x9256A3,
    0x141A58,  # noqa
    0xEFAAFF,
    0x69E604,
    0x657FF2,
    0xE33309,
    0x7C4C1E,
    0xFA00E5,
    0xF69913,
    0x70D5E8,  # noqa
    0x4E2BC6,
    0xC8673D,
    0xC4FECB,
    0x42B230,
    0xDDCD27,
    0x5B81DC,
    0x57182A,
    0xD154D1,  # noqa
    0x26359F,
    0xA07964,
    0xACE092,
    0x2AAC69,
    0xB5D37E,
    0x339F85,
    0x3F0673,
    0xB94A88,  # noqa
    0x87B4A6,
    0x01F85D,
    0x0D61AB,
    0x8B2D50,
    0x145247,
    0x921EBC,
    0x9E874A,
    0x18CBB1,  # noqa
    0xE37B16,
    0x6537ED,
    0x69AE1B,
    0xEFE2E0,
    0x709DF7,
    0xF6D10C,
    0xFA48FA,
    0x7C0401,  # noqa
    0x42FA2F,
    0xC4B6D4,
    0xC82F22,
    0x4E63D9,
    0xD11CCE,
    0x575035,
    0x5BC9C3,
    0xDD8538,  # noqa
]


def crc24q(array: bytes, init: int = 0) -> int:
    """Calculates the CRC24Q checksum of the given byte array.

    Parameters:
        array: the byte array to run the calculation on
        init: initial value of the checksum; helpful for incremental calculations

    Returns:
        the CRC24Q checksum of the byte array
    """
    global _crc24q_table
    crc = init
    for byte in array:
        crc = ((crc << 8) & 0xFFFFFF) ^ _crc24q_table[(crc >> 16) ^ byte]
    return crc