Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SDFileSystem by
Revision 18:2286a4e7fa31, committed 2015-08-27
- Comitter:
- neilt6
- Date:
- Thu Aug 27 21:50:40 2015 +0000
- Parent:
- 17:a47f74caa04e
- Child:
- 19:84b2958bbcae
- Commit message:
- Updated FATFileSystem and implemented minor improvements
Changed in this revision
--- a/CRC16.cpp Wed Jul 08 16:45:12 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/* SD/MMC File System Library
- * Copyright (c) 2014 Neil Thiessen
- *
- * 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.
- */
-
-#include "CRC16.h"
-
-namespace
-{
-const unsigned short m_CRC16Table[256] = {
- 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
- 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
- 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
- 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
- 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
- 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
- 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
- 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
- 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
- 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
- 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
- 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
- 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
- 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
- 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
- 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
- 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
- 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
- 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
- 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
- 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
- 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
- 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
- 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
- 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
- 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
- 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
- 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
- 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
- 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
- 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
- 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
-};
-}
-
-unsigned short CRC16(const char* data, int length)
-{
- //Calculate the CRC16 checksum for the specified data block
- unsigned short crc = 0;
- for (int i = 0; i < length; i++) {
- crc = (crc << 8) ^ m_CRC16Table[((crc >> 8) ^ data[i]) & 0x00FF];
- }
-
- //Return the calculated checksum
- return crc;
-}
--- a/CRC16.h Wed Jul 08 16:45:12 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/* SD/MMC File System Library - * Copyright (c) 2014 Neil Thiessen - * - * 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. - */ - -#ifndef CRC16_H -#define CRC16_H - -#include "mbed.h" - -unsigned short CRC16(const char* data, int length); - -#endif
--- a/CRC7.cpp Wed Jul 08 16:45:12 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/* SD/MMC File System Library
- * Copyright (c) 2014 Neil Thiessen
- *
- * 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.
- */
-
-#include "CRC7.h"
-
-namespace
-{
-const char m_CRC7Table[] = {
- 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
- 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77,
- 0x19, 0x10, 0x0B, 0x02, 0x3D, 0x34, 0x2F, 0x26,
- 0x51, 0x58, 0x43, 0x4A, 0x75, 0x7C, 0x67, 0x6E,
- 0x32, 0x3B, 0x20, 0x29, 0x16, 0x1F, 0x04, 0x0D,
- 0x7A, 0x73, 0x68, 0x61, 0x5E, 0x57, 0x4C, 0x45,
- 0x2B, 0x22, 0x39, 0x30, 0x0F, 0x06, 0x1D, 0x14,
- 0x63, 0x6A, 0x71, 0x78, 0x47, 0x4E, 0x55, 0x5C,
- 0x64, 0x6D, 0x76, 0x7F, 0x40, 0x49, 0x52, 0x5B,
- 0x2C, 0x25, 0x3E, 0x37, 0x08, 0x01, 0x1A, 0x13,
- 0x7D, 0x74, 0x6F, 0x66, 0x59, 0x50, 0x4B, 0x42,
- 0x35, 0x3C, 0x27, 0x2E, 0x11, 0x18, 0x03, 0x0A,
- 0x56, 0x5F, 0x44, 0x4D, 0x72, 0x7B, 0x60, 0x69,
- 0x1E, 0x17, 0x0C, 0x05, 0x3A, 0x33, 0x28, 0x21,
- 0x4F, 0x46, 0x5D, 0x54, 0x6B, 0x62, 0x79, 0x70,
- 0x07, 0x0E, 0x15, 0x1C, 0x23, 0x2A, 0x31, 0x38,
- 0x41, 0x48, 0x53, 0x5A, 0x65, 0x6C, 0x77, 0x7E,
- 0x09, 0x00, 0x1B, 0x12, 0x2D, 0x24, 0x3F, 0x36,
- 0x58, 0x51, 0x4A, 0x43, 0x7C, 0x75, 0x6E, 0x67,
- 0x10, 0x19, 0x02, 0x0B, 0x34, 0x3D, 0x26, 0x2F,
- 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C,
- 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04,
- 0x6A, 0x63, 0x78, 0x71, 0x4E, 0x47, 0x5C, 0x55,
- 0x22, 0x2B, 0x30, 0x39, 0x06, 0x0F, 0x14, 0x1D,
- 0x25, 0x2C, 0x37, 0x3E, 0x01, 0x08, 0x13, 0x1A,
- 0x6D, 0x64, 0x7F, 0x76, 0x49, 0x40, 0x5B, 0x52,
- 0x3C, 0x35, 0x2E, 0x27, 0x18, 0x11, 0x0A, 0x03,
- 0x74, 0x7D, 0x66, 0x6F, 0x50, 0x59, 0x42, 0x4B,
- 0x17, 0x1E, 0x05, 0x0C, 0x33, 0x3A, 0x21, 0x28,
- 0x5F, 0x56, 0x4D, 0x44, 0x7B, 0x72, 0x69, 0x60,
- 0x0E, 0x07, 0x1C, 0x15, 0x2A, 0x23, 0x38, 0x31,
- 0x46, 0x4F, 0x54, 0x5D, 0x62, 0x6B, 0x70, 0x79
-};
-}
-
-char CRC7(const char* data, int length)
-{
- //Calculate the CRC7 checksum for the specified data block
- char crc = 0;
- for (int i = 0; i < length; i++) {
- crc = m_CRC7Table[(crc << 1) ^ data[i]];
- }
-
- //Return the calculated checksum
- return crc;
-}
--- a/CRC7.h Wed Jul 08 16:45:12 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -/* SD/MMC File System Library - * Copyright (c) 2014 Neil Thiessen - * - * 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. - */ - -#ifndef CRC7_H -#define CRC7_H - -#include "mbed.h" - -char CRC7(const char* data, int length); - -#endif
--- a/FATFileSystem.lib Wed Jul 08 16:45:12 2015 +0000 +++ b/FATFileSystem.lib Thu Aug 27 21:50:40 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/mbed-official/code/FATFileSystem/#3ff2606d5713 +http://mbed.org/teams/mbed-official/code/FATFileSystem/#b3b3370574cf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SDCRC.cpp Thu Aug 27 21:50:40 2015 +0000
@@ -0,0 +1,119 @@
+/* SD/MMC File System Library
+ * Copyright (c) 2015 Neil Thiessen
+ *
+ * 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.
+ */
+
+#include "SDCRC.h"
+
+namespace SDCRC
+{
+
+namespace
+{
+const char m_Crc7Table[] = {
+ 0x00, 0x09, 0x12, 0x1B, 0x24, 0x2D, 0x36, 0x3F,
+ 0x48, 0x41, 0x5A, 0x53, 0x6C, 0x65, 0x7E, 0x77,
+ 0x19, 0x10, 0x0B, 0x02, 0x3D, 0x34, 0x2F, 0x26,
+ 0x51, 0x58, 0x43, 0x4A, 0x75, 0x7C, 0x67, 0x6E,
+ 0x32, 0x3B, 0x20, 0x29, 0x16, 0x1F, 0x04, 0x0D,
+ 0x7A, 0x73, 0x68, 0x61, 0x5E, 0x57, 0x4C, 0x45,
+ 0x2B, 0x22, 0x39, 0x30, 0x0F, 0x06, 0x1D, 0x14,
+ 0x63, 0x6A, 0x71, 0x78, 0x47, 0x4E, 0x55, 0x5C,
+ 0x64, 0x6D, 0x76, 0x7F, 0x40, 0x49, 0x52, 0x5B,
+ 0x2C, 0x25, 0x3E, 0x37, 0x08, 0x01, 0x1A, 0x13,
+ 0x7D, 0x74, 0x6F, 0x66, 0x59, 0x50, 0x4B, 0x42,
+ 0x35, 0x3C, 0x27, 0x2E, 0x11, 0x18, 0x03, 0x0A,
+ 0x56, 0x5F, 0x44, 0x4D, 0x72, 0x7B, 0x60, 0x69,
+ 0x1E, 0x17, 0x0C, 0x05, 0x3A, 0x33, 0x28, 0x21,
+ 0x4F, 0x46, 0x5D, 0x54, 0x6B, 0x62, 0x79, 0x70,
+ 0x07, 0x0E, 0x15, 0x1C, 0x23, 0x2A, 0x31, 0x38,
+ 0x41, 0x48, 0x53, 0x5A, 0x65, 0x6C, 0x77, 0x7E,
+ 0x09, 0x00, 0x1B, 0x12, 0x2D, 0x24, 0x3F, 0x36,
+ 0x58, 0x51, 0x4A, 0x43, 0x7C, 0x75, 0x6E, 0x67,
+ 0x10, 0x19, 0x02, 0x0B, 0x34, 0x3D, 0x26, 0x2F,
+ 0x73, 0x7A, 0x61, 0x68, 0x57, 0x5E, 0x45, 0x4C,
+ 0x3B, 0x32, 0x29, 0x20, 0x1F, 0x16, 0x0D, 0x04,
+ 0x6A, 0x63, 0x78, 0x71, 0x4E, 0x47, 0x5C, 0x55,
+ 0x22, 0x2B, 0x30, 0x39, 0x06, 0x0F, 0x14, 0x1D,
+ 0x25, 0x2C, 0x37, 0x3E, 0x01, 0x08, 0x13, 0x1A,
+ 0x6D, 0x64, 0x7F, 0x76, 0x49, 0x40, 0x5B, 0x52,
+ 0x3C, 0x35, 0x2E, 0x27, 0x18, 0x11, 0x0A, 0x03,
+ 0x74, 0x7D, 0x66, 0x6F, 0x50, 0x59, 0x42, 0x4B,
+ 0x17, 0x1E, 0x05, 0x0C, 0x33, 0x3A, 0x21, 0x28,
+ 0x5F, 0x56, 0x4D, 0x44, 0x7B, 0x72, 0x69, 0x60,
+ 0x0E, 0x07, 0x1C, 0x15, 0x2A, 0x23, 0x38, 0x31,
+ 0x46, 0x4F, 0x54, 0x5D, 0x62, 0x6B, 0x70, 0x79
+};
+
+const unsigned short m_Crc16Table[256] = {
+ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
+ 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
+ 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
+ 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
+ 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
+ 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
+ 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
+ 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
+ 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
+ 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
+ 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
+ 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
+ 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
+ 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
+ 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
+ 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
+ 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
+ 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
+ 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
+ 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
+ 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
+ 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+ 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
+ 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
+ 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
+ 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
+ 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
+ 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
+ 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
+ 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
+ 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
+ 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
+};
+}
+
+char crc7(const char* data, int length)
+{
+ //Calculate the CRC7 checksum for the specified data block
+ char crc = 0;
+ for (int i = 0; i < length; i++) {
+ crc = m_Crc7Table[(crc << 1) ^ data[i]];
+ }
+
+ //Return the calculated checksum
+ return crc;
+}
+
+unsigned short crc16(const char* data, int length)
+{
+ //Calculate the CRC16 checksum for the specified data block
+ unsigned short crc = 0;
+ for (int i = 0; i < length; i++) {
+ crc = (crc << 8) ^ m_Crc16Table[((crc >> 8) ^ data[i]) & 0x00FF];
+ }
+
+ //Return the calculated checksum
+ return crc;
+}
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/SDCRC.h Thu Aug 27 21:50:40 2015 +0000
@@ -0,0 +1,30 @@
+/* SD/MMC File System Library
+ * Copyright (c) 2015 Neil Thiessen
+ *
+ * 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.
+ */
+
+#ifndef SD_CRC_H
+#define SD_CRC_H
+
+#include "mbed.h"
+
+namespace SDCRC
+{
+
+char crc7(const char* data, int length);
+unsigned short crc16(const char* data, int length);
+
+}
+
+#endif
--- a/SDFileSystem.cpp Wed Jul 08 16:45:12 2015 +0000
+++ b/SDFileSystem.cpp Thu Aug 27 21:50:40 2015 +0000
@@ -1,5 +1,5 @@
/* SD/MMC File System Library
- * Copyright (c) 2014 Neil Thiessen
+ * Copyright (c) 2015 Neil Thiessen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,10 +15,9 @@
*/
#include "SDFileSystem.h"
+#include "diskio.h"
#include "pinmap.h"
-#include "diskio.h"
-#include "CRC7.h"
-#include "CRC16.h"
+#include "SDCRC.h"
SDFileSystem::SDFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name, PinName cd, SwitchType cdtype, int hz) : FATFileSystem(name), m_Spi(mosi, miso, sclk), m_Cs(cs, 1), m_Cd(cd), m_FREQ(hz)
{
@@ -62,10 +61,15 @@
//Check if there's a card in the socket
checkSocket();
- //If a card is present but not initialized, initialize it
- if (!(m_Status & STA_NODISK) && (m_Status & STA_NOINIT))
+ //Check if a card is present, but not initialized
+ if (!(m_Status & STA_NODISK) && (m_Status & STA_NOINIT)) {
+ //Initialize the card in order to determine the card type
disk_initialize();
+ //Change the status back to uninitialized so that FatFs will handle the card change properly
+ m_Status |= STA_NOINIT;
+ }
+
//Return the card type
return m_CardType;
}
@@ -407,7 +411,7 @@
{
//Use the card detect switch (if available) to determine if the socket is occupied
if (m_CdAssert == -1 || m_Cd == m_CdAssert) {
- //The socket is occupied, clear the STA_NODISK flag
+ //The socket is occupied
m_Status &= ~STA_NODISK;
} else {
//The socket is empty
@@ -499,7 +503,7 @@
cmdPacket[3] = arg >> 8;
cmdPacket[4] = arg;
if (m_Crc || cmd == CMD0 || cmd == CMD8)
- cmdPacket[5] = (CRC7(cmdPacket, 5) << 1) | 0x01;
+ cmdPacket[5] = (SDCRC::crc7(cmdPacket, 5) << 1) | 0x01;
else
cmdPacket[5] = 0x01;
@@ -596,13 +600,13 @@
}
//Return the validity of the CRC16 checksum (if enabled)
- return (!m_Crc || crc == CRC16(buffer, length));
+ return (!m_Crc || crc == SDCRC::crc16(buffer, length));
}
char SDFileSystem::writeData(const char* buffer, char token)
{
//Calculate the CRC16 checksum for the data block (if enabled)
- unsigned short crc = (m_Crc) ? CRC16(buffer, 512) : 0xFFFF;
+ unsigned short crc = (m_Crc) ? SDCRC::crc16(buffer, 512) : 0xFFFF;
//Wait for up to 500ms for the card to become ready
if (!waitReady(500))
--- a/SDFileSystem.h Wed Jul 08 16:45:12 2015 +0000 +++ b/SDFileSystem.h Thu Aug 27 21:50:40 2015 +0000 @@ -1,5 +1,5 @@ /* SD/MMC File System Library - * Copyright (c) 2014 Neil Thiessen + * Copyright (c) 2015 Neil Thiessen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ #include "mbed.h" #include "FATFileSystem.h" -#include <stdint.h> /** SDFileSystem class. * Used for creating a virtual file system for accessing SD/MMC cards via SPI.
