my modification for kl25z
Fork of SDFileSystem by
Embed:
(wiki syntax)
Show/hide line numbers
SDCRC.cpp
00001 /* SD/MMC File System Library 00002 * Copyright (c) 2016 Neil Thiessen 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 #include "SDCRC.h" 00018 00019 namespace SDCRC 00020 { 00021 00022 namespace 00023 { 00024 const char m_Crc7Table[] = { 00025 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F, 00026 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77, 00027 0x19, 0x10, 0x0B, 0x02, 0x3D, 0x34, 0x2F, 0x26, 00028 0x51, 0x58, 0x43, 0x4A, 0x75, 0x7C, 0x67, 0x6E, 00029 0x32, 0x3B, 0x20, 0x29, 0x16, 0x1F, 0x04, 0x0D, 00030 0x7A, 0x73, 0x68, 0x61, 0x5E, 0x57, 0x4C, 0x45, 00031 0x2B, 0x22, 0x39, 0x30, 0x0F, 0x06, 0x1D, 0x14, 00032 0x63, 0x6A, 0x71, 0x78, 0x47, 0x4E, 0x55, 0x5C, 00033 0x64, 0x6D, 0x76, 0x7F, 0x40, 0x49, 0x52, 0x5B, 00034 0x2C, 0x25, 0x3E, 0x37, 0x08, 0x01, 0x1A, 0x13, 00035 0x7D, 0x74, 0x6F, 0x66, 0x59, 0x50, 0x4B, 0x42, 00036 0x35, 0x3C, 0x27, 0x2E, 0x11, 0x18, 0x03, 0x0A, 00037 0x56, 0x5F, 0x44, 0x4D, 0x72, 0x7B, 0x60, 0x69, 00038 0x1E, 0x17, 0x0C, 0x05, 0x3A, 0x33, 0x28, 0x21, 00039 0x4F, 0x46, 0x5D, 0x54, 0x6B, 0x62, 0x79, 0x70, 00040 0x07, 0x0E, 0x15, 0x1C, 0x23, 0x2A, 0x31, 0x38, 00041 0x41, 0x48, 0x53, 0x5A, 0x65, 0x6C, 0x77, 0x7E, 00042 0x09, 0x00, 0x1B, 0x12, 0x2D, 0x24, 0x3F, 0x36, 00043 0x58, 0x51, 0x4A, 0x43, 0x7C, 0x75, 0x6E, 0x67, 00044 0x10, 0x19, 0x02, 0x0B, 0x34, 0x3D, 0x26, 0x2F, 00045 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C, 00046 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04, 00047 0x6A, 0x63, 0x78, 0x71, 0x4E, 0x47, 0x5C, 0x55, 00048 0x22, 0x2B, 0x30, 0x39, 0x06, 0x0F, 0x14, 0x1D, 00049 0x25, 0x2C, 0x37, 0x3E, 0x01, 0x08, 0x13, 0x1A, 00050 0x6D, 0x64, 0x7F, 0x76, 0x49, 0x40, 0x5B, 0x52, 00051 0x3C, 0x35, 0x2E, 0x27, 0x18, 0x11, 0x0A, 0x03, 00052 0x74, 0x7D, 0x66, 0x6F, 0x50, 0x59, 0x42, 0x4B, 00053 0x17, 0x1E, 0x05, 0x0C, 0x33, 0x3A, 0x21, 0x28, 00054 0x5F, 0x56, 0x4D, 0x44, 0x7B, 0x72, 0x69, 0x60, 00055 0x0E, 0x07, 0x1C, 0x15, 0x2A, 0x23, 0x38, 0x31, 00056 0x46, 0x4F, 0x54, 0x5D, 0x62, 0x6B, 0x70, 0x79 00057 }; 00058 00059 const unsigned short m_Crc16Table[256] = { 00060 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 00061 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 00062 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 00063 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 00064 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 00065 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 00066 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 00067 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 00068 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 00069 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 00070 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 00071 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 00072 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 00073 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 00074 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 00075 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 00076 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 00077 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 00078 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 00079 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 00080 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 00081 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 00082 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 00083 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 00084 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 00085 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 00086 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 00087 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 00088 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 00089 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 00090 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 00091 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 00092 }; 00093 } 00094 00095 char crc7(const char* data, int length) 00096 { 00097 //Calculate the CRC7 checksum for the specified data block 00098 char crc = 0; 00099 for (int i = 0; i < length; i++) { 00100 crc = m_Crc7Table[(crc << 1) ^ data[i]]; 00101 } 00102 00103 //Return the calculated checksum 00104 return crc; 00105 } 00106 00107 unsigned short crc16(const char* data, int length) 00108 { 00109 //Calculate the CRC16 checksum for the specified data block 00110 unsigned short crc = 0; 00111 for (int i = 0; i < length; i++) { 00112 crc = (crc << 8) ^ m_Crc16Table[((crc >> 8) ^ data[i]) & 0x00FF]; 00113 } 00114 00115 //Return the calculated checksum 00116 return crc; 00117 } 00118 00119 }
Generated on Sat Jul 16 2022 05:33:36 by 1.7.2