int main (void) { FRESULT res; char *dir; BYTE org_osc = OSCCAL; MCUSR = 0; WDTCR = _BV(WDE) | 0b110; /* Enable WDT reset in timeout of 1s */ PORTB = 0b101001; /* Initialize port: - - H L H L L P */ DDRB = 0b111110; sei(); for (;;) { if (pf_mount(&Fs) == FR_OK) { /* Initialize FS */ wdt_reset(); sendDiag(MOUNT_OK); Buff[0] = 0; if (!pf_open("osccal")) pf_read(Buff, 1, &rb); /* Adjust frequency */ OSCCAL = org_osc + Buff[0]; res = pf_opendir(&Dir, dir = "wav"); /* Open sound file directory */ if (res == FR_NO_PATH){ res = pf_opendir(&Dir, dir = ""); /* Open root directory */ sendDiag(OPEN_ROOT_DIR); } else{ sendDiag(OPEN_WAV_DIR); } while (res == FR_OK) { /* Repeat in the dir */ res = pf_readdir(&Dir, 0); /* Rewind dir */ while (res == FR_OK) { /* Play all wav files in the dir */ wdt_reset(); res = pf_readdir(&Dir, &Fno); /* Get a dir entry */ if (res || !Fno.fname[0]){ if(res) sendDiag(DIR_ERROR); else sendDiag(END_OF_DIR); break; } /* Break on error or end of dir */ if (!(Fno.fattrib & (AM_DIR|AM_HID)) && strstr(Fno.fname, ".WAV")){ sendFilename(Fno.fname); wdt_reset(); sendDiag(PLAY_SONG); res = play(dir, Fno.fname); /* Play file */ } sendDiag(FINISH); } } } else{ sendDiag(MOUNT_FAIL); } delay500(); } }
int searchServerInfo(char* progName, char* serverAddress, char* serverPort) { /* Nom du fichier demandé */ char* filename; /* Déclaration de la liste chainée contenant les noms des fichiers disponibles*/ list ma_liste = NULL; /* Set connection with server */ sockcli = sockConnect(serverAddress, serverPort); /* Get list of available files from server */ ma_liste = getFilenameList(sockcli); /* Boucle infinie */ while (true) { /* Print list of available files */ printf("\n\n Fichiers disponibles\n\n"); print_list(ma_liste); printf("\n"); /* Select one file from the list */ filename = menu_choice(ma_liste); /* Send the requested file to the server. */ sendFilename(filename); /* Receive the file content from the server. */ getFileContent(progName, filename, sockcli); } printf("\n[%ld] Fermeture de la socket.\n\n \n", (long int) getpid()); close(sockcli); return EXIT_SUCCESS; }