test seeking in a file on mDot

Dependencies:   libmDot mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }