Skip to content

Commit f5b2792

Browse files
committed
Support of read/write/erase for SPI chips
1 parent db633a7 commit f5b2792

File tree

6 files changed

+111
-19
lines changed

6 files changed

+111
-19
lines changed

qt/chip_db.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ class ChipDb
7070
virtual ChipInfo *chipInfoGetById(int id) = 0;
7171
virtual QString getNameByChipId(uint32_t id1, uint32_t id2,
7272
uint32_t id3, uint32_t id4, uint32_t id5) = 0;
73+
virtual uint32_t pageSizeGetByName(const QString &name) = 0;
74+
virtual uint32_t extendedPageSizeGetByName(const QString &name) = 0;
75+
virtual uint32_t totalSizeGetByName(const QString &name) = 0;
76+
virtual uint32_t extendedTotalSizeGetByName(const QString &name) = 0;
7377
virtual uint8_t getHal() = 0;
7478
};
7579

qt/main_window.cpp

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -282,21 +282,21 @@ void MainWindow::slotProgEraseCompleted(int status)
282282
void MainWindow::slotProgEraseProgress(unsigned int progress)
283283
{
284284
uint32_t progressPercent;
285-
int index = ui->chipSelectComboBox->currentIndex();
285+
QString chipName = ui->chipSelectComboBox->currentText();
286286
uint32_t eraseSize = prog->isIncSpare() ?
287-
parallelChipDb.extendedTotalSizeGetById(CHIP_INDEX2ID(index)) :
288-
parallelChipDb.totalSizeGetById(CHIP_INDEX2ID(index));
287+
currentChipDb->extendedTotalSizeGetByName(chipName) :
288+
currentChipDb->totalSizeGetByName(chipName);
289289

290290
progressPercent = progress * 100ULL / eraseSize;
291291
setProgress(progressPercent);
292292
}
293293

