| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | /* * Copyright (c) 2019 Actions Semiconductor Co., Ltd * * SPDX-License-Identifier: Apache-2.0 *//** * @file crc interface */#ifndef CBUF_H_#define CBUF_H_typedef struct{    int32_t read_ptr;    int32_t write_ptr;    int32_t length;    uint32_t capacity;    uint8_t *raw_data;}cbuf_t;typedef struct{    uint8_t *start_addr;    uint32_t read_len;}cbuf_dma_t;static inline int cbuf_get_used_space(cbuf_t *cbuf){    if(!cbuf){        return 0;    }        return cbuf->length;}static inline int cbuf_get_free_space(cbuf_t *cbuf){    if(!cbuf){        return 0;    }    return cbuf->capacity - cbuf->length;}static inline int cbuf_is_init(cbuf_t *cbuf){    if(!cbuf){        return false;    }    return (cbuf->capacity != 0);}static inline int cbuf_is_ptr_valid(cbuf_t *cbuf, uint32_t ptr){    if((ptr >= (uint32_t)cbuf->raw_data) \        && (ptr <= ((uint32_t)cbuf->raw_data + cbuf->capacity))){        return 1;    }else{        return 0;    }}static inline void *cbuf_get_buffer_ptr(cbuf_t *cbuf){    return (void *)cbuf->raw_data;}void cbuf_init(cbuf_t *cbuf, void *buffer, int32_t size);void cbuf_reset(cbuf_t *cbuf);int cbuf_read(cbuf_t *cbuf, void *buffer, int32_t len);int cbuf_write(cbuf_t *cbuf, void *buffer, int32_t len);int cbuf_dma_read(cbuf_t *cbuf, cbuf_dma_t *dma, int32_t read_len);int cbuf_dma_update_read_ptr(cbuf_t *cbuf, int32_t read_len);void cbuf_copy_write_ptr(cbuf_t *src, cbuf_t *dest, uint32_t len);void cbuf_deinit(cbuf_t *cbuf);int cbuf_prepare_read(cbuf_t *cbuf, void *buffer, int32_t len);#endif /* CBUF_H_ */
 |