teste de publish

Dependencies:   DS1820 HighSpeedAnalogIn devices mbed

Committer:
brunofgc
Date:
Wed May 10 12:57:13 2017 +0000
Revision:
2:55b7b466e742
Parent:
1:0e0967c88590
Child:
7:ae9c47f62946
Ainda com bug em configRede.htm

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