FM

Dependencies:   SimpleDMA eeprom mbed-rtos mbed FreescaleIAP

Fork of CDMS_CODE by shubham c

Revision:
195:6a549c0e9287
Parent:
194:ab528911780d
Child:
197:1369ef45b49e
--- a/cdms_sd.h	Wed Jun 29 14:24:12 2016 +0000
+++ b/cdms_sd.h	Wed Jun 29 15:23:12 2016 +0000
@@ -57,7 +57,7 @@
 static uint32_t ext_bits(unsigned char *, int , int );
 int SD_WRITE(uint8_t*,uint32_t,uint8_t);
 int FCTN_CDMS_SD_INIT();
-int SD_READ(uint8_t*,uint32_t,uint8_t);
+uint8_t SD_READ(uint8_t*,uint32_t,uint8_t);
 #define SDCARD_FAIL 0
 #define SDCARD_V1   1
 #define SDCARD_V2   2
@@ -88,48 +88,37 @@
 
     
 
-uint32_t  FCTN_SD_MNGR(uint8_t sid)
+void FCTN_SD_MNGR(void)
 {
     uint32_t fsc;
     uint32_t start_fsc;
     uint8_t buffer[512];
     int b=disk_read(buffer, SD_MNG_SECT);
-    if(sid==0x01)
-    {
-        fsc=(uint32_t)(buffer[0]<<24)+(uint32_t)(buffer[1]<<16)+(uint32_t)(buffer[2]<<8)+(uint32_t)buffer[3];
-        start_fsc=(uint32_t)(buffer[4]<<24)+(uint32_t)(buffer[5]<<16)+(uint32_t)(buffer[6]<<8)+(uint32_t)buffer[7];
-        FSC_CURRENT[1] = fsc;
-        FSC_LAST[1] = start_fsc;
-    }
-    if(sid==0x02)
-    {
-        fsc=(uint32_t)(buffer[8]<<24)+(uint32_t)(buffer[9]<<16)+(uint32_t)(buffer[10]<<8)+(uint32_t)buffer[11];
-        start_fsc=(uint32_t)(buffer[12]<<24)+(uint32_t)(buffer[13]<<16)+(uint32_t)(buffer[14]<<8)+(uint32_t)buffer[15];
-        FSC_CURRENT[2] = fsc;
-        FSC_LAST[2] = start_fsc;
-    }
-    if(sid==0x03)
-    {
-        fsc=(uint32_t)(buffer[16]<<24)+(uint32_t)(buffer[17]<<16)+(uint32_t)(buffer[18]<<8)+(uint32_t)buffer[19];
-        start_fsc=(uint32_t)(buffer[20]<<24)+(uint32_t)(buffer[21]<<16)+(uint32_t)(buffer[22]<<8)+(uint32_t)buffer[23];
-        FSC_CURRENT[3] = fsc;
-        FSC_LAST[3] = start_fsc;
-    }
-    if(sid==0x04)
-    {
-        fsc=(uint32_t)(buffer[24]<<24)+(uint32_t)(buffer[25]<<16)+(uint32_t)(buffer[26]<<8)+(uint32_t)buffer[27];
-        start_fsc=(uint32_t)(buffer[28]<<24)+(uint32_t)(buffer[29]<<16)+(uint32_t)(buffer[30]<<8)+(uint32_t)buffer[31];
-        FSC_CURRENT[4] = fsc;
-        FSC_LAST[4] = start_fsc;
-    }
-    if(sid==0x05)
-    {
-        fsc=(uint32_t)(buffer[32]<<24)+(uint32_t)(buffer[33]<<16)+(uint32_t)(buffer[34]<<8)+(uint32_t)buffer[35];
-        start_fsc=(uint32_t)(buffer[36]<<24)+(uint32_t)(buffer[37]<<16)+(uint32_t)(buffer[38]<<8)+(uint32_t)buffer[39];
-        FSC_CURRENT[5] = fsc;
-        FSC_LAST[5] = start_fsc;
-    }
-    return fsc;
+    
+    fsc=(uint32_t)(buffer[0]<<24)+(uint32_t)(buffer[1]<<16)+(uint32_t)(buffer[2]<<8)+(uint32_t)buffer[3];
+    start_fsc=(uint32_t)(buffer[4]<<24)+(uint32_t)(buffer[5]<<16)+(uint32_t)(buffer[6]<<8)+(uint32_t)buffer[7];
+    FSC_CURRENT[1] = fsc;
+    FSC_LAST[1] = start_fsc;
+    
+    fsc=(uint32_t)(buffer[8]<<24)+(uint32_t)(buffer[9]<<16)+(uint32_t)(buffer[10]<<8)+(uint32_t)buffer[11];
+    start_fsc=(uint32_t)(buffer[12]<<24)+(uint32_t)(buffer[13]<<16)+(uint32_t)(buffer[14]<<8)+(uint32_t)buffer[15];
+    FSC_CURRENT[2] = fsc;
+    FSC_LAST[2] = start_fsc;
+
+    fsc=(uint32_t)(buffer[16]<<24)+(uint32_t)(buffer[17]<<16)+(uint32_t)(buffer[18]<<8)+(uint32_t)buffer[19];
+    start_fsc=(uint32_t)(buffer[20]<<24)+(uint32_t)(buffer[21]<<16)+(uint32_t)(buffer[22]<<8)+(uint32_t)buffer[23];
+    FSC_CURRENT[3] = fsc;
+    FSC_LAST[3] = start_fsc;
+    
+    fsc=(uint32_t)(buffer[24]<<24)+(uint32_t)(buffer[25]<<16)+(uint32_t)(buffer[26]<<8)+(uint32_t)buffer[27];
+    start_fsc=(uint32_t)(buffer[28]<<24)+(uint32_t)(buffer[29]<<16)+(uint32_t)(buffer[30]<<8)+(uint32_t)buffer[31];
+    FSC_CURRENT[4] = fsc;
+    FSC_LAST[4] = start_fsc;
+        
+    fsc=(uint32_t)(buffer[32]<<24)+(uint32_t)(buffer[33]<<16)+(uint32_t)(buffer[34]<<8)+(uint32_t)buffer[35];
+    start_fsc=(uint32_t)(buffer[36]<<24)+(uint32_t)(buffer[37]<<16)+(uint32_t)(buffer[38]<<8)+(uint32_t)buffer[39];
+    FSC_CURRENT[5] = fsc;
+    FSC_LAST[5] = start_fsc;
 }
 
 int INCREMENT_SD_LIB(uint8_t sid)
