void selectTables(TableManager *tm) { BinaryFile *bf = newBinaryFile(tm->fileName); if(getBinaryFileSize(bf) > 0) { BinaryFileReader *bfr = newBinaryFileReader(bf, DELIMITER); seekBinaryFile(bf, 0L); long offset = getStreamOffset(bf); while(offset < getBinaryFileSize(bf)) { char *fileName = readString(bfr, offset); setArrayListObject(tm->names, fileName, tm->names->length); offset += (sizeof(char)*(strlen(fileName) + 1)); } deleteBinaryFileReader(bfr); } deleteBinaryFile(bf); }
void saveTables(TableManager *tm) { if(tm->names->length > 0) { BinaryFile *bf = newBinaryFile(tm->fileName); BinaryFileWriter *bfw = newBinaryFileWriter(bf, DELIMITER); overwriteBinaryFile(bf); int i; for(i = 0 ; i < tm->names->length ; i++) { char *fileName = (char *) getArrayListObject(tm->names, i); writeString(bfw, fileName, getBinaryFileSize(bf)); } deleteBinaryFileWriter(bfw); deleteBinaryFile(bf); } }
static enum err_code regpmTransferSlices(char * file_name) { // Constants static const uint8_t SLICE_MAX_TX_ATTEMPTS = 2; static const uint16_t SLICE_N_BYTES = 2112; static const uint16_t SLICE_N_BATCHES = 17; static const uint16_t SLICE_TIME_PROG_MS = 150; enum err_code e_code; uint32_t binary_size_bytes = getBinaryFileSize(file_name); printf("%-5s - File %s size: %lu\n", "DEBUG", file_name, binary_size_bytes); uint32_t number_slices = ceil( (double) binary_size_bytes / (double) SLICE_N_BYTES); printf("%-5s - Number of slices: %lu\n", "DEBUG", number_slices); uint8_t j; for (uint32_t i = 0; i < number_slices; i++) { for (j = 0; j < SLICE_MAX_TX_ATTEMPTS; j++) { printf("%-5s - transfer slice %d, attempt %d\n", "DEBUG", i, j); if ((e_code = regpmTransferSingle(i)) == SCIVS_OK) { break; } } if (j != 0) { printf("%-5s - Failed in slice %d transfer\n", "WARN", i); } if (j == SLICE_MAX_TX_ATTEMPTS) { printf("%-5s - max attempts reached in slice %d transfer\n", "ERROR", i); printf("%-5s - sending abort task...\n", "INFO"); exit(2); } if ( (e_code = regpmProgramSlice(i, SLICE_TIME_PROG_MS)) != SCIVS_OK) { return e_code; } } return SCIVS_OK; }