test seeking in a file on mDot
Dependencies: libmDot mbed-rtos mbed
main.cpp@1:4d3a502a7e58, 2016-08-24 (annotated)
- Committer:
- mfiore
- Date:
- Wed Aug 24 15:54:44 2016 +0000
- Revision:
- 1:4d3a502a7e58
- Parent:
- 0:c5ab0dc979fc
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mfiore | 0:c5ab0dc979fc | 1 | #include "mbed.h" |
mfiore | 0:c5ab0dc979fc | 2 | #include "mDot.h" |
mfiore | 0:c5ab0dc979fc | 3 | #include "MTSLog.h" |
mfiore | 0:c5ab0dc979fc | 4 | #include <vector> |
mfiore | 0:c5ab0dc979fc | 5 | |
mfiore | 1:4d3a502a7e58 | 6 | Serial pc(USBTX, USBRX); |
mfiore | 1:4d3a502a7e58 | 7 | |
mfiore | 0:c5ab0dc979fc | 8 | int main() |
mfiore | 0:c5ab0dc979fc | 9 | { |
mfiore | 0:c5ab0dc979fc | 10 | mDot* dot; |
mfiore | 0:c5ab0dc979fc | 11 | std::vector<mDot::mdot_file> files; |
mfiore | 0:c5ab0dc979fc | 12 | mDot::mdot_file file; |
mfiore | 0:c5ab0dc979fc | 13 | const char filename[] = "test_file.txt"; |
mfiore | 1:4d3a502a7e58 | 14 | uint8_t buf[1024]; |
mfiore | 1:4d3a502a7e58 | 15 | |
mfiore | 1:4d3a502a7e58 | 16 | pc.baud(115200); |
mfiore | 0:c5ab0dc979fc | 17 | |
mfiore | 0:c5ab0dc979fc | 18 | // get a mDot handle |
mfiore | 0:c5ab0dc979fc | 19 | dot = mDot::getInstance(); |
mfiore | 1:4d3a502a7e58 | 20 | dot->resetConfig(); |
mfiore | 1:4d3a502a7e58 | 21 | dot->saveConfig(); |
mfiore | 1:4d3a502a7e58 | 22 | |
mfiore | 1:4d3a502a7e58 | 23 | mts::MTSLog::setLogLevel(mts::MTSLog::INFO_LEVEL); |
mfiore | 0:c5ab0dc979fc | 24 | |
mfiore | 0:c5ab0dc979fc | 25 | // print library version information |
mfiore | 0:c5ab0dc979fc | 26 | logInfo("version: %s", dot->getId().c_str()); |
mfiore | 0:c5ab0dc979fc | 27 | |
mfiore | 1:4d3a502a7e58 | 28 | logInfo("deleting user files"); |
mfiore | 0:c5ab0dc979fc | 29 | files = dot->listUserFiles(); |
mfiore | 0:c5ab0dc979fc | 30 | for (std::vector<mDot::mdot_file>::iterator it = files.begin(); it != files.end(); it++) { |
mfiore | 1:4d3a502a7e58 | 31 | printf("\tdeleting %s [%d]\r\n", it->name, it->size); |
mfiore | 0:c5ab0dc979fc | 32 | dot->deleteUserFile(it->name); |
mfiore | 0:c5ab0dc979fc | 33 | } |
mfiore | 0:c5ab0dc979fc | 34 | |
mfiore | 1:4d3a502a7e58 | 35 | memset(buf, 0x3B, sizeof(buf)); |
mfiore | 1:4d3a502a7e58 | 36 | |
mfiore | 1:4d3a502a7e58 | 37 | logInfo("creating 1kB file of 0x3B"); |
mfiore | 1:4d3a502a7e58 | 38 | file = dot->openUserFile(filename, mDot::FM_RDWR | mDot::FM_CREAT | mDot::FM_APPEND); |
mfiore | 1:4d3a502a7e58 | 39 | if (file.fd < 0) { |
mfiore | 1:4d3a502a7e58 | 40 | logError("failed to open file"); |
mfiore | 1:4d3a502a7e58 | 41 | } else { |
mfiore | 1:4d3a502a7e58 | 42 | if (dot->writeUserFile(file, (void*)buf, sizeof(buf)) != sizeof(buf)) { |
mfiore | 1:4d3a502a7e58 | 43 | logError("didn't write entire buffer"); |
mfiore | 1:4d3a502a7e58 | 44 | } |
mfiore | 0:c5ab0dc979fc | 45 | |
mfiore | 1:4d3a502a7e58 | 46 | dot->closeUserFile(file); |
mfiore | 1:4d3a502a7e58 | 47 | } |
mfiore | 0:c5ab0dc979fc | 48 | |
mfiore | 1:4d3a502a7e58 | 49 | for (int i = 0; i < 10; i++) { |
mfiore | 1:4d3a502a7e58 | 50 | uint8_t buf[8]; |
mfiore | 1:4d3a502a7e58 | 51 | uint32_t loc; |
mfiore | 1:4d3a502a7e58 | 52 | |
mfiore | 1:4d3a502a7e58 | 53 | memset(buf, 0xA2, sizeof(buf)); |
mfiore | 1:4d3a502a7e58 | 54 | |
mfiore | 1:4d3a502a7e58 | 55 | file = dot->openUserFile(filename, mDot::FM_RDWR); |
mfiore | 0:c5ab0dc979fc | 56 | if (file.fd < 0) { |
mfiore | 0:c5ab0dc979fc | 57 | logError("failed to open file"); |
mfiore | 0:c5ab0dc979fc | 58 | break; |
mfiore | 0:c5ab0dc979fc | 59 | } else { |
mfiore | 1:4d3a502a7e58 | 60 | loc = (uint32_t)(rand() % (file.size - sizeof(buf))); |
mfiore | 1:4d3a502a7e58 | 61 | logInfo("seeking to 0x%04X", loc); |
mfiore | 1:4d3a502a7e58 | 62 | if (! dot->seekUserFile(file, loc, SEEK_SET)) { |
mfiore | 1:4d3a502a7e58 | 63 | logError("seek failed"); |
mfiore | 1:4d3a502a7e58 | 64 | break; |
mfiore | 1:4d3a502a7e58 | 65 | } |
mfiore | 1:4d3a502a7e58 | 66 | logInfo("writing %d '0xA2' bytes to 0x%04X", sizeof(buf), loc); |
mfiore | 0:c5ab0dc979fc | 67 | if (dot->writeUserFile(file, (void*)buf, sizeof(buf)) != sizeof(buf)) { |
mfiore | 0:c5ab0dc979fc | 68 | logError("didn't write entire buffer"); |
mfiore | 0:c5ab0dc979fc | 69 | break; |
mfiore | 0:c5ab0dc979fc | 70 | } |
mfiore | 0:c5ab0dc979fc | 71 | |
mfiore | 0:c5ab0dc979fc | 72 | dot->closeUserFile(file); |
mfiore | 0:c5ab0dc979fc | 73 | } |
mfiore | 1:4d3a502a7e58 | 74 | } |
mfiore | 1:4d3a502a7e58 | 75 | |
mfiore | 1:4d3a502a7e58 | 76 | file = dot->openUserFile(filename, mDot::FM_RDONLY); |
mfiore | 1:4d3a502a7e58 | 77 | if (file.fd < 0) { |
mfiore | 1:4d3a502a7e58 | 78 | logError("failed to open file"); |
mfiore | 1:4d3a502a7e58 | 79 | } else { |
mfiore | 1:4d3a502a7e58 | 80 | uint8_t buf[16]; |
mfiore | 1:4d3a502a7e58 | 81 | uint32_t read = 0; |
mfiore | 1:4d3a502a7e58 | 82 | uint32_t ret = 0; |
mfiore | 0:c5ab0dc979fc | 83 | |
mfiore | 1:4d3a502a7e58 | 84 | logInfo("file data:"); |
mfiore | 1:4d3a502a7e58 | 85 | while (read < file.size) { |
mfiore | 1:4d3a502a7e58 | 86 | ret = dot->readUserFile(file, (void*)buf, sizeof(buf)); |
mfiore | 1:4d3a502a7e58 | 87 | if (ret > 0) { |
mfiore | 1:4d3a502a7e58 | 88 | printf("0x%04X\t", read); |
mfiore | 1:4d3a502a7e58 | 89 | for (int i = 0; i < ret; i++) { |
mfiore | 1:4d3a502a7e58 | 90 | printf("%02X ", buf[i]); |
mfiore | 1:4d3a502a7e58 | 91 | } |
mfiore | 1:4d3a502a7e58 | 92 | printf("\r\n"); |
mfiore | 1:4d3a502a7e58 | 93 | read += ret; |
mfiore | 1:4d3a502a7e58 | 94 | } else { |
mfiore | 1:4d3a502a7e58 | 95 | logError("error reading file"); |
mfiore | 1:4d3a502a7e58 | 96 | break; |
mfiore | 0:c5ab0dc979fc | 97 | } |
mfiore | 0:c5ab0dc979fc | 98 | } |
mfiore | 0:c5ab0dc979fc | 99 | |
mfiore | 1:4d3a502a7e58 | 100 | dot->closeUserFile(file); |
mfiore | 0:c5ab0dc979fc | 101 | } |
mfiore | 0:c5ab0dc979fc | 102 | |
mfiore | 0:c5ab0dc979fc | 103 | return 0; |
mfiore | 0:c5ab0dc979fc | 104 | } |