Nikola Milenic / SDcardM
Committer:
milenicnikola
Date:
Thu Jun 27 17:12:06 2019 +0000
Revision:
1:f4a3e6cca74e
Parent:
0:ce17b48156eb
par manjih poboljsanja

Who changed what in which revision?

UserRevisionLine numberNew contents of line
milenicnikola 0:ce17b48156eb 1 #include "SDcardM.h"
milenicnikola 0:ce17b48156eb 2 #include "SDBlockDevice.h"
milenicnikola 0:ce17b48156eb 3 #include "mbed.h"
milenicnikola 0:ce17b48156eb 4
milenicnikola 0:ce17b48156eb 5 extern SDBlockDevice sd;
milenicnikola 0:ce17b48156eb 6 extern Serial pc;
milenicnikola 0:ce17b48156eb 7
milenicnikola 0:ce17b48156eb 8 char writeBuffer[520];
milenicnikola 0:ce17b48156eb 9 char readBuffer[512];
milenicnikola 0:ce17b48156eb 10 int i;
milenicnikola 0:ce17b48156eb 11 bd_addr_t block;
milenicnikola 0:ce17b48156eb 12 bd_addr_t* bp=(bd_addr_t*) readBuffer;
milenicnikola 0:ce17b48156eb 13
milenicnikola 0:ce17b48156eb 14 bool SD_init()
milenicnikola 0:ce17b48156eb 15 {
milenicnikola 0:ce17b48156eb 16 for (int j=0; j<520; j++) writeBuffer[j]=0;
milenicnikola 0:ce17b48156eb 17 i = 0;
milenicnikola 1:f4a3e6cca74e 18 sd.deinit();
milenicnikola 0:ce17b48156eb 19 if(sd.init()) {
milenicnikola 0:ce17b48156eb 20 return false;
milenicnikola 0:ce17b48156eb 21 }
milenicnikola 0:ce17b48156eb 22 sd.frequency(24000000);
milenicnikola 0:ce17b48156eb 23 sd.read(readBuffer, 0, 512);
milenicnikola 0:ce17b48156eb 24 block=*bp;
milenicnikola 0:ce17b48156eb 25 pc.printf("CURRENT BLOCK: %d\r\n", block);
milenicnikola 0:ce17b48156eb 26 return true;
milenicnikola 0:ce17b48156eb 27 }
milenicnikola 0:ce17b48156eb 28
milenicnikola 0:ce17b48156eb 29 void SD_log_char(char c)
milenicnikola 0:ce17b48156eb 30 {
milenicnikola 0:ce17b48156eb 31 writeBuffer[i]=c;
milenicnikola 0:ce17b48156eb 32 i++;
milenicnikola 0:ce17b48156eb 33 if(i==512) {
milenicnikola 0:ce17b48156eb 34 sd.program(writeBuffer, block, 512);
milenicnikola 0:ce17b48156eb 35 block+=512;;
milenicnikola 0:ce17b48156eb 36 *bp=block;
milenicnikola 0:ce17b48156eb 37 sd.program(readBuffer, 0, 512);
milenicnikola 0:ce17b48156eb 38 i=0;
milenicnikola 0:ce17b48156eb 39 }
milenicnikola 0:ce17b48156eb 40 }
milenicnikola 0:ce17b48156eb 41
milenicnikola 0:ce17b48156eb 42 void SD_log_string(const char* s)
milenicnikola 0:ce17b48156eb 43 {
milenicnikola 0:ce17b48156eb 44 while(*s) {
milenicnikola 0:ce17b48156eb 45 SD_log_char(*s);
milenicnikola 0:ce17b48156eb 46 s++;
milenicnikola 0:ce17b48156eb 47 }
milenicnikola 0:ce17b48156eb 48 }
milenicnikola 0:ce17b48156eb 49
milenicnikola 0:ce17b48156eb 50 void SD_log_float(float f)
milenicnikola 0:ce17b48156eb 51 {
milenicnikola 0:ce17b48156eb 52 memcpy(writeBuffer+i, (char*) (&f), 4);
milenicnikola 0:ce17b48156eb 53 i+=4;
milenicnikola 0:ce17b48156eb 54 if(i>=512) {
milenicnikola 0:ce17b48156eb 55 sd.program(writeBuffer, block, 512);
milenicnikola 0:ce17b48156eb 56 block+=512;
milenicnikola 0:ce17b48156eb 57 sd.program(readBuffer, 0, 512);
milenicnikola 0:ce17b48156eb 58
milenicnikola 0:ce17b48156eb 59 for(int j=0; j+512<i; j++) {
milenicnikola 0:ce17b48156eb 60 writeBuffer[j]=writeBuffer[j+512];
milenicnikola 0:ce17b48156eb 61 }
milenicnikola 0:ce17b48156eb 62 i-=512;
milenicnikola 0:ce17b48156eb 63 }
milenicnikola 0:ce17b48156eb 64 }
milenicnikola 0:ce17b48156eb 65
milenicnikola 0:ce17b48156eb 66 void SD_log_int(int f)
milenicnikola 0:ce17b48156eb 67 {
milenicnikola 0:ce17b48156eb 68 memcpy(writeBuffer+i, (char*) (&f), 4);
milenicnikola 0:ce17b48156eb 69 i+=4;
milenicnikola 0:ce17b48156eb 70 if(i>=512) {
milenicnikola 0:ce17b48156eb 71 sd.program(writeBuffer, block, 512);
milenicnikola 0:ce17b48156eb 72 block+=512;
milenicnikola 0:ce17b48156eb 73 sd.program(readBuffer, 0, 512);
milenicnikola 0:ce17b48156eb 74
milenicnikola 0:ce17b48156eb 75 for(int j=0; j+512<i; j++) {
milenicnikola 0:ce17b48156eb 76 writeBuffer[j]=writeBuffer[j+512];
milenicnikola 0:ce17b48156eb 77 }
milenicnikola 0:ce17b48156eb 78 i-=512;
milenicnikola 0:ce17b48156eb 79 }
milenicnikola 0:ce17b48156eb 80 }
milenicnikola 0:ce17b48156eb 81
milenicnikola 0:ce17b48156eb 82
milenicnikola 0:ce17b48156eb 83 void SD_flush()
milenicnikola 0:ce17b48156eb 84 {
milenicnikola 0:ce17b48156eb 85 sd.program(writeBuffer, block, 512);
milenicnikola 0:ce17b48156eb 86 block+=512;
milenicnikola 0:ce17b48156eb 87 *bp=block;
milenicnikola 0:ce17b48156eb 88 sd.program(readBuffer, 0, 512);
milenicnikola 0:ce17b48156eb 89 i=0;
milenicnikola 0:ce17b48156eb 90 }