Michał Biolik / Mbed 2 deprecated SD_TUT

Dependencies:   EthernetInterface SDFileSystem mbed-rtos mbed

Committer:
micbio
Date:
Fri Dec 09 11:22:47 2016 +0000
Revision:
3:998f7fb862af
dupa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
micbio 3:998f7fb862af 1 #include "file_manager.hpp"
micbio 3:998f7fb862af 2
micbio 3:998f7fb862af 3 extern Serial pc;
micbio 3:998f7fb862af 4
micbio 3:998f7fb862af 5 void file_manager::print_files(void)
micbio 3:998f7fb862af 6 {
micbio 3:998f7fb862af 7 pc.printf("1. %s\r\n", &path_sisk[4]);
micbio 3:998f7fb862af 8 pc.printf("2. %s\r\n", &path_agh[4]);
micbio 3:998f7fb862af 9 pc.printf("3. %s\r\n", &path_krk[4]);
micbio 3:998f7fb862af 10 }
micbio 3:998f7fb862af 11
micbio 3:998f7fb862af 12 void file_manager::get_text(void)
micbio 3:998f7fb862af 13 {
micbio 3:998f7fb862af 14 uint8_t char_counter = 0;
micbio 3:998f7fb862af 15 static char byte_received;
micbio 3:998f7fb862af 16
micbio 3:998f7fb862af 17 do
micbio 3:998f7fb862af 18 {
micbio 3:998f7fb862af 19 byte_received = pc.getc();
micbio 3:998f7fb862af 20 buffer[char_counter] = byte_received;
micbio 3:998f7fb862af 21 char_counter++;
micbio 3:998f7fb862af 22 if (char_counter >= MAX_TEXT_LEN)
micbio 3:998f7fb862af 23 {
micbio 3:998f7fb862af 24 pc.printf("Text too long for buffer.\r\n");
micbio 3:998f7fb862af 25 break; // Text length reached max length.
micbio 3:998f7fb862af 26 }
micbio 3:998f7fb862af 27 pc.putc(byte_received);
micbio 3:998f7fb862af 28 }while(byte_received != '\r');
micbio 3:998f7fb862af 29
micbio 3:998f7fb862af 30 // Add string end sign
micbio 3:998f7fb862af 31 buffer[char_counter] = '\0';
micbio 3:998f7fb862af 32
micbio 3:998f7fb862af 33 pc.printf("\r\n");
micbio 3:998f7fb862af 34 }
micbio 3:998f7fb862af 35
micbio 3:998f7fb862af 36 void file_manager::get_path(void)
micbio 3:998f7fb862af 37 {
micbio 3:998f7fb862af 38 pc.printf("Current file to write to is: %s.\r\n", current_path);
micbio 3:998f7fb862af 39 }
micbio 3:998f7fb862af 40
micbio 3:998f7fb862af 41 void file_manager::set_path(void)
micbio 3:998f7fb862af 42 {
micbio 3:998f7fb862af 43 char number;
micbio 3:998f7fb862af 44 bool correct_number = false;
micbio 3:998f7fb862af 45
micbio 3:998f7fb862af 46 if (fp != NULL)
micbio 3:998f7fb862af 47 {
micbio 3:998f7fb862af 48 pc.printf("First close the file!\r\n");
micbio 3:998f7fb862af 49 return;
micbio 3:998f7fb862af 50 }
micbio 3:998f7fb862af 51
micbio 3:998f7fb862af 52 this->get_path();
micbio 3:998f7fb862af 53 pc.printf("Write the number of new file to write to. \r\n");
micbio 3:998f7fb862af 54 this->print_files();
micbio 3:998f7fb862af 55
micbio 3:998f7fb862af 56 do
micbio 3:998f7fb862af 57 {
micbio 3:998f7fb862af 58 correct_number = true;
micbio 3:998f7fb862af 59 number = pc.getc();
micbio 3:998f7fb862af 60 switch(number)
micbio 3:998f7fb862af 61 {
micbio 3:998f7fb862af 62 case '1':
micbio 3:998f7fb862af 63 current_path = path_sisk;
micbio 3:998f7fb862af 64 break;
micbio 3:998f7fb862af 65 case '2':
micbio 3:998f7fb862af 66 current_path = path_agh;
micbio 3:998f7fb862af 67 break;
micbio 3:998f7fb862af 68 case '3':
micbio 3:998f7fb862af 69 current_path = path_krk;
micbio 3:998f7fb862af 70 break;
micbio 3:998f7fb862af 71 default:
micbio 3:998f7fb862af 72 pc.printf("Incorrect number, try again.\r\n");
micbio 3:998f7fb862af 73 correct_number = false;
micbio 3:998f7fb862af 74 }
micbio 3:998f7fb862af 75 }while(!correct_number);
micbio 3:998f7fb862af 76
micbio 3:998f7fb862af 77 pc.printf("Setting path to: %s.\r\n", current_path);
micbio 3:998f7fb862af 78 }
micbio 3:998f7fb862af 79
micbio 3:998f7fb862af 80 bool file_manager::open_file(char option)
micbio 3:998f7fb862af 81 {
micbio 3:998f7fb862af 82 if (fp != NULL)
micbio 3:998f7fb862af 83 {
micbio 3:998f7fb862af 84 pc.printf("File already opened!\r\n");
micbio 3:998f7fb862af 85 return false;
micbio 3:998f7fb862af 86 }
micbio 3:998f7fb862af 87
micbio 3:998f7fb862af 88 fp = fopen(this->current_path, &option);
micbio 3:998f7fb862af 89
micbio 3:998f7fb862af 90 if (fp != NULL)
micbio 3:998f7fb862af 91 {
micbio 3:998f7fb862af 92 pc.printf("Opened file: %s.\r\n", this->current_path);
micbio 3:998f7fb862af 93 }
micbio 3:998f7fb862af 94
micbio 3:998f7fb862af 95 return true;
micbio 3:998f7fb862af 96 }
micbio 3:998f7fb862af 97
micbio 3:998f7fb862af 98 bool file_manager::close_file(void)
micbio 3:998f7fb862af 99 {
micbio 3:998f7fb862af 100 if (fp == NULL)
micbio 3:998f7fb862af 101 {
micbio 3:998f7fb862af 102 pc.printf("File already closed!\r\n");
micbio 3:998f7fb862af 103 return false;
micbio 3:998f7fb862af 104 }
micbio 3:998f7fb862af 105
micbio 3:998f7fb862af 106 fclose(fp);
micbio 3:998f7fb862af 107
micbio 3:998f7fb862af 108 fp = NULL;
micbio 3:998f7fb862af 109
micbio 3:998f7fb862af 110
micbio 3:998f7fb862af 111 if (fp != NULL)
micbio 3:998f7fb862af 112 {
micbio 3:998f7fb862af 113 pc.printf("Closed file: %s.\r\n", this->current_path);
micbio 3:998f7fb862af 114 }
micbio 3:998f7fb862af 115
micbio 3:998f7fb862af 116 return true;
micbio 3:998f7fb862af 117 }
micbio 3:998f7fb862af 118
micbio 3:998f7fb862af 119 void file_manager::write_to_file(void)
micbio 3:998f7fb862af 120 {
micbio 3:998f7fb862af 121 this->open_file('w');
micbio 3:998f7fb862af 122
micbio 3:998f7fb862af 123 get_text();
micbio 3:998f7fb862af 124 fprintf(fp, "%s", buffer);
micbio 3:998f7fb862af 125 //fwrite (buffer , sizeof(char), sizeof(buffer), fp);
micbio 3:998f7fb862af 126
micbio 3:998f7fb862af 127 this->close_file();
micbio 3:998f7fb862af 128 }
micbio 3:998f7fb862af 129
micbio 3:998f7fb862af 130
micbio 3:998f7fb862af 131 /*void file_manager::append_to_file(void)
micbio 3:998f7fb862af 132 {
micbio 3:998f7fb862af 133 //this->open_file('a');
micbio 3:998f7fb862af 134 char * a = "a";
micbio 3:998f7fb862af 135 fp = fopen(this->current_path, a);
micbio 3:998f7fb862af 136 get_text();
micbio 3:998f7fb862af 137 fprintf(fp, "%s", buffer);
micbio 3:998f7fb862af 138 // fwrite (buffer , sizeof(char), sizeof(buffer), fp);
micbio 3:998f7fb862af 139 this->close_file();
micbio 3:998f7fb862af 140 }*/
micbio 3:998f7fb862af 141
micbio 3:998f7fb862af 142 void file_manager::read_file(void)
micbio 3:998f7fb862af 143 {
micbio 3:998f7fb862af 144 long lSize;
micbio 3:998f7fb862af 145 size_t result;
micbio 3:998f7fb862af 146
micbio 3:998f7fb862af 147 this->open_file('r');
micbio 3:998f7fb862af 148
micbio 3:998f7fb862af 149 fseek(fp , 0 , SEEK_END);
micbio 3:998f7fb862af 150 lSize = ftell (fp);
micbio 3:998f7fb862af 151 rewind(fp);
micbio 3:998f7fb862af 152
micbio 3:998f7fb862af 153 // copy the file into the buffer:
micbio 3:998f7fb862af 154 result = fread(buffer, 1, lSize, fp);
micbio 3:998f7fb862af 155 if (result != lSize)
micbio 3:998f7fb862af 156 {
micbio 3:998f7fb862af 157 pc.printf("Reading error");
micbio 3:998f7fb862af 158 }
micbio 3:998f7fb862af 159 else
micbio 3:998f7fb862af 160 {
micbio 3:998f7fb862af 161 pc.printf("File: %s.\r\r\n", this->current_path);
micbio 3:998f7fb862af 162 pc.printf("%s\r\r\n", buffer);
micbio 3:998f7fb862af 163 }
micbio 3:998f7fb862af 164
micbio 3:998f7fb862af 165
micbio 3:998f7fb862af 166 this->close_file();
micbio 3:998f7fb862af 167 }