Skip to content
Snippets Groups Projects
Commit ae5a82ec authored by Man hing Ling's avatar Man hing Ling
Browse files

Toutes les commandes fonctionnent

parent 514b0b2a
Branches
No related tags found
No related merge requests found
...@@ -398,7 +398,6 @@ void CP(SD_info *sd, char *source_filename, char *destination_filename) { ...@@ -398,7 +398,6 @@ void CP(SD_info *sd, char *source_filename, char *destination_filename) {
char numBuffer[64]; char numBuffer[64];
int destination_offset; int destination_offset;
int source_offset; int source_offset;
int offset;
int numDataBlock; int numDataBlock;
int newDataBlock; int newDataBlock;
...@@ -440,46 +439,54 @@ void CP(SD_info *sd, char *source_filename, char *destination_filename) { ...@@ -440,46 +439,54 @@ void CP(SD_info *sd, char *source_filename, char *destination_filename) {
writeBlock(sd,destination_offset, 0, destination_filename, strlen(destination_filename)); writeBlock(sd,destination_offset, 0, destination_filename, strlen(destination_filename));
// Copier les blocs de données associés au fichier source dans de nouveaux blocs de données pour le fichier destination // Copier les blocs de données associés au fichier source dans de nouveaux blocs de données pour le fichier destination
for (int i = 0; i < MAX_BLOCKS_PER_FILE_DESCRIPTION; i++) { //for (int i = 1; i < MAX_BLOCKS_PER_FILE_DESCRIPTION; i++) {
if (i == 0) { offset = MAX_FILENAME_LENGTH; }
else { offset = 0; }
// Lecture des numéros de bloc dans les blocs de description // Lecture des numéros de bloc dans les blocs de description
for (int byteNum=0; byteNum<BLOCK_SIZE; byteNum+=2) { //for (int byteNum=0; byteNum<BLOCK_SIZE; byteNum+=2) {
readBlock(sd,source_offset + i, offset + byteNum, numBuffer, 2); readBlock(sd,source_offset+1, 0, numBuffer, 2);
numDataBlock = reconstituteNumber(numBuffer); numDataBlock = reconstituteNumber(numBuffer);
//si aucune donnée à copier
if (numDataBlock == 0) { if (numDataBlock == 0) {
printf("\nLa copie de \"%s\" sous le nom \"%s\" a été créée avec succès.\n", source_filename, destination_filename); printf("\nLa copie de \"%s\" sous le nom \"%s\" a été créée avec succès.\n", source_filename, destination_filename);
return; return;
} }
for (int chunkStart = 0; chunkStart < BLOCK_SIZE; chunkStart += CHUNK_SIZE) { //for (int chunkStart = 0; chunkStart < BLOCK_SIZE; chunkStart += //CHUNK_SIZE) {
// On stocke le bloc de données associé au fichier source dans descriptionBuffer // On stocke le bloc de données associé au fichier source dans descriptionBuffer
readBlock(sd,numDataBlock, chunkStart, descriptionBuffer, CHUNK_SIZE); readBlock(sd,numDataBlock, 0, descriptionBuffer, CHUNK_SIZE);
if (chunkStart == 0) {
// Trouver un nouveau bloc de données disponible // Trouver un nouveau bloc de données disponible
newDataBlock = findAvailableBlock(sd); newDataBlock = findAvailableBlock(sd);
char dataBlockNumBuffer[CHUNK_SIZE];
readBlock(sd, newDataBlock, 0, dataBlockNumBuffer, CHUNK_SIZE);
while (dataBlockNumBuffer[0] != 0)
{
newDataBlock++;
readBlock(sd, newDataBlock, 0, dataBlockNumBuffer, CHUNK_SIZE);
}
// Mise à jour de la carte de disponibilités // Mise à jour de la carte de disponibilités
setBlockAvailability(sd,newDataBlock, 1); setBlockAvailability(sd,newDataBlock, 1);
// Ecriture du numéro de bloc dans la description du fichier // Ecriture du numéro de bloc dans la description du fichier
createNumberBuffer(newDataBlock,numBuffer); createNumberBuffer(newDataBlock,numBuffer);
writeBlock(sd,destination_offset+i, offset+byteNum, numBuffer, 2); writeBlock(sd,destination_offset+1, 0, numBuffer, 2);
}
// Ecriture du bloc de données dans le premier bloc disponible // Ecriture du bloc de données dans le premier bloc disponible
writeBlock(sd,newDataBlock, chunkStart, descriptionBuffer, CHUNK_SIZE); writeBlock(sd,newDataBlock, 0, descriptionBuffer, CHUNK_SIZE);
} printf("\nLa copie de \"%s\" sous le nom \"%s\" a été créée avec succès.\n", source_filename, destination_filename);
} //}
}
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
char user_data; char user_data;
...@@ -497,14 +504,11 @@ int main(int argc, char *argv[]) { ...@@ -497,14 +504,11 @@ int main(int argc, char *argv[]) {
printf("Pico ordinateur OK\n\n"); printf("Pico ordinateur OK\n\n");
erase(&sd,0,15000);
current_cmd[0] = '\0'; // Initialise la chaîne vide current_cmd[0] = '\0'; // Initialise la chaîne vide
printf("PicoOrdi>"); printf("PicoOrdi>");
while (1) { while (1) {
_delay_ms(10);
user_data = get_serial(); user_data = get_serial();
if (user_data == '\b'){ if (user_data == '\b'){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment