/*
 * Copyright (c) 2020 InnBlue
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/* Generic header files required by the TFTPC Module. */
#include <zephyr/kernel.h>
#include <errno.h>
#include <zephyr/net/socket.h>

/* Defines for creating static arrays for TFTP communication. */
#define TFTP_HEADER_SIZE         4
#define TFTP_BLOCK_SIZE          512
#define TFTP_MAX_MODE_SIZE       8
#define TFTP_REQ_RETX            CONFIG_TFTPC_REQUEST_RETRANSMITS

/* Maximum amount of data that can be received in a single go ! */
#define TFTPC_MAX_BUF_SIZE       (TFTP_BLOCK_SIZE + TFTP_HEADER_SIZE)

/* Maximum filename size allowed by the TFTP Client. This is used as
 * an upper bound in the "make_request" function to ensure that there
 * are no buffer overflows. The complete "tftpc_buffer" has the size of
 * "TFTPC_MAX_BUF_SIZE" which is used when creating a request. From this
 * total size, we need 2 bytes for request info, 2 dummy NULL bytes and
 * "TFTP_MAX_MODE_SIZE" for mode info. Everything else can be used for
 * filename.
 */
#define TFTP_MAX_FILENAME_SIZE   (TFTPC_MAX_BUF_SIZE - TFTP_MAX_MODE_SIZE - 4)

/* TFTP Opcodes. */
#define READ_REQUEST             0x1
#define WRITE_REQUEST            0x2
#define DATA_OPCODE              0x3
#define ACK_OPCODE               0x4
#define ERROR_OPCODE             0x5

/* Error Codes */

/** Not defined, see error message (if any). */
#define TFTP_ERROR_UNDEF               0
/** File not found. */
#define TFTP_ERROR_NO_FILE             1
/** Access violation. */
#define TFTP_ERROR_ACCESS              2
/** Disk full or allocation exceeded. */
#define TFTP_ERROR_DISK_FULL           3
/** Illegal TFTP operation. */
#define TFTP_ERROR_ILLEGAL_OP          4
/** Unknown transfer ID. */
#define TFTP_ERROR_UNKNOWN_TRANSFER_ID 5
/** File already exists. */
#define TFTP_ERROR_FILE_EXISTS         6
/** No such user. */
#define TFTP_ERROR_NO_USER             7

struct tftphdr_ack {
	uint16_t opcode;
	uint16_t block;
};
