teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Fri Jun 08 22:14:21 2018 +0000
Revision:
38:07d3907b74e5
Parent:
37:0e95c85f0160
teste de publish para compilar no mbed-cli

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