CRC example for SD driver

Revision:
0:e60fda833675
Child:
1:ca0b1e353dfe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Dec 18 22:58:44 2017 +0000
@@ -0,0 +1,69 @@
+#include "mbed.h"
+#include "mbed_crc.h"
+#include "SlowCRC.h"
+#include "FastCRC.h"
+
+int crc_sd_7bit() {
+    SlowCRC<uint8_t> ct(CRC_7BIT_SD);
+    
+    ct.init();
+    test[0] = 0x40;
+    test[1] = 0x00;
+    test[2] = 0x00;
+    test[3] = 0x00;
+    test[4] = 0x00;
+    
+    ct.compute((void *)test, 5, &crc);    
+    // CRC 7-bit as 8-bit data
+    crc = (crc << 1 ) + 1;
+    printf("The CRC of 0x%x \"CMD0\" is \"0x95\" Result: 0x%x\n", 
+                            ct.get_polynomial(), crc);
+
+    test[0] = 0x48;
+    test[1] = 0x00;
+    test[2] = 0x00;
+    test[3] = 0x01;
+    test[4] = 0xAA;
+    
+    ct.compute((void *)test, 5, &crc);    
+    // CRC 7-bit as 8-bit data
+    crc = (crc << 1 ) + 1;
+    printf("The CRC of 0x%x \"CMD8\" is \"0x87\" Result: 0x%x\n", 
+                            ct.get_polynomial(), crc);
+
+    test[0] = 0x51;
+    test[1] = 0x00;
+    test[2] = 0x00;
+    test[3] = 0x00;
+    test[4] = 0x00;
+
+    ct.compute((void *)test, 5, &crc);    
+    // CRC 7-bit as 8-bit data
+    crc = (crc << 1 ) + 1;
+    printf("The CRC of 0x%x \"CMD17\" is \"0x55\" Result: 0x%x\n", 
+                            ct.get_polynomial(), crc);
+
+    ct.deinit();
+    return 0;
+}
+
+int crc_sd_16bit() {
+    char test[512];
+    uint32_t crc;
+    FastCRC<uint16_t> sd(CRC_16BIT_SD);
+    
+    memset(test, 0xFF, 512);
+    // 512 bytes with 0xFF data --> CRC16 = 0x7FA1
+    sd.init();
+    sd.compute((void *)test, 512, &crc);
+    printf("The 16BIT SD CRC of 512 bytes with 0xFF data is \"0x7FA1\" Result: 0x%x\n", crc);
+    sd.deinit();
+    return 0;
+}
+
+int main() 
+{
+    crc_sd_16bit();    
+    crc_sd_7bit();
+    return 0;
+}