28
28
29
29
void MainWindow::initBufTable ()
30
30
{
31
- buffer = nullptr ;
32
- bufferSize = 0 ;
33
-
34
31
ui->bufferTableView ->setModel (&bufferTableModel);
35
32
QHeaderView *verticalHeader = ui->bufferTableView ->verticalHeader ();
36
33
verticalHeader->setSectionResizeMode (QHeaderView::Fixed);
@@ -43,8 +40,7 @@ void MainWindow::initBufTable()
43
40
void MainWindow::resetBufTable ()
44
41
{
45
42
bufferTableModel.setBuffer (nullptr , 0 );
46
- bufferSize = 0 ;
47
- delete [] buffer;
43
+ buffer.clear ();
48
44
}
49
45
50
46
MainWindow::MainWindow (QWidget *parent) : QMainWindow(parent),
@@ -89,7 +85,6 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
89
85
90
86
MainWindow::~MainWindow ()
91
87
{
92
- delete [] buffer;
93
88
Logger::putInstance ();
94
89
delete ui;
95
90
}
@@ -113,14 +108,8 @@ void MainWindow::slotFileOpen()
113
108
114
109
resetBufTable ();
115
110
fileSize = file.size ();
116
- buffer = new (std::nothrow) uint8_t [fileSize];
117
- if (!buffer)
118
- {
119
- qCritical () << " Failed to allocate memory for read buffer" ;
120
- goto Exit;
121
- }
122
-
123
- ret = file.read ((char *)buffer, fileSize);
111
+ buffer.resize (static_cast <int >(fileSize));
112
+ ret = file.read (reinterpret_cast <char *>(buffer.data ()), fileSize);
124
113
if (ret < 0 )
125
114
{
126
115
qCritical () << " Failed to read file:" << fileName << " , error:" <<
@@ -134,8 +123,8 @@ void MainWindow::slotFileOpen()
134
123
goto Exit;
135
124
}
136
125
137
- bufferSize = fileSize;
138
- bufferTableModel. setBuffer (buffer, fileSize );
126
+ bufferTableModel. setBuffer (buffer. data (),
127
+ static_cast < uint32_t > (buffer. size ()) );
139
128
140
129
Exit:
141
130
file.close ();
@@ -278,20 +267,18 @@ void MainWindow::slotProgErase()
278
267
279
268
void MainWindow::slotProgReadCompleted (int status)
280
269
{
281
- int index = ui->chipSelectComboBox ->currentIndex ();
282
- uint32_t readSize = chipDb.sizeGetById (CHIP_INDEX2ID (index));
283
-
284
270
disconnect (prog, SIGNAL (readChipCompleted (int )), this ,
285
271
SLOT (slotProgReadCompleted (int )));
286
272
287
273
if (status)
288
274
{
289
- delete [] buffer;
275
+ buffer. clear () ;
290
276
return ;
291
277
}
292
278
293
279
qInfo () << " Data has been successfully read" ;
294
- bufferTableModel.setBuffer (buffer, readSize);
280
+ bufferTableModel.setBuffer (buffer.data (),
281
+ static_cast <uint32_t >(buffer.size ()));
295
282
}
296
283
297
284
void MainWindow::slotProgRead ()
@@ -306,19 +293,15 @@ void MainWindow::slotProgRead()
306
293
}
307
294
308
295
resetBufTable ();
309
- buffer = new (std::nothrow) uint8_t [readSize];
310
- if (!buffer)
311
- {
312
- qCritical () << " Failed to allocate memory for read buffer" ;
313
- return ;
314
- }
296
+ buffer.clear ();
297
+ buffer.resize (static_cast <int >(readSize));
315
298
316
299
qInfo () << " Reading data ..." ;
317
300
318
301
connect (prog, SIGNAL (readChipCompleted (int )), this ,
319
302
SLOT (slotProgReadCompleted (int )));
320
303
321
- prog->readChip (buffer, START_ADDRESS, readSize, true );
304
+ prog->readChip (buffer. data () , START_ADDRESS, readSize, true );
322
305
}
323
306
324
307
void MainWindow::slotProgWriteCompleted (int status)
@@ -335,8 +318,9 @@ void MainWindow::slotProgWrite()
335
318
int index;
336
319
QString name;
337
320
uint32_t pageSize;
321
+ uint32_t bufferSize;
338
322
339
- if (!bufferSize )
323
+ if (buffer. isEmpty () )
340
324
{
341
325
qInfo () << " Write buffer is empty" ;
342
326
return ;
@@ -355,12 +339,19 @@ void MainWindow::slotProgWrite()
355
339
return ;
356
340
}
357
341
342
+ bufferSize = static_cast <uint32_t >(buffer.size ());
343
+ if (bufferSize & (pageSize - 1 ))
344
+ {
345
+ bufferSize = (bufferSize + pageSize - 1 ) & ~(pageSize - 1 );
346
+ buffer.resize (static_cast <int >(bufferSize));
347
+ }
348
+
358
349
qInfo () << " Writing data ..." ;
359
350
360
351
connect (prog, SIGNAL (writeChipCompleted (int )), this ,
361
352
SLOT (slotProgWriteCompleted (int )));
362
353
363
- prog->writeChip (buffer, START_ADDRESS, bufferSize, pageSize);
354
+ prog->writeChip (buffer. data () , START_ADDRESS, bufferSize, pageSize);
364
355
}
365
356
366
357
void MainWindow::slotProgReadBadBlocksCompleted (int status)
0 commit comments