Subdirectory provided by Embedded Artists
Dependencies: DM_FATFileSystem DM_HttpServer DM_USBHost EthernetInterface USBDevice mbed-rpc mbed-rtos mbed-src
Dependents: lpc4088_displaymodule_hello_world_Sept_2018
Fork of DMSupport by
crc.cpp
- Committer:
- embeddedartists
- Date:
- 2014-12-19
- Revision:
- 11:dedcebcfc869
- Child:
- 29:b1ec19000e15
File content as of revision 11:dedcebcfc869:
/* * Copyright 2014 Embedded Artists AB * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /****************************************************************************** * Includes *****************************************************************************/ #include "mbed.h" #include "crc.h" /****************************************************************************** * Defines and typedefs *****************************************************************************/ #define NUM_CRC_BUFF_ENTRIES (100) #define CRC32_INIT() do { LPC_CRC->MODE = 0x00000036; LPC_CRC->SEED = 0xffffffff; } while(0) #define CRC32_WRITE8(__val) LPC_CRC->WR_DATA_BYTE.DATA = (uint8_t)(__val) #define CRC32_WRITE16(__val) LPC_CRC->WR_DATA_WORD.DATA = (uint16_t)(__val) #define CRC32_WRITE32(__val) LPC_CRC->WR_DATA_DWORD.DATA = (__val) #define CRC32_SUM() LPC_CRC->SUM /****************************************************************************** * External global variables *****************************************************************************/ /****************************************************************************** * Local variables *****************************************************************************/ /****************************************************************************** * Local Functions *****************************************************************************/ /****************************************************************************** * Public Functions *****************************************************************************/ uint32_t crc_File(FILE* f) { uint32_t* buff = (uint32_t*)malloc(sizeof(uint32_t)*NUM_CRC_BUFF_ENTRIES); if (buff != NULL) { CRC32_INIT(); fseek(f, 0, SEEK_SET); memset(buff, 0, sizeof(uint32_t)*NUM_CRC_BUFF_ENTRIES); int numRead = fread(buff, sizeof(uint32_t), NUM_CRC_BUFF_ENTRIES, f); while (numRead > 0) { for (int i = 0; i < numRead; i++) { CRC32_WRITE32(buff[i]); } numRead = fread(buff, sizeof(uint32_t), NUM_CRC_BUFF_ENTRIES, f); } free(buff); return CRC32_SUM(); } return 0; } uint32_t crc_Buffer(const uint32_t* data, uint32_t size) { CRC32_INIT(); for (int i = 0; i < size; i++) { CRC32_WRITE32(data[i]); } return CRC32_SUM(); }