294294
void MainWindow::slotProgErase()
295295
{
296-
int index = ui->chipSelectComboBox->currentIndex();
296+
QString chipName = ui->chipSelectComboBox->currentText();
297297
uint32_t eraseSize = prog->isIncSpare() ?
298-
parallelChipDb.extendedTotalSizeGetById(CHIP_INDEX2ID(index)) :
299-
parallelChipDb.totalSizeGetById(CHIP_INDEX2ID(index));
298+
currentChipDb->extendedTotalSizeGetByName(chipName) :
299+
currentChipDb->totalSizeGetByName(chipName);
300300

301301
if (!eraseSize)
302302
{
@@ -339,21 +339,21 @@ void MainWindow::slotProgReadCompleted(int status)
339339
void MainWindow::slotProgReadProgress(unsigned int progress)
340340
{
341341
uint32_t progressPercent;
342-
int index = ui->chipSelectComboBox->currentIndex();
342+
QString chipName = ui->chipSelectComboBox->currentText();
343343
uint32_t readSize = prog->isIncSpare() ?
344-
parallelChipDb.extendedTotalSizeGetById(CHIP_INDEX2ID(index)) :
345-
parallelChipDb.totalSizeGetById(CHIP_INDEX2ID(index));
344+
currentChipDb->extendedTotalSizeGetByName(chipName) :
345+
currentChipDb->totalSizeGetByName(chipName);
346346

347347
progressPercent = progress * 100ULL / readSize;
348348
setProgress(progressPercent);
349349
}
350350

351351
void MainWindow::slotProgRead()
352352
{
353-
int index = ui->chipSelectComboBox->currentIndex();
353+
QString chipName = ui->chipSelectComboBox->currentText();
354354
uint32_t readSize = prog->isIncSpare() ?
355-
parallelChipDb.extendedTotalSizeGetById(CHIP_INDEX2ID(index)) :
356-
parallelChipDb.totalSizeGetById(CHIP_INDEX2ID(index));
355+
currentChipDb->extendedTotalSizeGetByName(chipName) :
356+
currentChipDb->totalSizeGetByName(chipName);
357357

358358
if (!readSize)
359359
{
@@ -401,7 +401,7 @@ void MainWindow::slotProgWriteProgress(unsigned int progress)
401401
void MainWindow::slotProgWrite()
402402
{
403403
int index;
404-
QString name;
404+
QString chipName;
405405
uint32_t pageSize, bufferSize;
406406

407407
if (buffer.isEmpty())
@@ -417,9 +417,10 @@ void MainWindow::slotProgWrite()
417417
return;
418418
}
419419

420+
chipName = ui->chipSelectComboBox->currentText();
420421
pageSize = prog->isIncSpare() ?
421-
parallelChipDb.extendedPageSizeGetById(CHIP_INDEX2ID(index)) :
422-
parallelChipDb.pageSizeGetById(CHIP_INDEX2ID(index));
422+
currentChipDb->extendedPageSizeGetByName(chipName) :
423+
currentChipDb->pageSizeGetByName(chipName);
423424
if (!pageSize)
424425
{
425426
qInfo() << "Chip page size is unknown";
@@ -480,7 +481,6 @@ void MainWindow::slotSelectChip(int selectedChipNum)
480481
{
481482
QString name;
482483
ChipInfo *chipInfo;
483-
uint8_t hal;
484484

485485
if (selectedChipNum <= CHIP_INDEX_DEFAULT)
486486
{
@@ -496,9 +496,9 @@ void MainWindow::slotSelectChip(int selectedChipNum)
496496
}
497497

498498
if ((chipInfo = parallelChipDb.chipInfoGetByName(name)))
499-
hal = parallelChipDb.getHal();
499+
currentChipDb = &parallelChipDb;
500500
else if ((chipInfo = spiChipDb.chipInfoGetByName(name)))
501-
hal = spiChipDb.getHal();
501+
currentChipDb = &spiChipDb;
502502
else
503503
{
504504
qCritical() << "Failed to find chip in DB";
@@ -511,7 +511,7 @@ void MainWindow::slotSelectChip(int selectedChipNum)
511511
SLOT(slotProgSelectCompleted(int)));
512512

513513
if (chipInfo)
514-
prog->confChip(chipInfo, hal);
514+
prog->confChip(chipInfo, currentChipDb->getHal());
515515
}
516516

517517
void MainWindow::slotProgDetectChipReadChipIdCompleted(int status)

qt/parallel_chip_db.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,13 @@ uint32_t ParallelChipDb::pageSizeGetById(int id)
394394
return info ? info->params[CHIP_PARAM_PAGE_SIZE] : 0;
395395
}
396396

397+
uint32_t ParallelChipDb::pageSizeGetByName(const QString &name)
398+
{
399+
ChipInfo *info = chipInfoGetByName(name);
400+
401+
return info ? info->params[CHIP_PARAM_PAGE_SIZE] : 0;
402+
}
403+
397404
uint32_t ParallelChipDb::extendedPageSizeGetById(int id)
398405
{
399406
ChipInfo *info = chipInfoGetById(id);
@@ -405,13 +412,31 @@ uint32_t ParallelChipDb::extendedPageSizeGetById(int id)
405412
info->params[CHIP_PARAM_SPARE_SIZE];
406413
}
407414

415+
uint32_t ParallelChipDb::extendedPageSizeGetByName(const QString &name)
416+
{
417+
ChipInfo *info = chipInfoGetByName(name);
418+
419+
if (!info)
420+
return 0;
421+
422+
return info->params[CHIP_PARAM_PAGE_SIZE] +
423+
info->params[CHIP_PARAM_SPARE_SIZE];
424+
}
425+
408426
uint32_t ParallelChipDb::totalSizeGetById(int id)
409427
{
410428
ChipInfo *info = chipInfoGetById(id);
411429

412430
return info ? info->params[CHIP_PARAM_TOTAL_SIZE] : 0;
413431
}
414432

433+
uint32_t ParallelChipDb::totalSizeGetByName(const QString &name)
434+
{
435+
ChipInfo *info = chipInfoGetByName(name);
436+
437+
return info ? info->params[CHIP_PARAM_TOTAL_SIZE] : 0;
438+
}
439+
415440
uint32_t ParallelChipDb::extendedTotalSizeGetById(int id)
416441
{
417442
uint32_t totalSize, totalSpare;
@@ -427,6 +452,21 @@ uint32_t ParallelChipDb::extendedTotalSizeGetById(int id)
427452
return totalSize + totalSpare;
428453
}
429454

455+
uint32_t ParallelChipDb::extendedTotalSizeGetByName(const QString &name)
456+
{
457+
uint32_t totalSize, totalSpare;
458+
ChipInfo *info = chipInfoGetByName(name);
459+
460+
if (!info)
461+
return 0;
462+
463+
totalSize = info->params[CHIP_PARAM_TOTAL_SIZE];
464+
totalSpare = info->params[CHIP_PARAM_SPARE_SIZE] * (totalSize /
465+
info->params[CHIP_PARAM_PAGE_SIZE]);
466+
467+
return totalSize + totalSpare;
468+
}
469+
430470
void ParallelChipDb::addChip(ChipInfo &chipInfo)
431471
{
432472
chipInfoVector.append(chipInfo);

qt/parallel_chip_db.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@ class ParallelChipDb : public ChipDb
3636
QString getNameByChipId(uint32_t id1, uint32_t id2,
3737
uint32_t id3, uint32_t id4, uint32_t id5);
3838
uint32_t pageSizeGetById(int id);
39+
uint32_t pageSizeGetByName(const QString &name);
3940
uint32_t extendedPageSizeGetById(int id);
41+
uint32_t extendedPageSizeGetByName(const QString &name);
4042
uint32_t totalSizeGetById(int id);
43+
uint32_t totalSizeGetByName(const QString &name);
4144
uint32_t extendedTotalSizeGetById(int id);
45+
uint32_t extendedTotalSizeGetByName(const QString &name);
4246
void addChip(ChipInfo &chipInfo);
4347
void delChip(int index);
4448
int size();

qt/spi_chip_db.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,13 @@ uint32_t SpiChipDb::pageSizeGetById(int id)
394394
return info ? info->params[CHIP_PARAM_PAGE_SIZE] : 0;
395395
}
396396

397+
uint32_t SpiChipDb::pageSizeGetByName(const QString &name)
398+
{
399+
ChipInfo *info = chipInfoGetByName(name);
400+
401+
return info ? info->params[CHIP_PARAM_PAGE_SIZE] : 0;
402+
}
403+
397404
uint32_t SpiChipDb::extendedPageSizeGetById(int id)
398405
{
399406
ChipInfo *info = chipInfoGetById(id);
@@ -405,13 +412,31 @@ uint32_t SpiChipDb::extendedPageSizeGetById(int id)
405412
info->params[CHIP_PARAM_SPARE_SIZE];
406413
}
407414

415+
uint32_t SpiChipDb::extendedPageSizeGetByName(const QString &name)
416+
{
417+
ChipInfo *info = chipInfoGetByName(name);
418+
419+
if (!info)
420+
return 0;
421+
422+
return info->params[CHIP_PARAM_PAGE_SIZE] +
423+
info->params[CHIP_PARAM_SPARE_SIZE];
424+
}
425+
408426
uint32_t SpiChipDb::totalSizeGetById(int id)
409427
{
410428
ChipInfo *info = chipInfoGetById(id);
411429

412430
return info ? info->params[CHIP_PARAM_TOTAL_SIZE] : 0;
413431
}
414432

433+
uint32_t SpiChipDb::totalSizeGetByName(const QString &name)
434+
{
435+
ChipInfo *info = chipInfoGetByName(name);
436+
437+
return info ? info->params[CHIP_PARAM_TOTAL_SIZE] : 0;
438+
}
439+
415440
uint32_t SpiChipDb::extendedTotalSizeGetById(int id)
416441
{
417442
uint32_t totalSize, totalSpare;
@@ -427,6 +452,21 @@ uint32_t SpiChipDb::extendedTotalSizeGetById(int id)
427452
return totalSize + totalSpare;
428453
}
429454

455+
uint32_t SpiChipDb::extendedTotalSizeGetByName(const QString &name)
456+
{
457+
uint32_t totalSize, totalSpare;
458+
ChipInfo *info = chipInfoGetByName(name);
459+
460+
if (!info)
461+
return 0;
462+
463+
totalSize = info->params[CHIP_PARAM_TOTAL_SIZE];
464+
totalSpare = info->params[CHIP_PARAM_SPARE_SIZE] * (totalSize /
465+
info->params[CHIP_PARAM_PAGE_SIZE]);
466+
467+
return totalSize + totalSpare;
468+
}
469+
430470
void SpiChipDb::addChip(ChipInfo &chipInfo)
431471
{
432472
chipInfoVector.append(chipInfo);

qt/spi_chip_db.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,13 @@ class SpiChipDb : public ChipDb
3636
QString getNameByChipId(uint32_t id1, uint32_t id2,
3737
uint32_t id3, uint32_t id4, uint32_t id5);
3838
uint32_t pageSizeGetById(int id);
39+
uint32_t pageSizeGetByName(const QString &name);
3940
uint32_t extendedPageSizeGetById(int id);
41+
uint32_t extendedPageSizeGetByName(const QString &name);
4042
uint32_t totalSizeGetById(int id);
43+
uint32_t totalSizeGetByName(const QString &name);
4144
uint32_t extendedTotalSizeGetById(int id);
45+
uint32_t extendedTotalSizeGetByName(const QString &name);
4246
void addChip(ChipInfo &chipInfo);
4347
void delChip(int index);
4448
int size();

0 commit comments

Comments
 (0)