@@ -244,7 +244,7 @@ int Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len)
244
244
int ret;
245
245
uint8_t rx_buf[CDC_BUF_SIZE];
246
246
RespHeader *dataResp;
247
- RespBadBlock * badBlock;
247
+ RespBadBlock badBlock;
248
248
uint32_t offset = 0 ;
249
249
Cmd cmd = { .code = CMD_NAND_READ };
250
250
ReadCmd readCmd = { .cmd = cmd, .addr = addr, .len = len };
@@ -255,7 +255,7 @@ int Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len)
255
255
while (len)
256
256
{
257
257
serialPort.waitForReadyRead (READ_WRITE_TIMEOUT_MS);
258
- ret = serialPort.read ((char *)rx_buf, sizeof (rx_buf ));
258
+ ret = serialPort.read ((char *)rx_buf, sizeof (RespHeader ));
259
259
if (ret < 0 )
260
260
{
261
261
qCritical () << " Failed to read data " << serialPort.error ()
@@ -275,9 +275,10 @@ int Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len)
275
275
{
276
276
if (dataResp->info == STATUS_BAD_BLOCK)
277
277
{
278
- badBlock = (RespBadBlock *)dataResp;
278
+ if (readRespBadBlockAddress (&badBlock))
279
+ return -1 ;
279
280
qInfo () << " Bad block at" << QString (" 0x%1" ).
280
- arg (badBlock-> addr , 8 , 16 , QLatin1Char (' 0' ));
281
+ arg (badBlock. addr , 8 , 16 , QLatin1Char (' 0' ));
281
282
}
282
283
else
283
284
return handleStatus (dataResp);
@@ -291,11 +292,21 @@ int Programmer::readChip(uint8_t *buf, uint32_t addr, uint32_t len)
291
292
return -1 ;
292
293
}
293
294
294
- ret -= sizeof (RespHeader);
295
+ serialPort.waitForReadyRead (READ_WRITE_TIMEOUT_MS);
296
+ ret = serialPort.read ((char *)dataResp->data , dataResp->info );
297
+ if (ret < 0 )
298
+ {
299
+ qCritical () << " Failed to read data " << serialPort.error ()
300
+ << serialPort.errorString ();
301
+ return -1 ;
302
+ }
303
+
295
304
if (dataResp->info != ret)
296
305
{
297
306
qCritical () << " Programmer error: expected to receive " <<
298
307
dataResp->info << " but received" << ret << " Bytes" ;
308
+ for (int i = 0 ; i < ret; i++)
309
+ qInfo () << dataResp->data [i];
299
310
return -1 ;
300
311
}
301
312
0 commit comments