/*
 * Copyright (c) 2019 Alexander Wachter
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef ZEPHYR_SUBSYS_CANBUS_ISOTP_ISOTP_INTERNAL_H_
#define ZEPHYR_SUBSYS_CANBUS_ISOTP_ISOTP_INTERNAL_H_

#include <zephyr/canbus/isotp.h>
#include <zephyr/sys/slist.h>

/* Protocol control information*/
#define ISOTP_PCI_SF 0x00 /* Single frame*/
#define ISOTP_PCI_FF 0x01 /* First frame */
#define ISOTP_PCI_CF 0x02 /* Consecutive frame */
#define ISOTP_PCI_FC 0x03 /* Flow control frame */

#define ISOTP_PCI_TYPE_BYTE        0
#define ISOTP_PCI_TYPE_POS         4
#define ISOTP_PCI_TYPE_MASK        0xF0
#define ISOTP_PCI_TYPE_SF   (ISOTP_PCI_SF << ISOTP_PCI_TYPE_POS)
#define ISOTP_PCI_TYPE_FF   (ISOTP_PCI_FF << ISOTP_PCI_TYPE_POS)
#define ISOTP_PCI_TYPE_CF   (ISOTP_PCI_CF << ISOTP_PCI_TYPE_POS)
#define ISOTP_PCI_TYPE_FC   (ISOTP_PCI_FC << ISOTP_PCI_TYPE_POS)

#define ISOTP_PCI_SF_DL_MASK       0x0F

#define ISOTP_PCI_FF_DL_UPPER_BYTE 0
#define ISOTP_PCI_FF_DL_UPPER_MASK 0x0F
#define ISOTP_PCI_FF_DL_LOWER_BYTE 1

#define ISOTP_PCI_FS_BYTE          0
#define ISOTP_PCI_FS_MASK          0x0F
#define ISOTP_PCI_BS_BYTE          1
#define ISOTP_PCI_ST_MIN_BYTE      2

#define ISOTP_PCI_FS_CTS           0x0
#define ISOTP_PCI_FS_WAIT          0x1
#define ISOTP_PCI_FS_OVFLW         0x2

#define ISOTP_PCI_SN_MASK          0x0F

#define ISOTP_FF_DL_MIN            8
#define ISOTP_PADDED_FRAME_DL_MIN  8
#define ISOTP_PAD_BYTE             0xCC

#define ISOTP_STMIN_MAX            0xFA
#define ISOTP_STMIN_MS_MAX         0x7F
#define ISOTP_STMIN_US_BEGIN       0xF1
#define ISOTP_STMIN_US_END         0xF9

#define ISOTP_WFT_FIRST            0xFF

#define ISOTP_4BIT_SF_MAX_CAN_DL   8

#define ISOTP_BS_TIMEOUT_MS (CONFIG_ISOTP_BS_TIMEOUT)
#define ISOTP_A_TIMEOUT_MS  (CONFIG_ISOTP_A_TIMEOUT)
#define ISOTP_CR_TIMEOUT_MS (CONFIG_ISOTP_CR_TIMEOUT)

/* Just before the sender would time out*/
#define ISOTP_ALLOC_TIMEOUT_MS (CONFIG_ISOTP_A_TIMEOUT - 100)

#ifdef __cplusplus
extern "C" {
#endif

enum isotp_rx_state {
	ISOTP_RX_STATE_WAIT_FF_SF,
	ISOTP_RX_STATE_PROCESS_SF,
	ISOTP_RX_STATE_PROCESS_FF,
	ISOTP_RX_STATE_TRY_ALLOC,
	ISOTP_RX_STATE_SEND_FC,
	ISOTP_RX_STATE_WAIT_CF,
	ISOTP_RX_STATE_SEND_WAIT,
	ISOTP_RX_STATE_ERR,
	ISOTP_RX_STATE_RECYCLE,
	ISOTP_RX_STATE_UNBOUND
};

enum isotp_tx_state {
	ISOTP_TX_STATE_RESET,
	ISOTP_TX_SEND_SF,
	ISOTP_TX_SEND_FF,
	ISOTP_TX_WAIT_FC,
	ISOTP_TX_SEND_CF,
	ISOTP_TX_WAIT_ST,
	ISOTP_TX_WAIT_BACKLOG,
	ISOTP_TX_WAIT_FIN,
	ISOTP_TX_ERR
};

struct isotp_global_ctx {
	sys_slist_t alloc_list;
	sys_slist_t ff_sf_alloc_list;
};

#ifdef __cplusplus
}
#endif

#endif /* ZEPHYR_SUBSYS_CANBUS_ISOTP_ISOTP_INTERNAL_H_ */
