61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
/*
|
|
* kl_app.h
|
|
* Application layer: command dispatch, handlers, stream sender.
|
|
*/
|
|
|
|
#ifndef KL_APP_H
|
|
#define KL_APP_H
|
|
|
|
#include "kl_protocol.h"
|
|
|
|
/* ================================================================
|
|
* Application states
|
|
* ================================================================ */
|
|
typedef enum {
|
|
KL_APP_IDLE,
|
|
|
|
/* Single response: send response -> wait ACK -> send final ACK */
|
|
KL_APP_RESP_TX,
|
|
KL_APP_RESP_WAIT_TX,
|
|
KL_APP_RESP_WAIT_ACK,
|
|
KL_APP_RESP_FINAL_ACK,
|
|
KL_APP_RESP_FINAL_WAIT,
|
|
|
|
/* Stream response: send chunks -> wait ACK each -> final ACK */
|
|
KL_APP_STREAM_SEND,
|
|
KL_APP_STREAM_WAIT_TX,
|
|
KL_APP_STREAM_WAIT_ACK,
|
|
KL_APP_STREAM_FINAL_ACK,
|
|
KL_APP_STREAM_FINAL_WAIT,
|
|
|
|
/* Simple send (ACK/NAK with no follow-up) */
|
|
KL_APP_SIMPLE_WAIT_TX,
|
|
|
|
KL_APP_DONE
|
|
} KL_AppState;
|
|
|
|
/* ================================================================
|
|
* Fault code structure
|
|
* ================================================================ */
|
|
typedef struct {
|
|
uint8_t dtc;
|
|
uint8_t status;
|
|
uint8_t extra;
|
|
} KL_FaultCode;
|
|
|
|
/* ================================================================
|
|
* API
|
|
* ================================================================ */
|
|
void KL_App_Init(void);
|
|
void KL_App_Service(void);
|
|
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);
|
|
|
|
#endif /* KL_APP_H */
|