@@ -284,40 +273,61 @@
     return 1;
 }
 
-int SD_READ(uint8_t* buffer,uint32_t fsc,uint8_t sid)
+uint8_t SD_READ(uint8_t* buffer,uint32_t fsc,uint8_t sid)
 {
+    FCTN_SD_MNGR();
+    if(SD_SW_EN_DS == 1)
+        return 0x89;
     uint32_t block_number;
     int result;
     if(sid==0x01)
     {
+        if(!(FSC_LAST[1]<=fsc && fsc<=FSC_CURRENT[1])){
+            return 0x86;
+        }
         block_number=SD_SCP_FIRST + fsc;
         result= disk_read(buffer,block_number);
     }
    else if(sid==0x02)
     {
+        if(!(FSC_LAST[2]<=fsc && fsc<=FSC_CURRENT[2])){
+            return 0x86;
+        }
         block_number=SD_SFF_AT_FIRST + fsc;
         result= disk_read(buffer,block_number);
     }
     else if(sid==0x03)
     {
+        if(!(FSC_LAST[3]<=fsc && fsc<=FSC_CURRENT[3])){
+            return 0x86;
+        }
         block_number=SD_SFF_BT_FIRST + fsc;
         result= disk_read(buffer,block_number);
     }
     else if(sid==0x04)
     {
+        if(!(FSC_LAST[4]<=fsc && fsc<=FSC_CURRENT[4])){
+            return 0x86;
+        }
         block_number=SD_HK_ARCH_FIRST + fsc;
         result= disk_read(buffer,block_number);
     }
     else if(sid==0x05)
     {
+        if(!(FSC_LAST[5]<=fsc && fsc<=FSC_CURRENT[5])){
+            return 0x86;
+        }
         block_number=LOG_FIRST +fsc;
         result= disk_read(buffer,block_number);
     }
     else
     {
-        return 1;
+        return 0x02;
     }
-    return result;
+    if(result == 0)
+        return 0xA0;
+    else
+        return 0x88;
 }
 
 
@@ -576,11 +586,6 @@
     return bits;
 }
 
-int disk_initialize()
-{
-
-}
-
 int disk_write(const uint8_t *buffer, uint64_t block_number)
 
 {