@@ -215,8 +215,8 @@ fpc_result_t sfDevFPC2534::parseStatusCommand(fpc_cmd_hdr_t *cmd_hdr, size_t siz
215215
216216 fpc_cmd_status_response_t *status = (fpc_cmd_status_response_t *)cmd_hdr;
217217
218- Serial.printf (" Parsing Status Command: Event: 0x%04X, State: 0x%04X, AppFail: 0x%04X\r\n " , status->event ,
219- status->state , status->app_fail_code );
218+ // Serial.printf("Parsing Status Command: Event: 0x%04X, State: 0x%04X, AppFail: 0x%04X\r\n", status->event,
219+ // status->state, status->app_fail_code);
220220 // TODO: Implement secure interface handling
221221 // if (status->state & STATE_SECURE_INTERFACE)
222222 // {
@@ -544,11 +544,11 @@ fpc_result_t sfDevFPC2534::parseCommand(uint8_t *payload, size_t size)
544544 if (payload == nullptr || size == 0 )
545545 return FPC_RESULT_INVALID_PARAM;
546546
547- Serial.printf (" Parsing command of size %d\n\r " , size);
547+ // Serial.printf("Parsing command of size %d\n\r", size);
548548
549549 fpc_cmd_hdr_t *cmdHeader = (fpc_cmd_hdr_t *)payload;
550550
551- Serial.printf (" Command ID: 0x%02X, Type: 0x%02X\n\r " , cmdHeader->cmd_id , cmdHeader->type );
551+ // Serial.printf("Command ID: 0x%02X, Type: 0x%02X\n\r", cmdHeader->cmd_id, cmdHeader->type);
552552 // look legit?
553553 if (cmdHeader->type != FPC_FRAME_TYPE_CMD_EVENT && cmdHeader->type != FPC_FRAME_TYPE_CMD_RESPONSE)
554554 return FPC_RESULT_INVALID_PARAM;
@@ -638,36 +638,46 @@ fpc_result_t sfDevFPC2534::processNextResponse(bool flushNone)
638638
639639 fpc_frame_hdr_t frameHeader;
640640
641+ _comm->beginRead ();
641642 /* Step 1: Read Frame Header */
642643 fpc_result_t rc = _comm->read ((uint8_t *)&frameHeader, sizeof (fpc_frame_hdr_t ));
643644
644645 // No data? No problem
645646 if (rc == FPC_RESULT_IO_NO_DATA)
646647 {
647- // response.type = SFE_FPC_RESP_NONE ;
648+ _comm-> endRead () ;
648649 return FPC_RESULT_OK; // No data to process, just return
649650 }
650651 else if (rc != FPC_RESULT_OK)
652+ {
653+ _comm->endRead ();
651654 return rc;
655+ }
652656
653657 // Debug output - helpful when developing
654- Serial.printf (" Frame Header: ver 0x%04X, type 0x%02X, flags 0x%04X, payload size %d\n\r " , frameHeader.version ,
655- frameHeader.type , frameHeader.flags , frameHeader.payload_size );
658+ // Serial.printf("Frame Header: ver 0x%04X, type 0x%02X, flags 0x%04X, payload size %d\n\r", frameHeader.version,
659+ // frameHeader.type, frameHeader.flags, frameHeader.payload_size);
656660
657661 // Sanity check of the header...
658662 if (frameHeader.version != FPC_FRAME_PROTOCOL_VERSION ||
659- ((frameHeader.flags & ( FPC_FRAME_FLAG_SENDER_FW_APP | FPC_FRAME_FLAG_SENDER_FW_BL) ) == 0 ) ||
663+ ((frameHeader.flags & FPC_FRAME_FLAG_SENDER_FW_APP) == 0 ) ||
660664 (frameHeader.type != FPC_FRAME_TYPE_CMD_RESPONSE && frameHeader.type != FPC_FRAME_TYPE_CMD_EVENT))
665+ {
666+ // Serial.println("Bad frame header");
667+ _comm->endRead ();
661668 return FPC_RESULT_IO_BAD_DATA;
669+ }
662670
663671 // okay, lets read the payload
664672 uint8_t framePayload[frameHeader.payload_size ];
665673
666674 rc = _comm->read (framePayload, frameHeader.payload_size );
667-
675+ _comm-> endRead ();
668676 if (rc != FPC_RESULT_OK)
677+ {
678+ Serial.printf (" Error reading payload: %d\n\r " , rc);
669679 return rc;
670-
680+ }
671681 // if we are flushing NONE events, and this is one, just return
672682 if (flushNone)
673683 {
@@ -691,7 +701,7 @@ fpc_result_t sfDevFPC2534::setLED(bool ledOn)
691701 requestSetGPIO (1 , GPIO_CONTROL_MODE_OUTPUT_PP, ledOn ? GPIO_CONTROL_STATE_SET : GPIO_CONTROL_STATE_RESET);
692702 if (rc == FPC_RESULT_OK)
693703 {
694- delay (20 );
704+ delay (50 );
695705 flushNoneEvent ();
696706 }
697707 return rc;
0 commit comments