MDX-20用の改造
Dependencies: FatFileSystemCpp
usbMemory.cpp@8:6e23bf867e38, 2016-12-18 (annotated)
- Committer:
- suupen
- Date:
- Sun Dec 18 08:29:59 2016 +0000
- Revision:
- 8:6e23bf867e38
- Parent:
- 7:a6b950d25e29
- Child:
- 9:280ae971e7cb
add USB check.disk_usbCheck() and Host_Check()
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 4:dc14f62cb09f | 1 | #include "mbed.h" |
suupen | 4:dc14f62cb09f | 2 | #include "MSCFileSystem.h" |
suupen | 4:dc14f62cb09f | 3 | //#include <stat.h> |
suupen | 4:dc14f62cb09f | 4 | #include "string.h" |
suupen | 4:dc14f62cb09f | 5 | |
suupen | 4:dc14f62cb09f | 6 | /* |
suupen | 4:dc14f62cb09f | 7 | ************************************************************************************************************** |
suupen | 4:dc14f62cb09f | 8 | * PRINT CONFIGURATION |
suupen | 4:dc14f62cb09f | 9 | ************************************************************************************************************** |
suupen | 4:dc14f62cb09f | 10 | */ |
suupen | 4:dc14f62cb09f | 11 | |
suupen | 4:dc14f62cb09f | 12 | //#define DEBUG |
suupen | 4:dc14f62cb09f | 13 | #ifdef DEBUG |
suupen | 4:dc14f62cb09f | 14 | #define DEBUG_PRINT(...) printf(__VA_ARGS__) |
suupen | 4:dc14f62cb09f | 15 | #else |
suupen | 4:dc14f62cb09f | 16 | #define DEBUG_PRINT(...) |
suupen | 4:dc14f62cb09f | 17 | #endif // DEBUG |
suupen | 4:dc14f62cb09f | 18 | |
suupen | 4:dc14f62cb09f | 19 | |
suupen | 4:dc14f62cb09f | 20 | #define FSNAME "msc" |
suupen | 4:dc14f62cb09f | 21 | MSCFileSystem msc(FSNAME); |
suupen | 4:dc14f62cb09f | 22 | FILE *fp; |
suupen | 4:dc14f62cb09f | 23 | |
suupen | 4:dc14f62cb09f | 24 | |
suupen | 4:dc14f62cb09f | 25 | |
suupen | 4:dc14f62cb09f | 26 | char fileName[20]; |
suupen | 4:dc14f62cb09f | 27 | char buffer[50]; |
suupen | 4:dc14f62cb09f | 28 | |
suupen | 5:0ee37dbafd9a | 29 | |
suupen | 8:6e23bf867e38 | 30 | /** usb check |
suupen | 8:6e23bf867e38 | 31 | * @return 0:OK 1:NG |
suupen | 8:6e23bf867e38 | 32 | */ |
suupen | 8:6e23bf867e38 | 33 | int usbMemoryCheck(void) |
suupen | 5:0ee37dbafd9a | 34 | { |
suupen | 8:6e23bf867e38 | 35 | return(msc.disk_usbCheck()); |
suupen | 8:6e23bf867e38 | 36 | } |
suupen | 8:6e23bf867e38 | 37 | |
suupen | 8:6e23bf867e38 | 38 | /** usb memory initialize |
suupen | 8:6e23bf867e38 | 39 | * @return 0:OK 1:NG |
suupen | 8:6e23bf867e38 | 40 | */ |
suupen | 8:6e23bf867e38 | 41 | int usbMemoryInitialize(void) |
suupen | 8:6e23bf867e38 | 42 | { |
suupen | 8:6e23bf867e38 | 43 | return(msc.disk_initialize()); |
suupen | 6:d407fe3e0c97 | 44 | } |
suupen | 6:d407fe3e0c97 | 45 | |
suupen | 6:d407fe3e0c97 | 46 | /** File check |
suupen | 6:d407fe3e0c97 | 47 | * @para fileNumber : This number get filename 0,1:first 2: second ... |
suupen | 6:d407fe3e0c97 | 48 | * @para *fileName : get filename |
suupen | 6:d407fe3e0c97 | 49 | * @para *fileNumberMax : .prn file number |
suupen | 6:d407fe3e0c97 | 50 | * @return |
suupen | 6:d407fe3e0c97 | 51 | * false: non file true: file exists |
suupen | 6:d407fe3e0c97 | 52 | */ |
suupen | 6:d407fe3e0c97 | 53 | int32_t fileDetect(int32_t fileNumber, char *fileName, int32_t *fileNumberMax) |
suupen | 6:d407fe3e0c97 | 54 | { |
suupen | 6:d407fe3e0c97 | 55 | uint32_t numMax = 0; |
suupen | 6:d407fe3e0c97 | 56 | int32_t ans = false; |
suupen | 6:d407fe3e0c97 | 57 | |
suupen | 6:d407fe3e0c97 | 58 | DIR *d; |
suupen | 6:d407fe3e0c97 | 59 | struct dirent *p; |
suupen | 6:d407fe3e0c97 | 60 | |
suupen | 6:d407fe3e0c97 | 61 | d = opendir("/" FSNAME); |
suupen | 5:0ee37dbafd9a | 62 | |
suupen | 6:d407fe3e0c97 | 63 | // directory check |
suupen | 6:d407fe3e0c97 | 64 | if ( d != NULL ) { |
suupen | 6:d407fe3e0c97 | 65 | while ( (p = readdir(d)) != NULL ) { |
suupen | 6:d407fe3e0c97 | 66 | if(NULL != strstr(p->d_name, ".prn")) { |
suupen | 6:d407fe3e0c97 | 67 | numMax++; |
suupen | 6:d407fe3e0c97 | 68 | if(numMax == fileNumber) { |
suupen | 6:d407fe3e0c97 | 69 | strcpy(fileName, p->d_name); |
suupen | 6:d407fe3e0c97 | 70 | } |
suupen | 6:d407fe3e0c97 | 71 | DEBUG_PRINT("detect = %s\n",fileName); |
suupen | 6:d407fe3e0c97 | 72 | ans = true; |
suupen | 6:d407fe3e0c97 | 73 | } |
suupen | 6:d407fe3e0c97 | 74 | } |
suupen | 6:d407fe3e0c97 | 75 | *fileNumberMax = numMax; |
suupen | 6:d407fe3e0c97 | 76 | } |
suupen | 8:6e23bf867e38 | 77 | closedir(d); |
suupen | 6:d407fe3e0c97 | 78 | return ans; |
suupen | 6:d407fe3e0c97 | 79 | } |
suupen | 6:d407fe3e0c97 | 80 | |
suupen | 8:6e23bf867e38 | 81 | /** 指示したfileの行数を取得 |
suupen | 8:6e23bf867e38 | 82 | * @param *fileName : 指示するfile name |
suupen | 8:6e23bf867e38 | 83 | * @param *numberLine : 取得した行数 |
suupen | 8:6e23bf867e38 | 84 | * @return false:行数取得できず true:処理成功 |
suupen | 8:6e23bf867e38 | 85 | */ |
suupen | 8:6e23bf867e38 | 86 | int32_t fileSelect(char *fileName, int32_t *numberLine) |
suupen | 4:dc14f62cb09f | 87 | { |
suupen | 5:0ee37dbafd9a | 88 | uint32_t numMax = 0; |
suupen | 4:dc14f62cb09f | 89 | int32_t ans = false; |
suupen | 4:dc14f62cb09f | 90 | |
suupen | 8:6e23bf867e38 | 91 | /* |
suupen | 8:6e23bf867e38 | 92 | DIR *d; |
suupen | 8:6e23bf867e38 | 93 | struct dirent *p; |
suupen | 4:dc14f62cb09f | 94 | |
suupen | 8:6e23bf867e38 | 95 | d = opendir("/" FSNAME); |
suupen | 8:6e23bf867e38 | 96 | */ |
suupen | 8:6e23bf867e38 | 97 | // file check |
suupen | 8:6e23bf867e38 | 98 | sprintf(buffer,"/msc/%s",fileName); |
suupen | 8:6e23bf867e38 | 99 | fp = fopen( buffer, "r"); |
suupen | 4:dc14f62cb09f | 100 | |
suupen | 8:6e23bf867e38 | 101 | if ( fp != NULL ) { |
suupen | 8:6e23bf867e38 | 102 | char buf[256]; |
suupen | 8:6e23bf867e38 | 103 | while ( NULL != fgets(buf, sizeof(buf), fp) ) { |
suupen | 8:6e23bf867e38 | 104 | DEBUG_PRINT("%s", buf); |
suupen | 8:6e23bf867e38 | 105 | numMax++; |
suupen | 8:6e23bf867e38 | 106 | } |
suupen | 8:6e23bf867e38 | 107 | *numberLine = numMax; |
suupen | 8:6e23bf867e38 | 108 | ans = true; |
suupen | 7:a6b950d25e29 | 109 | |
suupen | 8:6e23bf867e38 | 110 | } else { |
suupen | 8:6e23bf867e38 | 111 | // Don't file open |
suupen | 8:6e23bf867e38 | 112 | // nothing |
suupen | 8:6e23bf867e38 | 113 | } |
suupen | 8:6e23bf867e38 | 114 | |
suupen | 8:6e23bf867e38 | 115 | fclose(fp); |
suupen | 6:d407fe3e0c97 | 116 | return ans; |
suupen | 4:dc14f62cb09f | 117 | } |
suupen | 4:dc14f62cb09f | 118 | |
suupen | 8:6e23bf867e38 | 119 | /** 指定した行のデータを取得 |
suupen | 8:6e23bf867e38 | 120 | * @param *fileNmae データを取得するfile Name |
suupen | 8:6e23bf867e38 | 121 | * @param *data : 取得した行データを格納するバッファ |
suupen | 8:6e23bf867e38 | 122 | * @param dataNumber : *dataのbyte数 |
suupen | 8:6e23bf867e38 | 123 | * @param numberLine : 取得する行数 |
suupen | 8:6e23bf867e38 | 124 | * @return false:失敗 true:成功 |
suupen | 8:6e23bf867e38 | 125 | */ |
suupen | 8:6e23bf867e38 | 126 | uint32_t fileOneLineRead(char *fileName, char *data, int32_t dataNumber, int32_t numberLine) |
suupen | 4:dc14f62cb09f | 127 | { |
suupen | 4:dc14f62cb09f | 128 | // static FILE *fp; |
suupen | 4:dc14f62cb09f | 129 | int32_t ans = false; |
suupen | 6:d407fe3e0c97 | 130 | #define bufferNumber 100 |
suupen | 4:dc14f62cb09f | 131 | char buffer[bufferNumber]; |
suupen | 6:d407fe3e0c97 | 132 | |
suupen | 6:d407fe3e0c97 | 133 | sprintf(buffer,"/msc/%s",fileName); |
suupen | 6:d407fe3e0c97 | 134 | |
suupen | 6:d407fe3e0c97 | 135 | fp = fopen( buffer, "r"); |
suupen | 6:d407fe3e0c97 | 136 | if ( fp != NULL ) { |
suupen | 6:d407fe3e0c97 | 137 | for(uint32_t i = 0; i < numberLine; i++) { |
suupen | 6:d407fe3e0c97 | 138 | fgets(buffer, sizeof(buffer), fp); |
suupen | 6:d407fe3e0c97 | 139 | } |
suupen | 4:dc14f62cb09f | 140 | |
suupen | 6:d407fe3e0c97 | 141 | if(NULL != fgets(data, dataNumber, fp)) { |
suupen | 6:d407fe3e0c97 | 142 | DEBUG_PRINT("line = %s\r\n", data); |
suupen | 6:d407fe3e0c97 | 143 | ans = true; |
suupen | 6:d407fe3e0c97 | 144 | } else { |
suupen | 6:d407fe3e0c97 | 145 | // nothing |
suupen | 6:d407fe3e0c97 | 146 | } |
suupen | 6:d407fe3e0c97 | 147 | } else { |
suupen | 6:d407fe3e0c97 | 148 | // Don't file open |
suupen | 6:d407fe3e0c97 | 149 | // nothing |
suupen | 6:d407fe3e0c97 | 150 | } |
suupen | 4:dc14f62cb09f | 151 | |
suupen | 8:6e23bf867e38 | 152 | fclose(fp); |
suupen | 4:dc14f62cb09f | 153 | return ans; |
suupen | 4:dc14f62cb09f | 154 | } |
suupen | 4:dc14f62cb09f | 155 |