teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Wed Aug 09 20:38:10 2017 +0000
Revision:
9:cf406384efd9
Parent:
7:ae9c47f62946
Child:
10:263c093f8977
Ultima versao com enviaDados na thread comunicacoes;

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 0:1c0a769988ee 4 arquivoSD sdCard::envio;
brunofgc 0:1c0a769988ee 5 arquivoSD sdCard::armazenamento;
brunofgc 0:1c0a769988ee 6 arquivoSD sdCard::config;
brunofgc 0:1c0a769988ee 7 arquivoSD sdCard::devices;
brunofgc 0:1c0a769988ee 8 arquivoSD sdCard::status;
brunofgc 0:1c0a769988ee 9 arquivoSD sdCard::tempFile;
brunofgc 7:ae9c47f62946 10 bool sdCard::arquivosAbertos=false;
brunofgc 0:1c0a769988ee 11
brunofgc 0:1c0a769988ee 12 char sdCard::nomeArquivoEmRecebimento[30];
brunofgc 0:1c0a769988ee 13
brunofgc 0:1c0a769988ee 14
brunofgc 0:1c0a769988ee 15 bool sdCard::deleteSentFiles;
brunofgc 0:1c0a769988ee 16
brunofgc 0:1c0a769988ee 17 SDFileSystem sd(p11, p12, p13, p14, "sd");
brunofgc 0:1c0a769988ee 18
brunofgc 0:1c0a769988ee 19
brunofgc 0:1c0a769988ee 20 bool sdCard::abreArquivo(arquivoSD *arquivo,char *mode){
brunofgc 0:1c0a769988ee 21 //Struct do arquivo e seu nome
brunofgc 7:ae9c47f62946 22 /*uint32_t timeOut=30000;
brunofgc 7:ae9c47f62946 23 while(timeOut && arquivo->aberto){
brunofgc 7:ae9c47f62946 24 timeOut--;
brunofgc 7:ae9c47f62946 25 osDelay(1);
brunofgc 0:1c0a769988ee 26 }
brunofgc 7:ae9c47f62946 27 if(arquivo->aberto){return false;}
brunofgc 7:ae9c47f62946 28 */
brunofgc 7:ae9c47f62946 29 if(!sdCard::arquivoAberto(15000)){return false;}
brunofgc 7:ae9c47f62946 30
brunofgc 7:ae9c47f62946 31 //pc.printf("Abrindo um arquivo de nome <%s> em modo <%s>.\r\n",arquivo->nome,mode);
brunofgc 7:ae9c47f62946 32
brunofgc 0:1c0a769988ee 33 //pc.printf("Abrindo arquivo <%s>.\n",arquivo->nome);
brunofgc 0:1c0a769988ee 34 if((arquivo->fp = fopen(arquivo->nome,mode))!=NULL){
brunofgc 0:1c0a769988ee 35 arquivo->aberto = true;
brunofgc 0:1c0a769988ee 36 return true;
brunofgc 0:1c0a769988ee 37 }else{
brunofgc 0:1c0a769988ee 38 return false;
brunofgc 0:1c0a769988ee 39 }
brunofgc 0:1c0a769988ee 40 }
brunofgc 0:1c0a769988ee 41
brunofgc 0:1c0a769988ee 42 uint16_t sdCard::calcCheckSum16BITFile(char *nome){
brunofgc 0:1c0a769988ee 43 FILE *fp;
brunofgc 0:1c0a769988ee 44 char c;
brunofgc 0:1c0a769988ee 45 uint16_t sum = 0;
brunofgc 0:1c0a769988ee 46
brunofgc 0:1c0a769988ee 47 fp = fopen (nome,"r");
brunofgc 0:1c0a769988ee 48 if(fp != NULL){
brunofgc 0:1c0a769988ee 49 do{
brunofgc 0:1c0a769988ee 50 c = fgetc(fp);
brunofgc 0:1c0a769988ee 51 if(!feof(fp)){sum+=c;}
brunofgc 0:1c0a769988ee 52 }while(!feof(fp));
brunofgc 0:1c0a769988ee 53 fclose(fp);
brunofgc 0:1c0a769988ee 54 }
brunofgc 0:1c0a769988ee 55 return sum;
brunofgc 0:1c0a769988ee 56 }
brunofgc 0:1c0a769988ee 57
brunofgc 7:ae9c47f62946 58 /*bool sdCard::insereDadosArquivoPeloNome(char *nome, char *dados,uint16_t tam){
brunofgc 0:1c0a769988ee 59 FILE *fp;
brunofgc 0:1c0a769988ee 60 fp = fopen(nome,"a");
brunofgc 0:1c0a769988ee 61 uint16_t i;
brunofgc 0:1c0a769988ee 62 if(fp!=NULL){
brunofgc 7:ae9c47f62946 63 sdCard::arquivoAberto = true;
brunofgc 0:1c0a769988ee 64 for(i=0;i<tam;i++){
brunofgc 0:1c0a769988ee 65 fprintf(fp,"%c",dados[i]);
brunofgc 0:1c0a769988ee 66 fflush(fp);
brunofgc 0:1c0a769988ee 67 }
brunofgc 0:1c0a769988ee 68 fclose(fp);
brunofgc 7:ae9c47f62946 69 sdCard::arquivoAberto = false;
brunofgc 0:1c0a769988ee 70 }else{
brunofgc 0:1c0a769988ee 71 return false;
brunofgc 0:1c0a769988ee 72 }
brunofgc 0:1c0a769988ee 73 return true;
brunofgc 7:ae9c47f62946 74 }*/
brunofgc 0:1c0a769988ee 75
brunofgc 0:1c0a769988ee 76 bool sdCard::insereDadosArquivo(arquivoSD *arquivo, char* data,uint16_t tam){
brunofgc 0:1c0a769988ee 77 //Struct do arquivo, dados a inserir e tamanho deles
brunofgc 7:ae9c47f62946 78 uint16_t i;
brunofgc 7:ae9c47f62946 79 if(!sdCard::abreArquivo(arquivo,"a")){
brunofgc 7:ae9c47f62946 80 sdCard::fechaArquivo(arquivo);
brunofgc 7:ae9c47f62946 81 return false;
brunofgc 0:1c0a769988ee 82 }
brunofgc 0:1c0a769988ee 83
brunofgc 0:1c0a769988ee 84 for(i=0;i<tam;i++){
brunofgc 7:ae9c47f62946 85 //fprintf(arquivo->fp,"%c",data[i]);
brunofgc 7:ae9c47f62946 86 fputc(data[i],arquivo->fp);
brunofgc 0:1c0a769988ee 87 fflush(arquivo->fp);
brunofgc 7:ae9c47f62946 88 }
brunofgc 7:ae9c47f62946 89 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 90
brunofgc 0:1c0a769988ee 91 return true;
brunofgc 0:1c0a769988ee 92 }
brunofgc 0:1c0a769988ee 93 bool sdCard::fechaArquivo(arquivoSD* arquivo){
brunofgc 0:1c0a769988ee 94 //Struct do arquivo
brunofgc 0:1c0a769988ee 95 fclose(arquivo->fp);
brunofgc 0:1c0a769988ee 96 arquivo->aberto = false;
brunofgc 0:1c0a769988ee 97 return true;
brunofgc 0:1c0a769988ee 98 }
brunofgc 0:1c0a769988ee 99
brunofgc 7:ae9c47f62946 100 bool sdCard::excluiArquivo(arquivoSD *arquivo){
brunofgc 0:1c0a769988ee 101 if(arquivo->aberto){
brunofgc 7:ae9c47f62946 102 if(!sdCard::fechaArquivo(arquivo)){return false;}
brunofgc 0:1c0a769988ee 103 }
brunofgc 7:ae9c47f62946 104 if(!remove(arquivo->nome)){return false;}
brunofgc 7:ae9c47f62946 105 return true;
brunofgc 0:1c0a769988ee 106 }
brunofgc 0:1c0a769988ee 107
brunofgc 0:1c0a769988ee 108 bool sdCard::exibeArquivo(arquivoSD *arquivo){
brunofgc 7:ae9c47f62946 109 char c;
brunofgc 7:ae9c47f62946 110 if(!sdCard::arquivoAberto(2000)){return false;}
brunofgc 0:1c0a769988ee 111
brunofgc 0:1c0a769988ee 112 if(!sdCard::abreArquivo(arquivo,"r")){
brunofgc 0:1c0a769988ee 113 return false;
brunofgc 7:ae9c47f62946 114 }
brunofgc 0:1c0a769988ee 115
brunofgc 0:1c0a769988ee 116 pc.printf("\n\nInicio do arquivo %s.\n\n",arquivo->nome);
brunofgc 0:1c0a769988ee 117
brunofgc 0:1c0a769988ee 118 do{
brunofgc 0:1c0a769988ee 119 c = fgetc(arquivo->fp);
brunofgc 0:1c0a769988ee 120 if(!feof(arquivo->fp)){pc.printf("%c",c);}
brunofgc 0:1c0a769988ee 121 }while(!feof(arquivo->fp));
brunofgc 0:1c0a769988ee 122 pc.printf("\n\nFim do arquivo %s.\n",arquivo->nome);
brunofgc 0:1c0a769988ee 123 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 124 return true;
brunofgc 0:1c0a769988ee 125 }
brunofgc 0:1c0a769988ee 126
brunofgc 0:1c0a769988ee 127 int sdCard::init(){
brunofgc 0:1c0a769988ee 128 //Inicializando SDCard
brunofgc 0:1c0a769988ee 129
brunofgc 0:1c0a769988ee 130 strcpy(sdCard::envio.nome,"/sd/RAD/envio.txt");
brunofgc 0:1c0a769988ee 131 strcpy(sdCard::armazenamento.nome,"/sd/RAD/armazenamento.txt");
brunofgc 0:1c0a769988ee 132 strcpy(sdCard::config.nome,"/sd/RAD/config.bin");
brunofgc 0:1c0a769988ee 133 strcpy(sdCard::devices.nome,"/sd/RAD/devices.cfg");
brunofgc 0:1c0a769988ee 134 strcpy(sdCard::status.nome,"/sd/RAD/status.txt");
brunofgc 0:1c0a769988ee 135 strcpy(sdCard::tempFile.nome,"/sd/RAD/tempFile.bin");
brunofgc 0:1c0a769988ee 136
brunofgc 7:ae9c47f62946 137 /*if(!sdCard::abreArquivo(&sdCard::config,"r")){
brunofgc 0:1c0a769988ee 138 //Não foi encontrado o arquivo config.bin, então vou criar o diretório
brunofgc 0:1c0a769988ee 139 pc.printf("Nao foi encontrado o arquivo config.bin .\n");
brunofgc 0:1c0a769988ee 140 //Criando o diretorio
brunofgc 0:1c0a769988ee 141 pc.printf("Criando diretorio e arquivo config.bin .\n");
brunofgc 0:1c0a769988ee 142 mkdir("/sd/RAD", 0777);
brunofgc 0:1c0a769988ee 143
brunofgc 0:1c0a769988ee 144 if(sdCard::abreArquivo(&sdCard::config,"w")){
brunofgc 0:1c0a769988ee 145 //Fazer o arquivo de configuração aqui!
brunofgc 0:1c0a769988ee 146 pc.printf("Criado arquivo config.bin .\n");
brunofgc 0:1c0a769988ee 147 fprintf(sdCard::config.fp,"SSID:DROME\r\nPASSWORD:VITAE\r\nPORT:80");
brunofgc 0:1c0a769988ee 148
brunofgc 0:1c0a769988ee 149 }
brunofgc 0:1c0a769988ee 150 }
brunofgc 0:1c0a769988ee 151 //Fechando arquivo de configuração;
brunofgc 0:1c0a769988ee 152 fechaArquivo(&sdCard::config);
brunofgc 7:ae9c47f62946 153 */
brunofgc 0:1c0a769988ee 154 if(!sdCard::abreArquivo(&sdCard::devices,"r")){
brunofgc 0:1c0a769988ee 155 pc.printf("Remota nao parametrizada!!!\n");
brunofgc 0:1c0a769988ee 156 }else{
brunofgc 0:1c0a769988ee 157 fechaArquivo(&sdCard::devices);
brunofgc 0:1c0a769988ee 158 }
brunofgc 0:1c0a769988ee 159 return 1;
brunofgc 0:1c0a769988ee 160 }
brunofgc 0:1c0a769988ee 161
brunofgc 0:1c0a769988ee 162 int sdCard::preparaEnvio(void){
brunofgc 7:ae9c47f62946 163 //Verifico se existe arquivo pendente de envio.
brunofgc 7:ae9c47f62946 164 if(!sdCard::arquivoAberto(5000)){return 2;}
brunofgc 0:1c0a769988ee 165
brunofgc 0:1c0a769988ee 166 if(abreArquivo(&sdCard::envio,"r")){
brunofgc 0:1c0a769988ee 167 pc.printf("Tem um arquivo pendente de envio.\n");
brunofgc 0:1c0a769988ee 168 fechaArquivo(&sdCard::envio);
brunofgc 0:1c0a769988ee 169 return 1;
brunofgc 0:1c0a769988ee 170 }
brunofgc 0:1c0a769988ee 171
brunofgc 9:cf406384efd9 172 sdCard::getFileTam(&sdCard::armazenamento);
brunofgc 9:cf406384efd9 173 if(armazenamento.bytes>46080){
brunofgc 9:cf406384efd9 174 sdCard::excluiArquivo(&sdCard::armazenamento);
brunofgc 9:cf406384efd9 175 }
brunofgc 9:cf406384efd9 176
brunofgc 7:ae9c47f62946 177 //Incluindo o status no envio
brunofgc 7:ae9c47f62946 178 modemCom::writeStatusToSD();
brunofgc 7:ae9c47f62946 179
brunofgc 0:1c0a769988ee 180 if(sdCard::abreArquivo(&sdCard::armazenamento,"r")){
brunofgc 0:1c0a769988ee 181 sdCard::fechaArquivo(&sdCard::armazenamento);
brunofgc 0:1c0a769988ee 182 }else{
brunofgc 7:ae9c47f62946 183 pc.printf("Nao foi encontrado arquivo de armazenamento em preparaEnvio.\n");
brunofgc 7:ae9c47f62946 184 return 0;
brunofgc 7:ae9c47f62946 185 }
brunofgc 1:0e0967c88590 186
brunofgc 0:1c0a769988ee 187 if(!sdCard::file_rename("/sd/RAD/armazenamento.txt","/sd/RAD/envio.txt")){
brunofgc 7:ae9c47f62946 188 pc.printf("Nao foi possivel renomear arquivo para envio.\n");
brunofgc 0:1c0a769988ee 189 return 0;
brunofgc 7:ae9c47f62946 190 }
brunofgc 0:1c0a769988ee 191 return 1;
brunofgc 0:1c0a769988ee 192 }
brunofgc 0:1c0a769988ee 193
brunofgc 0:1c0a769988ee 194 void sdCard::finalizaEnvio(void){
brunofgc 0:1c0a769988ee 195 if(sdCard::envio.aberto){fclose(sdCard::envio.fp);}
brunofgc 0:1c0a769988ee 196 remove(sdCard::envio.nome);
brunofgc 0:1c0a769988ee 197 pc.printf("Deletado o arquivo de envio apos envio do mesmo ao server.\n");
brunofgc 0:1c0a769988ee 198 }
brunofgc 0:1c0a769988ee 199
brunofgc 0:1c0a769988ee 200 bool sdCard::getFileTam(arquivoSD *arquivo){
brunofgc 0:1c0a769988ee 201 uint32_t tam=0;
brunofgc 7:ae9c47f62946 202 uint8_t timeOut = timeOutArquivoAberto;
brunofgc 7:ae9c47f62946 203 if(!sdCard::arquivoAberto(5000)){return false;}
brunofgc 0:1c0a769988ee 204
brunofgc 0:1c0a769988ee 205 if(arquivo->aberto){
brunofgc 0:1c0a769988ee 206 fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 207 }
brunofgc 0:1c0a769988ee 208
brunofgc 7:ae9c47f62946 209 if(sdCard::abreArquivo(arquivo,"r")){
brunofgc 2:55b7b466e742 210 fseek(arquivo->fp, 0, SEEK_END); // seek to end of file
brunofgc 2:55b7b466e742 211 tam = ftell(arquivo->fp); // get current file pointer
brunofgc 2:55b7b466e742 212 fseek(arquivo->fp, 0, SEEK_SET); // seek back to beginning of file
brunofgc 0:1c0a769988ee 213 sdCard::fechaArquivo(arquivo);
brunofgc 0:1c0a769988ee 214 }else{
brunofgc 0:1c0a769988ee 215 return false;
brunofgc 0:1c0a769988ee 216 }
brunofgc 0:1c0a769988ee 217 arquivo->bytes = tam;
brunofgc 0:1c0a769988ee 218 return true;
brunofgc 0:1c0a769988ee 219 }
brunofgc 0:1c0a769988ee 220
brunofgc 7:ae9c47f62946 221 bool sdCard::arquivoAberto(uint16_t timeOut){
brunofgc 7:ae9c47f62946 222 while(
brunofgc 7:ae9c47f62946 223 (sdCard::envio.aberto||sdCard::armazenamento.aberto||sdCard::config.aberto||sdCard::devices.aberto||sdCard::status.aberto||sdCard::tempFile.aberto||sdCard::arquivosAbertos)
brunofgc 7:ae9c47f62946 224 &&
brunofgc 7:ae9c47f62946 225 timeOut){
brunofgc 7:ae9c47f62946 226 timeOut--;
brunofgc 7:ae9c47f62946 227 if((timeOut%1000)==0){pc.printf("Timeout em arquivoAberto()<%lu>.\r\n",timeOut);}
brunofgc 7:ae9c47f62946 228 osDelay(1);
brunofgc 7:ae9c47f62946 229 }
brunofgc 7:ae9c47f62946 230 if(timeOut){return true;}
brunofgc 7:ae9c47f62946 231 else{return false;}
brunofgc 0:1c0a769988ee 232 }
brunofgc 0:1c0a769988ee 233
brunofgc 0:1c0a769988ee 234
brunofgc 9:cf406384efd9 235 /*//***********************************************************
brunofgc 0:1c0a769988ee 236 // file_rename: renames a file (via copy & delete).
brunofgc 0:1c0a769988ee 237 // Moves data instead of adjusting the file name in the
brunofgc 0:1c0a769988ee 238 // file directory. Checks to insure the file was renamed.
brunofgc 9:cf406384efd9 239 // Returns 0 = error; 1 = success
brunofgc 0:1c0a769988ee 240 //***********************************************************
brunofgc 7:ae9c47f62946 241 uint8_t sdCard::file_rename(const char *oldfname, const char *newfname) {
brunofgc 7:ae9c47f62946 242 //rename(oldfname,newfname);
brunofgc 0:1c0a769988ee 243 int retval = 0;
brunofgc 0:1c0a769988ee 244 int ch;
brunofgc 7:ae9c47f62946 245 sdCard::envio.bytes=0;
brunofgc 7:ae9c47f62946 246
brunofgc 7:ae9c47f62946 247 if(!sdCard::arquivoAberto(30000)){return false;}
brunofgc 7:ae9c47f62946 248
brunofgc 7:ae9c47f62946 249
brunofgc 0:1c0a769988ee 250 FILE *fpold = fopen(oldfname, "r"); // src file
brunofgc 7:ae9c47f62946 251
brunofgc 0:1c0a769988ee 252 if(fpold == NULL){
brunofgc 7:ae9c47f62946 253 pc.printf("file_rename 4.\r\n");
brunofgc 7:ae9c47f62946 254 fclose(fpold);
brunofgc 0:1c0a769988ee 255 return 0;
brunofgc 0:1c0a769988ee 256 }
brunofgc 0:1c0a769988ee 257
brunofgc 0:1c0a769988ee 258 FILE *fpnew = fopen(newfname, "w"); // dest file
brunofgc 7:ae9c47f62946 259
brunofgc 7:ae9c47f62946 260 if(fpnew == NULL){
brunofgc 7:ae9c47f62946 261
brunofgc 7:ae9c47f62946 262 fclose(fpnew);
brunofgc 0:1c0a769988ee 263 return 0;
brunofgc 0:1c0a769988ee 264 }
brunofgc 0:1c0a769988ee 265
brunofgc 0:1c0a769988ee 266 pc.printf("Iniciando copia.\n");
brunofgc 0:1c0a769988ee 267
brunofgc 0:1c0a769988ee 268 sdCard::envio.bytes=0;
brunofgc 0:1c0a769988ee 269 ch = fgetc(fpold);
brunofgc 0:1c0a769988ee 270 while(ch != EOF){
brunofgc 0:1c0a769988ee 271 fputc(ch, fpnew);
brunofgc 0:1c0a769988ee 272 ch = fgetc(fpold);
brunofgc 0:1c0a769988ee 273 sdCard::envio.bytes++;
brunofgc 0:1c0a769988ee 274 }
brunofgc 0:1c0a769988ee 275
brunofgc 0:1c0a769988ee 276 fclose(fpnew);
brunofgc 0:1c0a769988ee 277 fclose(fpold);
brunofgc 0:1c0a769988ee 278
brunofgc 0:1c0a769988ee 279 fpnew = fopen(newfname, "r"); // Reopen dest to insure
brunofgc 0:1c0a769988ee 280 if(fpnew == NULL) { // that it was created.
brunofgc 0:1c0a769988ee 281 retval = (0); // Return Error.
brunofgc 0:1c0a769988ee 282 }
brunofgc 0:1c0a769988ee 283 else {
brunofgc 0:1c0a769988ee 284 fclose(fpnew);
brunofgc 0:1c0a769988ee 285 remove(oldfname); // Remove original file.
brunofgc 0:1c0a769988ee 286 retval = (1); // Return Success.
brunofgc 0:1c0a769988ee 287 }
brunofgc 7:ae9c47f62946 288 sdCard::arquivosAbertos=false;
brunofgc 7:ae9c47f62946 289 pc.printf("file_rename retval <%lu>.\r\n",retval);
brunofgc 0:1c0a769988ee 290 return (retval);
brunofgc 9:cf406384efd9 291 }*/
brunofgc 9:cf406384efd9 292
brunofgc 9:cf406384efd9 293 //***********************************************************
brunofgc 9:cf406384efd9 294 // file_rename: renames a file (via copy & delete).
brunofgc 9:cf406384efd9 295 // Moves data instead of adjusting the file name in the
brunofgc 9:cf406384efd9 296 // file directory. Checks to insure the file was renamed.
brunofgc 9:cf406384efd9 297 // Returns 0 = error; 1 = success
brunofgc 9:cf406384efd9 298 //***********************************************************
brunofgc 9:cf406384efd9 299 uint8_t sdCard::file_rename(const char *oldfname, const char *newfname) {
brunofgc 9:cf406384efd9 300 //rename(oldfname,newfname);
brunofgc 9:cf406384efd9 301 #define maxTamFileCopy 128
brunofgc 9:cf406384efd9 302 char bufCopy[maxTamFileCopy];
brunofgc 9:cf406384efd9 303 uint8_t retval = 0;
brunofgc 9:cf406384efd9 304 uint32_t fileSize = 0;
brunofgc 9:cf406384efd9 305 uint32_t fileNumParts = 0;
brunofgc 9:cf406384efd9 306 uint32_t fileEnding=0;
brunofgc 9:cf406384efd9 307 char ch;
brunofgc 9:cf406384efd9 308 uint32_t i,j;
brunofgc 9:cf406384efd9 309 sdCard::envio.bytes=0;
brunofgc 9:cf406384efd9 310
brunofgc 9:cf406384efd9 311 if(!sdCard::arquivoAberto(30000)){return false;}
brunofgc 9:cf406384efd9 312
brunofgc 9:cf406384efd9 313
brunofgc 9:cf406384efd9 314 FILE *fpold = fopen(oldfname, "r"); // src file
brunofgc 9:cf406384efd9 315
brunofgc 9:cf406384efd9 316 if(fpold == NULL){
brunofgc 9:cf406384efd9 317 fclose(fpold);
brunofgc 9:cf406384efd9 318 return 0;
brunofgc 9:cf406384efd9 319 }
brunofgc 9:cf406384efd9 320
brunofgc 9:cf406384efd9 321 sdCard::arquivosAbertos = true;
brunofgc 9:cf406384efd9 322
brunofgc 9:cf406384efd9 323 FILE *fpnew = fopen(newfname, "w"); // dest file
brunofgc 9:cf406384efd9 324
brunofgc 9:cf406384efd9 325 if(fpnew == NULL){
brunofgc 9:cf406384efd9 326 fclose(fpnew);
brunofgc 9:cf406384efd9 327 return 0;
brunofgc 9:cf406384efd9 328 sdCard::arquivosAbertos = false;
brunofgc 9:cf406384efd9 329 }
brunofgc 9:cf406384efd9 330
brunofgc 9:cf406384efd9 331
brunofgc 9:cf406384efd9 332 pc.printf("Iniciando copia.\n");
brunofgc 9:cf406384efd9 333
brunofgc 9:cf406384efd9 334
brunofgc 9:cf406384efd9 335 fseek(fpold, 0, SEEK_END); // seek to end of file
brunofgc 9:cf406384efd9 336 fileSize = ftell(fpold); // get current file pointer
brunofgc 9:cf406384efd9 337 fseek(fpold, 0, SEEK_SET); // seek back to beginning of file
brunofgc 9:cf406384efd9 338
brunofgc 9:cf406384efd9 339 sdCard::envio.bytes=0;
brunofgc 9:cf406384efd9 340
brunofgc 9:cf406384efd9 341 fileNumParts = fileSize/maxTamFileCopy;
brunofgc 9:cf406384efd9 342 fileEnding = fileSize%maxTamFileCopy;
brunofgc 9:cf406384efd9 343 for(i=0;i<fileNumParts;i++){
brunofgc 9:cf406384efd9 344 for(j=0;j<maxTamFileCopy;j++){
brunofgc 9:cf406384efd9 345 bufCopy[j]=fgetc(fpold);
brunofgc 9:cf406384efd9 346 }
brunofgc 9:cf406384efd9 347 for(j=0;j<maxTamFileCopy;j++){
brunofgc 9:cf406384efd9 348 fputc(bufCopy[j],fpnew);
brunofgc 9:cf406384efd9 349 }
brunofgc 9:cf406384efd9 350 }
brunofgc 9:cf406384efd9 351 for(j=0;j<fileEnding;j++){
brunofgc 9:cf406384efd9 352 bufCopy[j]=fgetc(fpold);
brunofgc 9:cf406384efd9 353 }
brunofgc 9:cf406384efd9 354 for(j=0;j<fileEnding;j++){
brunofgc 9:cf406384efd9 355 fputc(bufCopy[j],fpnew);
brunofgc 9:cf406384efd9 356 }
brunofgc 9:cf406384efd9 357 fclose(fpnew);
brunofgc 9:cf406384efd9 358 fclose(fpold);
brunofgc 9:cf406384efd9 359
brunofgc 9:cf406384efd9 360 fpnew = fopen(newfname, "r"); // Reopen dest to insure
brunofgc 9:cf406384efd9 361 if(fpnew == NULL) { // that it was created.
brunofgc 9:cf406384efd9 362 retval = (0); // Return Error.
brunofgc 9:cf406384efd9 363 }
brunofgc 9:cf406384efd9 364 else {
brunofgc 9:cf406384efd9 365 fclose(fpnew);
brunofgc 9:cf406384efd9 366 remove(oldfname); // Remove original file.
brunofgc 9:cf406384efd9 367 retval = (1); // Return Success.
brunofgc 9:cf406384efd9 368 }
brunofgc 9:cf406384efd9 369 sdCard::arquivosAbertos=false;
brunofgc 9:cf406384efd9 370 pc.printf("file_rename retval <%lu>.\r\n",retval);
brunofgc 9:cf406384efd9 371 return (retval);
brunofgc 0:1c0a769988ee 372 }