/******************************************************************************
 *
 * Copyright 2017, Lattice Semiconductor, Inc. All rights reserved.
 * No part of this work may be reproduced, modified, distributed, transmitted,
 * transcribed, or translated into any language or computer format, in any form
 * or by any means without written permission of Lattice Semiconductor Inc.,
 * 111 SW 5th Ave, Suite 700, Portland, OR 97204.
 *
 *****************************************************************************/
/**
 * @file sii_lib_pipe_api.h
 *
 * @brief FIFO logging library
 *
 ************************************************************************/
#ifndef SI_LIB_PIPE_API_H
#define SI_LIB_PIPE_API_H

/* Enable Log Queue buffer */
/*#define SII_LOG_QUEUE*/

#include "sii_datatypes.h"

/************************************************************************/
/*  Type Definitions                                                    */
/************************************************************************/
enum sii_lib_pipe_error {
	SII_LIB_PIPE_ERROR_NONE,
	SII_LIB_PIPE_ERROR_EMPTY,
	SII_LIB_PIPE_ERROR_FULL
};

/************************************************************************/
/*	Function Prototype                                              */
/************************************************************************/

sii_inst_t sii_lib_pipe_create(const char *name_str,
		uint16_t volume, uint8_t obj_size);
void sii_lib_pipe_delete(sii_inst_t inst);

enum sii_lib_pipe_error sii_lib_pipe_write(sii_inst_t inst, void *p_data);
enum sii_lib_pipe_error sii_lib_pipe_read(sii_inst_t inst, void *p_data);
enum sii_lib_pipe_error sii_lib_pipe_check(sii_inst_t inst, void *p_data);

uint16_t sii_lib_pipe_get_fill_size(sii_inst_t inst);
uint16_t sii_lib_pipe_get_free_size(sii_inst_t inst);
uint16_t sii_lib_pipe_get_total_size(sii_inst_t inst);

#endif /* SI_LIB_PIPE_API_H */
