Skip to content

Commit 7a95236

Browse files
TofMassilia13320Grom-
authored andcommitted
[core] update stse_frame_receive
1 parent 0b38cd0 commit 7a95236

File tree

1 file changed

+47
-30
lines changed

1 file changed

+47
-30
lines changed

core/stse_frame.c

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -308,30 +308,33 @@ stse_ReturnCode_t stse_frame_receive(stse_Handler_t* pSTSE, stse_frame_t* pFrame
308308
pSTSE->io.BusSpeed,
309309
STSE_FRAME_LENGTH_SIZE + STSE_RSP_FRAME_HEADER_SIZE);
310310

311-
retry_count--;
312-
stse_platform_Delay_ms(STSE_POLLING_RETRY_INTERVAL);
311+
if (ret != STSE_OK)
312+
{
313+
retry_count--;
314+
stse_platform_Delay_ms(STSE_POLLING_RETRY_INTERVAL);
315+
}
313316
}
314317

315318
/* - Verify correct reception*/
316-
if((ret & STSE_RSP_STATUS_MASK)!= STSE_OK)
319+
if(ret != STSE_OK)
317320
{
318-
#ifdef STSAFE_FRAME_DEBUG_LOG
319-
printf("\n\r STSAFE Frame < (1-byte) : { 0x%02X }\n\r", ret);
320-
printf("\n\r");
321-
#endif
322321
return( ret );
323322
}
324323

325324
/* Discard response header */
326-
pSTSE->io.BusRecvContinue(
325+
ret = pSTSE->io.BusRecvContinue(
327326
pSTSE->io.busID,
328327
pSTSE->io.Devaddr,
329328
pSTSE->io.BusSpeed,
330329
NULL,
331330
STSE_RSP_FRAME_HEADER_SIZE);
331+
if(ret != STSE_OK)
332+
{
333+
return( ret );
334+
}
332335

333336
/* - Get STSAFE Response Length */
334-
pSTSE->io.BusRecvStop(
337+
ret = pSTSE->io.BusRecvStop(
335338
pSTSE->io.busID,
336339
pSTSE->io.Devaddr,
337340
pSTSE->io.BusSpeed,
@@ -380,9 +383,12 @@ stse_ReturnCode_t stse_frame_receive(stse_Handler_t* pSTSE, stse_frame_t* pFrame
380383
pSTSE->io.BusSpeed,
381384
STSE_FRAME_LENGTH_SIZE + received_length + STSE_FRAME_CRC_SIZE);
382385

383-
retry_count--;
384-
stse_platform_Delay_ms(STSE_POLLING_RETRY_INTERVAL);
385-
}
386+
if (ret != STSE_OK)
387+
{
388+
retry_count--;
389+
stse_platform_Delay_ms(STSE_POLLING_RETRY_INTERVAL);
390+
}
391+
}
386392

387393
/* - Verify correct reception*/
388394
if(ret != STSE_OK)
@@ -391,45 +397,46 @@ stse_ReturnCode_t stse_frame_receive(stse_Handler_t* pSTSE, stse_frame_t* pFrame
391397
}
392398

393399
/* Receive response header */
394-
pSTSE->io.BusRecvContinue(
400+
ret = pSTSE->io.BusRecvContinue(
395401
pSTSE->io.busID,
396402
pSTSE->io.Devaddr,
397403
pSTSE->io.BusSpeed,
398404
pFrame->first_element->pData,
399405
STSE_RSP_FRAME_HEADER_SIZE);
400-
401-
ret = (stse_ReturnCode_t)(pFrame->first_element->pData[0] & STSE_RSP_STATUS_MASK);
402-
403406
if(ret != STSE_OK)
404407
{
405-
#ifdef STSAFE_FRAME_DEBUG_LOG
406-
printf("\n\r STSAFE Frame < (1-byte) : { 0x%02X }\n\r", ret);
407-
printf("\n\r");
408-
#endif
409408
return( ret );
410409
}
411410

412411
/* Substract response header already read in STSAFE-A */
413412
received_length -= STSE_RSP_FRAME_HEADER_SIZE;
414413

415414
/* Receive and discard length (already stored) */
416-
pSTSE->io.BusRecvContinue(
415+
ret = pSTSE->io.BusRecvContinue(
417416
pSTSE->io.busID,
418417
pSTSE->io.Devaddr,
419418
pSTSE->io.BusSpeed,
420419
NULL,
421420
STSE_FRAME_LENGTH_SIZE);
421+
if(ret != STSE_OK)
422+
{
423+
return( ret );
424+
}
422425

423-
/* If first element is longer than jsut the header */
426+
/* If first element is longer than just the header */
424427
if(pFrame->first_element->length > STSE_RSP_FRAME_HEADER_SIZE)
425428
{
426429
/* Receive missing bytes after discarding the 2 bytes length */
427-
pSTSE->io.BusRecvContinue(
430+
ret = pSTSE->io.BusRecvContinue(
428431
pSTSE->io.busID,
429432
pSTSE->io.Devaddr,
430433
pSTSE->io.BusSpeed,
431434
pFrame->first_element->pData + STSE_RSP_FRAME_HEADER_SIZE,
432435
pFrame->first_element->length - STSE_RSP_FRAME_HEADER_SIZE);
436+
if(ret != STSE_OK)
437+
{
438+
return( ret );
439+
}
433440
}
434441

435442
/* - Perform frame element reception and populate local RSP Frame */
@@ -439,23 +446,31 @@ stse_ReturnCode_t stse_frame_receive(stse_Handler_t* pSTSE, stse_frame_t* pFrame
439446
{
440447
pCurrent_element->length = received_length;
441448
}
442-
pSTSE->io.BusRecvContinue(
449+
ret = pSTSE->io.BusRecvContinue(
443450
pSTSE->io.busID,
444451
pSTSE->io.Devaddr,
445452
pSTSE->io.BusSpeed,
446453
pCurrent_element->pData,
447-
pCurrent_element->length
448-
);
454+
pCurrent_element->length);
455+
if(ret != STSE_OK)
456+
{
457+
return( ret );
458+
}
459+
449460
received_length -= pCurrent_element->length;
450461
pCurrent_element = pCurrent_element->next;
451462
}
452-
pSTSE->io.BusRecvStop(
463+
ret = pSTSE->io.BusRecvStop(
453464
pSTSE->io.busID,
454465
pSTSE->io.Devaddr,
455466
pSTSE->io.BusSpeed,
456467
pCurrent_element->pData,
457-
pCurrent_element->length
458-
);
468+
pCurrent_element->length);
469+
if(ret != STSE_OK)
470+
{
471+
return( ret );
472+
}
473+
459474

460475
#ifdef STSAFE_FRAME_DEBUG_LOG
461476
printf("\n\r STSAFE Frame < ");
@@ -476,7 +491,9 @@ stse_ReturnCode_t stse_frame_receive(stse_Handler_t* pSTSE, stse_frame_t* pFrame
476491
return( STSE_CORE_FRAME_CRC_ERROR );
477492
}
478493

479-
return( STSE_OK );
494+
ret = (stse_ReturnCode_t)(pFrame->first_element->pData[0] & STSE_RSP_STATUS_MASK);
495+
496+
return( ret );
480497
}
481498

482499
stse_ReturnCode_t stse_frame_transfer (stse_Handler_t* pSTSE,

0 commit comments

Comments
 (0)