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.
Dependencies: 4DGL-uLCD-SE FATFileSystem
Fork of SDFileSystem by
Diff: SDFileSystem.cpp
- Revision:
- 20:2c1e8d442f68
- Parent:
- 18:2286a4e7fa31
- Child:
- 21:d10a519c0910
--- a/SDFileSystem.cpp Thu Nov 26 16:19:53 2015 +0000
+++ b/SDFileSystem.cpp Tue Dec 08 16:02:44 2015 +0000
@@ -56,19 +56,19 @@
}
}
-SDFileSystem::CardType SDFileSystem::card_type()
+bool SDFileSystem::card_present()
{
- //Check if there's a card in the socket
+ //Check the card socket
checkSocket();
- //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();
+ //Return whether or not a card is present
+ return !(m_Status & STA_NODISK);
+}
- //Change the status back to uninitialized so that FatFs will handle the card change properly
- m_Status |= STA_NOINIT;
- }
+SDFileSystem::CardType SDFileSystem::card_type()
+{
+ //Check the card socket
+ checkSocket();
//Return the card type
return m_CardType;
@@ -82,7 +82,7 @@
void SDFileSystem::crc(bool enabled)
{
- //Check if there's a card in the socket
+ //Check the card socket
checkSocket();
//Just update the member variable if the card isn't initialized
@@ -132,9 +132,9 @@
//Unmount the filesystem
FATFileSystem::unmount();
- //Change the status to not initialized, and the card type to none
+ //Change the status to not initialized, and the card type to unknown
m_Status |= STA_NOINIT;
- m_CardType = CARD_NONE;
+ m_CardType = CARD_UNKNOWN;
//Always succeeds
return 0;
@@ -308,7 +308,7 @@
int SDFileSystem::disk_status()
{
- //Check if there's a card in the socket
+ //Check the card socket
checkSocket();
//Return the disk status
@@ -403,20 +403,27 @@
void SDFileSystem::onCardRemoval()
{
- //Check if there's a card in the socket
+ //Check the card socket
checkSocket();
}
inline void SDFileSystem::checkSocket()
{
//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
- m_Status &= ~STA_NODISK;
- } else {
- //The socket is empty
- m_Status |= (STA_NODISK | STA_NOINIT);
- m_CardType = CARD_NONE;
+ if (m_CdAssert != -1) {
+ if (m_Status & STA_NODISK) {
+ if (m_Cd == m_CdAssert) {
+ //The socket is now occupied
+ m_Status &= ~STA_NODISK;
+ m_CardType = CARD_UNKNOWN;
+ }
+ } else {
+ if (m_Cd != m_CdAssert) {
+ //The socket is now empty
+ m_Status |= (STA_NODISK | STA_NOINIT);
+ m_CardType = CARD_NONE;
+ }
+ }
}
}
