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: EthernetInterface SDFileSystem mbed-rtos mbed
application/file_manager.cpp@3:998f7fb862af, 2016-12-09 (annotated)
- Committer:
- micbio
- Date:
- Fri Dec 09 11:22:47 2016 +0000
- Revision:
- 3:998f7fb862af
dupa
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |