teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Wed Aug 30 18:42:18 2017 +0000
Revision:
11:631bea162800
Parent:
10:263c093f8977
Child:
13:b9183b4bc049
Ultima vers?o sem kick em watch dog timer dentro do processo de envio de dados.

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