fixed app termination bugs and session timeout ms value
This commit is contained in:
@@ -92,6 +92,14 @@ void KL_App_ResetLocks(void)
|
||||
app.rom_unlocked_cust = 0;
|
||||
}
|
||||
|
||||
void KL_App_Reset(void)
|
||||
{
|
||||
app.state = KL_APP_IDLE;
|
||||
app.eeprom_unlocked_dfi = 0;
|
||||
app.eeprom_unlocked_dfi_write = 0;
|
||||
app.rom_unlocked_cust = 0;
|
||||
}
|
||||
|
||||
int KL_App_Busy(void)
|
||||
{
|
||||
return (app.state != KL_APP_IDLE && app.state != KL_APP_DONE) ? 1 : 0;
|
||||
|
||||
@@ -52,6 +52,7 @@ void KL_App_Dispatch(const KL_Packet *cmd);
|
||||
int KL_App_Busy(void);
|
||||
int KL_App_Done(void);
|
||||
void KL_App_ResetLocks(void);
|
||||
void KL_App_Reset(void);
|
||||
|
||||
/* DTC list management */
|
||||
void KL_App_SetDTCList(const KL_FaultCode *list, size_t count);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#define KL_W3_MS 11U /* Keyword LSB to MSB */
|
||||
#define KL_HS_RETRY_MS 43U /* Between handshake retries */
|
||||
#define KL_P1_GAP_MS 5U /* ECU inter-byte gap */
|
||||
#define KL_SESSION_TMO_MS 1000U /* Session keepalive timeout */
|
||||
#define KL_SESSION_TMO_MS 5250U /* Session keepalive timeout */
|
||||
#define KL_BYTE_TMO_MS 50U /* Per-byte RX timeout */
|
||||
#define KL_PKT_TMO_MS 800U /* Overall packet RX timeout */
|
||||
#define KL_COMPL_TMO_MS 25U /* Complement wait timeout */
|
||||
|
||||
@@ -236,7 +236,7 @@ static void sess_terminate(void)
|
||||
sess.session_deadline = 0;
|
||||
sess.end_requested = 0;
|
||||
|
||||
KL_App_ResetLocks();
|
||||
KL_App_Reset();
|
||||
KL_Transport_ResetCounter();
|
||||
KL_Transport_TxReset();
|
||||
KL_Transport_RxReset();
|
||||
@@ -337,6 +337,7 @@ void KL_Session_Service(void)
|
||||
sizeof(sess.ident_buf));
|
||||
sess.ident_offset = 0;
|
||||
KL_Phy_RxFlush();
|
||||
sess.session_deadline = HAL_GetTick() + KL_SESSION_TMO_MS;
|
||||
sess.state = KL_SESS_IDENT_SEND;
|
||||
break;
|
||||
}
|
||||
@@ -372,6 +373,10 @@ void KL_Session_Service(void)
|
||||
}
|
||||
|
||||
case KL_SESS_IDENT_WAIT_TX:
|
||||
if (kl_tick_diff(now, sess.session_deadline) >= 0) {
|
||||
sess_terminate();
|
||||
break;
|
||||
}
|
||||
if (KL_Transport_TxDone()) {
|
||||
KL_Transport_TxReset();
|
||||
sess.ident_offset += sess.ident_chunk_len;
|
||||
@@ -392,6 +397,10 @@ void KL_Session_Service(void)
|
||||
break;
|
||||
|
||||
case KL_SESS_IDENT_WAIT_ACK:
|
||||
if (kl_tick_diff(now, sess.session_deadline) >= 0) {
|
||||
sess_terminate();
|
||||
break;
|
||||
}
|
||||
if (KL_Transport_RxDone()) {
|
||||
const KL_Packet *pkt = KL_Transport_GetRxPacket();
|
||||
KL_Transport_RxReset();
|
||||
@@ -484,13 +493,17 @@ void KL_Session_Service(void)
|
||||
}
|
||||
|
||||
case KL_SESS_CMD_RESPONSE:
|
||||
if (sess.end_requested) {
|
||||
if (kl_tick_diff(now, sess.session_deadline) >= 0) {
|
||||
sess_terminate();
|
||||
break;
|
||||
}
|
||||
if (KL_App_Done()) {
|
||||
KL_Session_Kick();
|
||||
sess.state = KL_SESS_READY;
|
||||
if (sess.end_requested) {
|
||||
sess_terminate();
|
||||
} else {
|
||||
KL_Session_Kick();
|
||||
sess.state = KL_SESS_READY;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user