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