aboutsummaryrefslogtreecommitdiff
path: root/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c
diff options
context:
space:
mode:
authorDean Camera <[email protected]>2010-08-18 10:33:21 +0000
committerDean Camera <[email protected]>2010-08-18 10:33:21 +0000
commit4f114e576694b6b49931d5f14874df6c361d4267 (patch)
treecba14b1e3024c7c252b4a1e2cc37c2b200e34042 /Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c
parentf4de17207ea6a28a6947ed6f3170b6689a2619d0 (diff)
downloadqmk_firmware-4f114e576694b6b49931d5f14874df6c361d4267.tar.gz
qmk_firmware-4f114e576694b6b49931d5f14874df6c361d4267.zip
Fixed MassStorage based demos and projects resetting the SCSI sense values before the command is executed, leading to missed SCSI sense values when the host retrieves the sense key (thanks to Martin Degelsegger).
Added missing DataflashManager_CheckDataflashOperation() function to the MassStorageKeyboard demo, removed redundant SCSI_Codes.h file as these values are part of the MassStorage Class Driver.
Diffstat (limited to 'Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c')
-rw-r--r--Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c
index 445082f247..ce2ac81514 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.c
@@ -498,3 +498,36 @@ void DataflashManager_ResetDataflashProtections(void)
/* Deselect current Dataflash chip */
Dataflash_DeselectChip();
}
+
+/** Performs a simple test on the attached Dataflash IC(s) to ensure that they are working.
+ *
+ * \return Boolean true if all media chips are working, false otherwise
+ */
+bool DataflashManager_CheckDataflashOperation(void)
+{
+ uint8_t ReturnByte;
+
+ /* Test first Dataflash IC is present and responding to commands */
+ Dataflash_SelectChip(DATAFLASH_CHIP1);
+ Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
+ ReturnByte = Dataflash_ReceiveByte();
+ Dataflash_DeselectChip();
+
+ /* If returned data is invalid, fail the command */
+ if (ReturnByte != DF_MANUFACTURER_ATMEL)
+ return false;
+
+ #if (DATAFLASH_TOTALCHIPS == 2)
+ /* Test second Dataflash IC is present and responding to commands */
+ Dataflash_SelectChip(DATAFLASH_CHIP2);
+ Dataflash_SendByte(DF_CMD_READMANUFACTURERDEVICEINFO);
+ ReturnByte = Dataflash_ReceiveByte();
+ Dataflash_DeselectChip();
+
+ /* If returned data is invalid, fail the command */
+ if (ReturnByte != DF_MANUFACTURER_ATMEL)
+ return false;
+ #endif
+
+ return true;
+}