teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Mon Aug 14 13:59:27 2017 +0000
Revision:
10:263c093f8977
Parent:
9:cf406384efd9
Child:
11:631bea162800
Ultima vers?o instalada na UCSal dia 10/08/2017

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brunofgc 0:1c0a769988ee 1 #include "funcoesSDCard.h"
brunofgc 0:1c0a769988ee 2 #include "serialPC.h"
brunofgc 0:1c0a769988ee 3
brunofgc 10:263c093f8977 4
brunofgc 10:263c093f8977 5 arquivoSD sdCard::bank0;
brunofgc 10:263c093f8977 6 arquivoSD sdCard::bank1;
brunofgc 10:263c093f8977 7 arquivoSD sdCard::currentBankFile;
brunofgc 0:1c0a769988ee 8 arquivoSD sdCard::config;
brunofgc 0:1c0a769988ee 9 arquivoSD sdCard::devices;
brunofgc 0:1c0a769988ee 10 arquivoSD sdCard::status;
brunofgc 0:1c0a769988ee 11 arquivoSD sdCard::tempFile;
brunofgc 10:263c093f8977 12 uint8_t sdCard::currentBank;
brunofgc 7:ae9c47f62946 13 bool sdCard::arquivosAbertos=false;
brunofgc 0:1c0a769988ee 14
brunofgc 0:1c0a769988ee 15 char sdCard::nomeArquivoEmRecebimento[30];
brunofgc 0:1c0a769988ee 16
brunofgc 0:1c0a769988ee 17
brunofgc 0:1c0a769988ee 18 bool sdCard::deleteSentFiles;
brunofgc 0:1c0a769988ee 19
brunofgc 0:1c0a769988ee 20 SDFileSystem sd(p11, p12, p13, p14, "sd");
brunofgc 0:1c0a769988ee 21
brunofgc 0:1c0a769988ee 22
brunofgc 0:1c0a769988ee 23 bool sdCard::abreArquivo(arquivoSD *arquivo,char *mode){
brunofgc 0:1c0a769988ee 24 //Struct do arquivo e seu nome
brunofgc 7:ae9c47f62946 25 /*uint32_t timeOut=30000;
brunofgc 7:ae9c47f62946 26 while(timeOut && arquivo->aberto){
brunofgc 7:ae9c47f62946 27 timeOut--;
brunofgc 7:ae9c47f62946 28 osDelay(1);
brunofgc 0:1c0a769988ee 29 }
brunofgc 7:ae9c47f62946 30 if(arquivo->aberto){return false;}
brunofgc 7:ae9c47f62946 31 */
brunofgc 10:263c093f8977 32 //if(!sdCard::arquivoAberto(15000)){return false;}
brunofgc 7:ae9c47f62946 33
brunofgc 7:ae9c47f62946 34 //pc.printf("Abrindo um arquivo de nome <%s> em modo <%s>.\r\n",arquivo->nome,mode);
brunofgc 7:ae9c47f62946 35
brunofgc 0:1c0a769988ee 36 //pc.printf("Abrindo arquivo <%s>.\n",arquivo->nome);
brunofgc 0:1c0a769988ee 37 if((arquivo->fp = fopen(arquivo->nome,mode))!=NULL){
brunofgc 0:1c0a769988ee 38 arquivo->aberto = true;
brunofgc 0:1c0a769988ee 39 return true;
brunofgc 0:1c0a769988ee 40 }else{
brunofgc 0:1c0a769988ee 41 return false;
brunofgc 0:1c0a769988ee 42 }
brunofgc 0:1c0a769988ee 43 }
brunofgc 0:1c0a769988ee 44
brunofgc 0:1c0a769988ee 45 uint16_t sdCard::calcCheckSum16BITFile(char *nome){
brunofgc 0:1c0a769988ee 46 FILE *fp;
brunofgc 0:1c0a769988ee 47 char c;
brunofgc 0:1c0a769988ee 48 uint16_t sum = 0;
brunofgc 0:1c0a769988ee 49
brunofgc 0:1c0a769988ee 50 fp = fopen (nome,"r");
brunofgc 0:1c0a769988ee 51 if(fp != NULL){
brunofgc 0:1c0a769988ee 52 do{
brunofgc 0:1c0a769988ee 53 c = fgetc(fp);
brunofgc 0:1c0a769988ee 54 if(!feof(fp)){sum+=c;}
brunofgc 0:1c0a769988ee 55 }while(!feof(fp));
brunofgc 0:1c0a769988ee 56 fclose(fp);
brunofgc 0:1c0a769988ee 57 }
brunofgc 0:1c0a769988ee 58 return sum;
brunofgc 0:1c0a769988ee 59 }
brunofgc 0:1c0a769988ee 60
brunofgc 7:ae9c47f62946 61 /*bool sdCard::insereDadosArquivoPeloNome(char *nome, char *dados,uint16_t tam){
brunofgc 0:1c0a769988ee 62 FILE *fp;
brunofgc 0:1c0a769988ee 63 fp = fopen(nome,"a");
brunofgc 0:1c0a769988ee 64 uint16_t i;
brunofgc 0:1c0a769988ee 65 if(fp!=NULL){
brunofgc 7:ae9c47f62946 66 sdCard::arquivoAberto = true;
brunofgc 0:1c0a769988ee 67 for(i=0;i<tam;i++){
brunofgc 0:1c0a769988ee 68 fprintf(fp,"%c",dados[i]);
brunofgc 0:1c0a769988ee 69 fflush(fp);
brunofgc 0:1c0a769988ee 70 }
brunofgc 0:1c0a769988ee 71 fclose(fp);
brunofgc 7:ae9c47f62946 72 sdCard::arquivoAberto = false;
brunofgc 0:1c0a769988ee 73 }else{
brunofgc 0:1c0a769988ee 74 return false;
brunofgc 0:1c0a769988ee 75 }
brunofgc 0:1c0a769988ee 76 return true;
brunofgc 7:ae9c47f62946 77 }*/
brunofgc 0:1c0a769988ee 78
brunofgc 10:263c093f8977 79 uint8_t sdCard::verificaCurrentBank(void){
brunofgc 10:263c093f8977 80 uint8_t currentBank = 3;
brunofgc 10:263c093f8977 81 if(sdCard::abreArquivo(&sdCard::currentBankFile,"r")){
brunofgc 10:263c093f8977 82 pc.printf("sdCard::verificaCurrentBank[1]\r\n");
brunofgc 10:263c093f8977 83 }else{
brunofgc 10:263c093f8977 84 pc.printf("sdCard::verificaCurrentBank[2]\r\n");
brunofgc 10:263c093f8977 85 //Criando bank 0
brunofgc 10:263c093f8977 86 if(sdCard::abreArquivo(&sdCard::bank0,"w")){
brunofgc 10:263c093f8977 87 sdCard::fechaArquivo(&sdCard::bank0);
brunofgc 10:263c093f8977 88 }else{
brunofgc 10:263c093f8977 89 pc.printf("sdCard::verificaCurrentBank[3]\r\n");
brunofgc 10:263c093f8977 90 return 2;
brunofgc 10:263c093f8977 91 }
brunofgc 10:263c093f8977 92 //Criando bank 1
brunofgc 10:263c093f8977 93 if(sdCard::abreArquivo(&sdCard::bank1,"w")){
brunofgc 10:263c093f8977 94 sdCard::fechaArquivo(&sdCard::bank1);
brunofgc 10:263c093f8977 95 }else{
brunofgc 10:263c093f8977 96 pc.printf("sdCard::verificaCurrentBank[4]\r\n");
brunofgc 10:263c093f8977 97 return 2;
brunofgc 10:263c093f8977 98 }
brunofgc 10:263c093f8977 99 //Criando currentBank
brunofgc 10:263c093f8977 100 if(sdCard::abreArquivo(&sdCard::currentBankFile,"w")){
brunofgc 10:263c093f8977 101 fputc('0',sdCard::currentBankFile.fp);
brunofgc 10:263c093f8977 102 fflush(sdCard::currentBankFile.fp);
brunofgc 10:263c093f8977 103 sdCard::fechaArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 104 currentBank = 0;
brunofgc 10:263c093f8977 105 }else{
brunofgc 10:263c093f8977 106 pc.printf("sdCard::verificaCurrentBank[5]\r\n");
brunofgc 10:263c093f8977 107 return 2;
brunofgc 10:263c093f8977 108 }
brunofgc 10:263c093f8977 109 }
brunofgc 10:263c093f8977 110
brunofgc 10:263c093f8977 111 if(currentBank==3){
brunofgc 10:263c093f8977 112 pc.printf("sdCard::verificaCurrentBank[6]\r\n");
brunofgc 10:263c093f8977 113 currentBank = fgetc(sdCard::currentBankFile.fp);
brunofgc 10:263c093f8977 114 currentBank = currentBank - 48;
brunofgc 10:263c093f8977 115 }
brunofgc 10:263c093f8977 116 pc.printf("sdCard::verificaCurrentBank[7]\r\n");
brunofgc 10:263c093f8977 117 sdCard::fechaArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 118 pc.printf("sdCard::verificaCurrentBank[8]\r\n");
brunofgc 10:263c093f8977 119 return currentBank;
brunofgc 10:263c093f8977 120 }
brunofgc 10:263c093f8977 121
brunofgc 10:263c093f8977 122 uint8_t sdCard::modificaCurrentBank(uint8_t newCurrentBank){
brunofgc 10:263c093f8977 123 uint8_t currentBank = sdCard::verificaCurrentBank();
brunofgc 10:263c093f8977 124 if(currentBank == newCurrentBank){
brunofgc 10:263c093f8977 125 return 1;
brunofgc 10:263c093f8977 126 }else{
brunofgc 10:263c093f8977 127 sdCard:excluiArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 128 if(sdCard::abreArquivo(&sdCard::currentBankFile,"w")){
brunofgc 10:263c093f8977 129 if(newCurrentBank){fputc('1',sdCard::currentBankFile.fp);fflush(sdCard::currentBankFile.fp);}
brunofgc 10:263c093f8977 130 else{fputc('0',sdCard::currentBankFile.fp);fflush(sdCard::currentBankFile.fp);}
brunofgc 10:263c093f8977 131 sdCard::fechaArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 132 }else{
brunofgc 10:263c093f8977 133 return 2;
brunofgc 10:263c093f8977 134 }
brunofgc 10:263c093f8977 135 }
brunofgc 10:263c093f8977 136 return 1;
brunofgc 10:263c093f8977 137 }
brunofgc 10:263c093f8977 138
brunofgc 10:263c093f8977 139 bool sdCard::insereDadosBank(char* data,uint16_t tam){
brunofgc 10:263c093f8977 140 //Struct do arquivo, dados a inserir e tamanho deles
brunofgc 10:263c093f8977 141 uint16_t i;
brunofgc 10:263c093f8977 142 arquivoSD *arquivo;
brunofgc 10:263c093f8977 143 sdCard::currentBank = verificaCurrentBank();
brunofgc 10:263c093f8977 144 if(sdCard::currentBank == 2){
brunofgc 10:263c093f8977 145 pc.printf("sdCard::insereDadosBank[1]\r\n");
brunofgc 10:263c093f8977 146 return false;
brunofgc 10:263c093f8977 147 }
brunofgc 10:263c093f8977 148
brunofgc 10:263c093f8977 149 if(sdCard::currentBank){
brunofgc 10:263c093f8977 150 arquivo = &sdCard::bank1;
brunofgc 10:263c093f8977 151 }else{
brunofgc 10:263c093f8977 152 arquivo = &sdCard::bank0;
brunofgc 10:263c093f8977 153 }
brunofgc 10:263c093f8977 154
brunofgc 10:263c093f8977 155 if(!sdCard::abreArquivo(arquivo,"a")){
brunofgc 10:263c093f8977 156 sdCard::fechaArquivo(arquivo);
brunofgc 10:263c093f8977 157 pc.printf("sdCard::insereDadosBank[2]\r\n");
brunofgc 10:263c093f8977 158 return false;
brunofgc 10:263c093f8977 159 }
brunofgc 10:263c093f8977 160
brunofgc 10:263c093f8977 161 for(i=0;i<tam;i++){
brunofgc 10:263c093f8977 162 //fprintf(arquivo->fp,"%c",data[i]);
brunofgc 10:263c093f8977 163 fputc(data[i],arquivo->fp);
brunofgc 10:263c093f8977 164 fflush(arquivo->fp);
brunofgc 10:263c093f8977 165 }
brunofgc 10:263c093f8977 166 sdCard::fechaArquivo(arquivo);
brunofgc 10:263c093f8977 167 pc.printf("sdCard::insereDadosBank[3]\r\n");
brunofgc 10:263c093f8977 168 return true;
brunofgc 10:263c093f8977 169 }
brunofgc 10:263c093f8977 170
brunofgc 0:1c0a769988ee 171 bool sdCard::insereDadosArquivo(arquivoSD *arquivo, char* data,uint16_t tam){
brunofgc 0:1c0a769988ee 172 //Struct do arquivo, dados a inserir e tamanho deles
brunofgc 7:ae9c47f62946 173 uint16_t i;
brunofgc 7:ae9c47f62946 174 if(!sdCard::abreArquivo(arquivo,"a")){
brunofgc 7:ae9c47f62946 175 sdCard::fechaArquivo(arquivo);
brunofgc 7:ae9c47f62946 176 return false;
brunofgc 0:1c0a769988ee 177 }
brunofgc 0:1c0a769988ee 178
brunofgc 0:1c0a769988ee 179 for(i=0;i<tam;i++){
brunofgc 7:ae9c47f62946 180 //fprintf(arquivo->fp,"%c",data[i]);
brunofgc 7:ae9c47f62946 181 fputc(data[i],arquivo->fp);
brunofgc 0:1c0a769988ee 182 fflush(arquivo->fp);
brunofgc 7:ae9c47f62946 183 }
brunofgc 7:ae9c47f62946 184 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 185
brunofgc 0:1c0a769988ee 186 return true;
brunofgc 0:1c0a769988ee 187 }
brunofgc 0:1c0a769988ee 188 bool sdCard::fechaArquivo(arquivoSD* arquivo){
brunofgc 0:1c0a769988ee 189 //Struct do arquivo
brunofgc 0:1c0a769988ee 190 fclose(arquivo->fp);
brunofgc 0:1c0a769988ee 191 arquivo->aberto = false;
brunofgc 0:1c0a769988ee 192 return true;
brunofgc 0:1c0a769988ee 193 }
brunofgc 0:1c0a769988ee 194
brunofgc 10:263c093f8977 195 bool sdCard::excluiArquivo(arquivoSD *arquivo){
brunofgc 0:1c0a769988ee 196 if(arquivo->aberto){
brunofgc 7:ae9c47f62946 197 if(!sdCard::fechaArquivo(arquivo)){return false;}
brunofgc 0:1c0a769988ee 198 }
brunofgc 7:ae9c47f62946 199 if(!remove(arquivo->nome)){return false;}
brunofgc 7:ae9c47f62946 200 return true;
brunofgc 0:1c0a769988ee 201 }
brunofgc 0:1c0a769988ee 202
brunofgc 0:1c0a769988ee 203 bool sdCard::exibeArquivo(arquivoSD *arquivo){
brunofgc 7:ae9c47f62946 204 char c;
brunofgc 7:ae9c47f62946 205 if(!sdCard::arquivoAberto(2000)){return false;}
brunofgc 0:1c0a769988ee 206
brunofgc 0:1c0a769988ee 207 if(!sdCard::abreArquivo(arquivo,"r")){
brunofgc 0:1c0a769988ee 208 return false;
brunofgc 7:ae9c47f62946 209 }
brunofgc 0:1c0a769988ee 210
brunofgc 0:1c0a769988ee 211 pc.printf("\n\nInicio do arquivo %s.\n\n",arquivo->nome);
brunofgc 0:1c0a769988ee 212
brunofgc 0:1c0a769988ee 213 do{
brunofgc 0:1c0a769988ee 214 c = fgetc(arquivo->fp);
brunofgc 0:1c0a769988ee 215 if(!feof(arquivo->fp)){pc.printf("%c",c);}
brunofgc 0:1c0a769988ee 216 }while(!feof(arquivo->fp));
brunofgc 0:1c0a769988ee 217 pc.printf("\n\nFim do arquivo %s.\n",arquivo->nome);
brunofgc 0:1c0a769988ee 218 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 219 return true;
brunofgc 0:1c0a769988ee 220 }
brunofgc 0:1c0a769988ee 221
brunofgc 0:1c0a769988ee 222 int sdCard::init(){
brunofgc 0:1c0a769988ee 223 //Inicializando SDCard
brunofgc 0:1c0a769988ee 224
brunofgc 10:263c093f8977 225 strcpy(sdCard::bank0.nome,"/sd/RAD/bank0.txt");
brunofgc 10:263c093f8977 226 strcpy(sdCard::bank1.nome,"/sd/RAD/bank1.txt");
brunofgc 10:263c093f8977 227 strcpy(sdCard::currentBankFile.nome,"/sd/RAD/currentBank.txt");
brunofgc 0:1c0a769988ee 228 strcpy(sdCard::config.nome,"/sd/RAD/config.bin");
brunofgc 0:1c0a769988ee 229 strcpy(sdCard::devices.nome,"/sd/RAD/devices.cfg");
brunofgc 0:1c0a769988ee 230 strcpy(sdCard::status.nome,"/sd/RAD/status.txt");
brunofgc 10:263c093f8977 231 strcpy(sdCard::tempFile.nome,"/sd/RAD/tempFile.bin");
brunofgc 0:1c0a769988ee 232
brunofgc 0:1c0a769988ee 233 if(!sdCard::abreArquivo(&sdCard::devices,"r")){
brunofgc 0:1c0a769988ee 234 pc.printf("Remota nao parametrizada!!!\n");
brunofgc 0:1c0a769988ee 235 }else{
brunofgc 0:1c0a769988ee 236 fechaArquivo(&sdCard::devices);
brunofgc 10:263c093f8977 237 }
brunofgc 10:263c093f8977 238 sdCard::currentBank = sdCard::verificaCurrentBank();
brunofgc 0:1c0a769988ee 239 return 1;
brunofgc 0:1c0a769988ee 240 }
brunofgc 0:1c0a769988ee 241
brunofgc 10:263c093f8977 242 bool sdCard::deleteBanks(uint8_t bank){
brunofgc 10:263c093f8977 243 switch(bank){
brunofgc 10:263c093f8977 244 case 0:
brunofgc 10:263c093f8977 245 sdCard::excluiArquivo(&sdCard::bank0);
brunofgc 10:263c093f8977 246 sdCard::abreArquivo(&sdCard::bank0,"w");
brunofgc 10:263c093f8977 247 sdCard::fechaArquivo(&sdCard::bank0);
brunofgc 10:263c093f8977 248 break;
brunofgc 10:263c093f8977 249 case 1:
brunofgc 10:263c093f8977 250 sdCard::excluiArquivo(&sdCard::bank1);
brunofgc 10:263c093f8977 251 sdCard::abreArquivo(&sdCard::bank1,"w");
brunofgc 10:263c093f8977 252 sdCard::fechaArquivo(&sdCard::bank1);
brunofgc 10:263c093f8977 253 break;
brunofgc 10:263c093f8977 254 case 2:
brunofgc 10:263c093f8977 255 sdCard::excluiArquivo(&sdCard::bank0);
brunofgc 10:263c093f8977 256 sdCard::abreArquivo(&sdCard::bank0,"w");
brunofgc 10:263c093f8977 257 sdCard::fechaArquivo(&sdCard::bank0);
brunofgc 10:263c093f8977 258 sdCard::excluiArquivo(&sdCard::bank1);
brunofgc 10:263c093f8977 259 sdCard::abreArquivo(&sdCard::bank1,"w");
brunofgc 10:263c093f8977 260 sdCard::fechaArquivo(&sdCard::bank1);
brunofgc 10:263c093f8977 261 sdCard::excluiArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 262 if(sdCard::abreArquivo(&sdCard::currentBankFile,"w")){
brunofgc 10:263c093f8977 263 fputc('0',sdCard::currentBankFile.fp);
brunofgc 10:263c093f8977 264 fflush(sdCard::currentBankFile.fp);
brunofgc 10:263c093f8977 265 sdCard::fechaArquivo(&sdCard::currentBankFile);
brunofgc 10:263c093f8977 266 }
brunofgc 10:263c093f8977 267 break;
brunofgc 10:263c093f8977 268 }
brunofgc 10:263c093f8977 269 return true;
brunofgc 10:263c093f8977 270 }
brunofgc 10:263c093f8977 271
brunofgc 0:1c0a769988ee 272 int sdCard::preparaEnvio(void){
brunofgc 7:ae9c47f62946 273 //Verifico se existe arquivo pendente de envio.
brunofgc 10:263c093f8977 274 //if(!sdCard::arquivoAberto(5000)){return 2;}
brunofgc 7:ae9c47f62946 275 //Incluindo o status no envio
brunofgc 10:263c093f8977 276 modemCom::writeStatusToSD();
brunofgc 0:1c0a769988ee 277 return 1;
brunofgc 0:1c0a769988ee 278 }
brunofgc 0:1c0a769988ee 279
brunofgc 0:1c0a769988ee 280 bool sdCard::getFileTam(arquivoSD *arquivo){
brunofgc 0:1c0a769988ee 281 uint32_t tam=0;
brunofgc 7:ae9c47f62946 282 uint8_t timeOut = timeOutArquivoAberto;
brunofgc 7:ae9c47f62946 283 if(!sdCard::arquivoAberto(5000)){return false;}
brunofgc 0:1c0a769988ee 284
brunofgc 0:1c0a769988ee 285 if(arquivo->aberto){
brunofgc 0:1c0a769988ee 286 fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 287 }
brunofgc 0:1c0a769988ee 288
brunofgc 7:ae9c47f62946 289 if(sdCard::abreArquivo(arquivo,"r")){
brunofgc 2:55b7b466e742 290 fseek(arquivo->fp, 0, SEEK_END); // seek to end of file
brunofgc 2:55b7b466e742 291 tam = ftell(arquivo->fp); // get current file pointer
brunofgc 2:55b7b466e742 292 fseek(arquivo->fp, 0, SEEK_SET); // seek back to beginning of file
brunofgc 0:1c0a769988ee 293 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 294 }else{
brunofgc 0:1c0a769988ee 295 return false;
brunofgc 0:1c0a769988ee 296 }
brunofgc 0:1c0a769988ee 297 arquivo->bytes = tam;
brunofgc 0:1c0a769988ee 298 return true;
brunofgc 0:1c0a769988ee 299 }
brunofgc 0:1c0a769988ee 300
brunofgc 7:ae9c47f62946 301 bool sdCard::arquivoAberto(uint16_t timeOut){
brunofgc 7:ae9c47f62946 302 while(
brunofgc 10:263c093f8977 303 (sdCard::bank0.aberto||sdCard::bank1.aberto||sdCard::currentBankFile.aberto||sdCard::config.aberto||sdCard::devices.aberto||sdCard::status.aberto||sdCard::tempFile.aberto||sdCard::arquivosAbertos)
brunofgc 7:ae9c47f62946 304 &&
brunofgc 7:ae9c47f62946 305 timeOut){
brunofgc 7:ae9c47f62946 306 timeOut--;
brunofgc 7:ae9c47f62946 307 if((timeOut%1000)==0){pc.printf("Timeout em arquivoAberto()<%lu>.\r\n",timeOut);}
brunofgc 7:ae9c47f62946 308 osDelay(1);
brunofgc 7:ae9c47f62946 309 }
brunofgc 7:ae9c47f62946 310 if(timeOut){return true;}
brunofgc 7:ae9c47f62946 311 else{return false;}
brunofgc 0:1c0a769988ee 312 }
brunofgc 0:1c0a769988ee 313
brunofgc 0:1c0a769988ee 314
brunofgc 9:cf406384efd9 315 /*//***********************************************************
brunofgc 0:1c0a769988ee 316 // file_rename: renames a file (via copy & delete).
brunofgc 0:1c0a769988ee 317 // Moves data instead of adjusting the file name in the
brunofgc 0:1c0a769988ee 318 // file directory. Checks to insure the file was renamed.
brunofgc 9:cf406384efd9 319 // Returns 0 = error; 1 = success
brunofgc 0:1c0a769988ee 320 //***********************************************************
brunofgc 7:ae9c47f62946 321 uint8_t sdCard::file_rename(const char *oldfname, const char *newfname) {
brunofgc 7:ae9c47f62946 322 //rename(oldfname,newfname);
brunofgc 0:1c0a769988ee 323 int retval = 0;
brunofgc 0:1c0a769988ee 324 int ch;
brunofgc 7:ae9c47f62946 325 sdCard::envio.bytes=0;
brunofgc 7:ae9c47f62946 326
brunofgc 7:ae9c47f62946 327 if(!sdCard::arquivoAberto(30000)){return false;}
brunofgc 7:ae9c47f62946 328
brunofgc 7:ae9c47f62946 329
brunofgc 0:1c0a769988ee 330 FILE *fpold = fopen(oldfname, "r"); // src file
brunofgc 7:ae9c47f62946 331
brunofgc 0:1c0a769988ee 332 if(fpold == NULL){
brunofgc 7:ae9c47f62946 333 pc.printf("file_rename 4.\r\n");
brunofgc 7:ae9c47f62946 334 fclose(fpold);
brunofgc 0:1c0a769988ee 335 return 0;
brunofgc 0:1c0a769988ee 336 }
brunofgc 0:1c0a769988ee 337
brunofgc 0:1c0a769988ee 338 FILE *fpnew = fopen(newfname, "w"); // dest file
brunofgc 7:ae9c47f62946 339
brunofgc 7:ae9c47f62946 340 if(fpnew == NULL){
brunofgc 7:ae9c47f62946 341
brunofgc 7:ae9c47f62946 342 fclose(fpnew);
brunofgc 0:1c0a769988ee 343 return 0;
brunofgc 0:1c0a769988ee 344 }
brunofgc 0:1c0a769988ee 345
brunofgc 0:1c0a769988ee 346 pc.printf("Iniciando copia.\n");
brunofgc 0:1c0a769988ee 347
brunofgc 0:1c0a769988ee 348 sdCard::envio.bytes=0;
brunofgc 0:1c0a769988ee 349 ch = fgetc(fpold);
brunofgc 0:1c0a769988ee 350 while(ch != EOF){
brunofgc 0:1c0a769988ee 351 fputc(ch, fpnew);
brunofgc 0:1c0a769988ee 352 ch = fgetc(fpold);
brunofgc 0:1c0a769988ee 353 sdCard::envio.bytes++;
brunofgc 0:1c0a769988ee 354 }
brunofgc 0:1c0a769988ee 355
brunofgc 0:1c0a769988ee 356 fclose(fpnew);
brunofgc 0:1c0a769988ee 357 fclose(fpold);
brunofgc 0:1c0a769988ee 358
brunofgc 0:1c0a769988ee 359 fpnew = fopen(newfname, "r"); // Reopen dest to insure
brunofgc 0:1c0a769988ee 360 if(fpnew == NULL) { // that it was created.
brunofgc 0:1c0a769988ee 361 retval = (0); // Return Error.
brunofgc 0:1c0a769988ee 362 }
brunofgc 0:1c0a769988ee 363 else {
brunofgc 0:1c0a769988ee 364 fclose(fpnew);
brunofgc 0:1c0a769988ee 365 remove(oldfname); // Remove original file.
brunofgc 0:1c0a769988ee 366 retval = (1); // Return Success.
brunofgc 0:1c0a769988ee 367 }
brunofgc 7:ae9c47f62946 368 sdCard::arquivosAbertos=false;
brunofgc 7:ae9c47f62946 369 pc.printf("file_rename retval <%lu>.\r\n",retval);
brunofgc 0:1c0a769988ee 370 return (retval);
brunofgc 9:cf406384efd9 371 }*/
brunofgc 9:cf406384efd9 372
brunofgc 10:263c093f8977 373
brunofgc 10:263c093f8977 374
brunofgc 9:cf406384efd9 375 //***********************************************************
brunofgc 9:cf406384efd9 376 // file_rename: renames a file (via copy & delete).
brunofgc 9:cf406384efd9 377 // Moves data instead of adjusting the file name in the
brunofgc 9:cf406384efd9 378 // file directory. Checks to insure the file was renamed.
brunofgc 9:cf406384efd9 379 // Returns 0 = error; 1 = success
brunofgc 9:cf406384efd9 380 //***********************************************************
brunofgc 10:263c093f8977 381
brunofgc 10:263c093f8977 382
brunofgc 10:263c093f8977 383
brunofgc 9:cf406384efd9 384 uint8_t sdCard::file_rename(const char *oldfname, const char *newfname) {
brunofgc 9:cf406384efd9 385 //rename(oldfname,newfname);
brunofgc 9:cf406384efd9 386 #define maxTamFileCopy 128
brunofgc 9:cf406384efd9 387 char bufCopy[maxTamFileCopy];
brunofgc 9:cf406384efd9 388 uint8_t retval = 0;
brunofgc 9:cf406384efd9 389 uint32_t fileSize = 0;
brunofgc 9:cf406384efd9 390 uint32_t fileNumParts = 0;
brunofgc 9:cf406384efd9 391 uint32_t fileEnding=0;
brunofgc 9:cf406384efd9 392 char ch;
brunofgc 10:263c093f8977 393 uint32_t i,j;
brunofgc 10:263c093f8977 394 if(!sdCard::arquivoAberto(30000)){return false;}
brunofgc 9:cf406384efd9 395 FILE *fpold = fopen(oldfname, "r"); // src file
brunofgc 9:cf406384efd9 396
brunofgc 9:cf406384efd9 397 if(fpold == NULL){
brunofgc 9:cf406384efd9 398 fclose(fpold);
brunofgc 9:cf406384efd9 399 return 0;
brunofgc 9:cf406384efd9 400 }
brunofgc 9:cf406384efd9 401
brunofgc 9:cf406384efd9 402 sdCard::arquivosAbertos = true;
brunofgc 9:cf406384efd9 403
brunofgc 9:cf406384efd9 404 FILE *fpnew = fopen(newfname, "w"); // dest file
brunofgc 9:cf406384efd9 405
brunofgc 9:cf406384efd9 406 if(fpnew == NULL){
brunofgc 9:cf406384efd9 407 fclose(fpnew);
brunofgc 9:cf406384efd9 408 return 0;
brunofgc 9:cf406384efd9 409 sdCard::arquivosAbertos = false;
brunofgc 9:cf406384efd9 410 }
brunofgc 9:cf406384efd9 411
brunofgc 9:cf406384efd9 412
brunofgc 9:cf406384efd9 413 pc.printf("Iniciando copia.\n");
brunofgc 9:cf406384efd9 414
brunofgc 9:cf406384efd9 415
brunofgc 9:cf406384efd9 416 fseek(fpold, 0, SEEK_END); // seek to end of file
brunofgc 9:cf406384efd9 417 fileSize = ftell(fpold); // get current file pointer
brunofgc 10:263c093f8977 418 fseek(fpold, 0, SEEK_SET); // seek back to beginning of file
brunofgc 9:cf406384efd9 419
brunofgc 9:cf406384efd9 420
brunofgc 9:cf406384efd9 421 fileNumParts = fileSize/maxTamFileCopy;
brunofgc 9:cf406384efd9 422 fileEnding = fileSize%maxTamFileCopy;
brunofgc 9:cf406384efd9 423 for(i=0;i<fileNumParts;i++){
brunofgc 9:cf406384efd9 424 for(j=0;j<maxTamFileCopy;j++){
brunofgc 9:cf406384efd9 425 bufCopy[j]=fgetc(fpold);
brunofgc 9:cf406384efd9 426 }
brunofgc 9:cf406384efd9 427 for(j=0;j<maxTamFileCopy;j++){
brunofgc 9:cf406384efd9 428 fputc(bufCopy[j],fpnew);
brunofgc 9:cf406384efd9 429 }
brunofgc 9:cf406384efd9 430 }
brunofgc 9:cf406384efd9 431 for(j=0;j<fileEnding;j++){
brunofgc 9:cf406384efd9 432 bufCopy[j]=fgetc(fpold);
brunofgc 9:cf406384efd9 433 }
brunofgc 9:cf406384efd9 434 for(j=0;j<fileEnding;j++){
brunofgc 9:cf406384efd9 435 fputc(bufCopy[j],fpnew);
brunofgc 9:cf406384efd9 436 }
brunofgc 9:cf406384efd9 437 fclose(fpnew);
brunofgc 9:cf406384efd9 438 fclose(fpold);
brunofgc 9:cf406384efd9 439
brunofgc 9:cf406384efd9 440 fpnew = fopen(newfname, "r"); // Reopen dest to insure
brunofgc 9:cf406384efd9 441 if(fpnew == NULL) { // that it was created.
brunofgc 9:cf406384efd9 442 retval = (0); // Return Error.
brunofgc 9:cf406384efd9 443 }
brunofgc 9:cf406384efd9 444 else {
brunofgc 9:cf406384efd9 445 fclose(fpnew);
brunofgc 9:cf406384efd9 446 remove(oldfname); // Remove original file.
brunofgc 9:cf406384efd9 447 retval = (1); // Return Success.
brunofgc 9:cf406384efd9 448 }
brunofgc 9:cf406384efd9 449 sdCard::arquivosAbertos=false;
brunofgc 9:cf406384efd9 450 pc.printf("file_rename retval <%lu>.\r\n",retval);
brunofgc 9:cf406384efd9 451 return (retval);
brunofgc 0:1c0a769988ee 452 }