Files
mr-library/include/mr_api.h

115 lines
2.8 KiB
C
Raw Normal View History

2023-11-11 02:07:22 +08:00
/*
2024-01-02 00:02:48 +08:00
* @copyright (c) 2023-2024, MR Development Team
2023-11-11 02:07:22 +08:00
*
* @license SPDX-License-Identifier: Apache-2.0
*
* @date 2023-10-20 MacRsh First version
*/
#ifndef _MR_API_H_
#define _MR_API_H_
#include "mr_def.h"
#include "mr_service.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
2023-11-11 02:07:22 +08:00
/**
* @addtogroup Interrupt
* @{
2023-11-11 02:07:22 +08:00
*/
void mr_interrupt_disable(void);
void mr_interrupt_enable(void);
/** @} */
/**
* @addtogroup Delay
* @{
2023-11-11 02:07:22 +08:00
*/
void mr_delay_us(uint32_t us);
void mr_delay_ms(uint32_t ms);
/** @} */
/**
* @addtogroup Memory
2023-12-05 00:36:12 +08:00
* @{
2023-11-11 02:07:22 +08:00
*/
2023-12-05 00:36:12 +08:00
void *mr_malloc(size_t size);
void mr_free(void *memory);
size_t mr_malloc_usable_size(void *memory);
void *mr_calloc(size_t num, size_t size);
void *mr_realloc(void *memory, size_t size);
2023-11-11 02:07:22 +08:00
/** @} */
/**
* @addtogroup String
2023-11-11 02:07:22 +08:00
* @{
*/
int mr_printf(const char *fmt, ...);
2023-11-13 01:25:01 +08:00
const char *mr_strerror(int err);
const char *mr_strflags(int flags);
2023-11-11 02:07:22 +08:00
/** @} */
/**
* @addtogroup Auto-init
* @{
2023-11-11 02:07:22 +08:00
*/
2023-12-05 00:36:12 +08:00
void mr_auto_init(void);
2023-11-11 02:07:22 +08:00
/** @} */
/**
* @addtogroup Ringbuffer
2023-11-11 02:07:22 +08:00
* @{
*/
void mr_ringbuf_init(struct mr_ringbuf *ringbuf, void *pool, size_t size);
int mr_ringbuf_allocate(struct mr_ringbuf *ringbuf, size_t size);
void mr_ringbuf_free(struct mr_ringbuf *ringbuf);
void mr_ringbuf_reset(struct mr_ringbuf *ringbuf);
size_t mr_ringbuf_get_data_size(struct mr_ringbuf *ringbuf);
size_t mr_ringbuf_get_space_size(struct mr_ringbuf *ringbuf);
size_t mr_ringbuf_get_bufsz(struct mr_ringbuf *ringbuf);
size_t mr_ringbuf_pop(struct mr_ringbuf *ringbuf, uint8_t *data);
size_t mr_ringbuf_read(struct mr_ringbuf *ringbuf, void *buffer, size_t size);
size_t mr_ringbuf_push(struct mr_ringbuf *ringbuf, uint8_t data);
size_t mr_ringbuf_push_force(struct mr_ringbuf *ringbuf, uint8_t data);
size_t mr_ringbuf_write(struct mr_ringbuf *ringbuf, const void *buffer, size_t size);
size_t mr_ringbuf_write_force(struct mr_ringbuf *ringbuf, const void *buffer, size_t size);
/** @} */
2023-11-18 00:54:01 +08:00
/**
* @addtogroup AVL-tree
2023-11-18 00:54:01 +08:00
* @{
*/
void mr_avl_init(struct mr_avl *node, uint32_t value);
void mr_avl_insert(struct mr_avl **tree, struct mr_avl *node);
void mr_avl_remove(struct mr_avl **tree, struct mr_avl *node);
struct mr_avl *mr_avl_find(struct mr_avl *tree, uint32_t value);
size_t mr_avl_get_length(struct mr_avl *tree);
/** @} */
2023-12-05 00:36:12 +08:00
/**
* @addtogroup Device
* @{
*/
2023-12-05 00:36:12 +08:00
int mr_dev_register(struct mr_dev *dev,
2023-12-19 03:54:43 +08:00
const char *path,
2023-12-05 00:36:12 +08:00
int type,
int flags,
2023-12-05 00:36:12 +08:00
struct mr_dev_ops *ops,
struct mr_drv *drv);
int mr_dev_isr(struct mr_dev *dev, int event, void *args);
int mr_dev_open(const char *path, int flags);
2023-12-05 00:36:12 +08:00
int mr_dev_close(int desc);
ssize_t mr_dev_read(int desc, void *buf, size_t count);
ssize_t mr_dev_write(int desc, const void *buf, size_t count);
2024-01-19 20:42:34 +08:00
int mr_dev_ioctl(int desc, int cmd, void *args);
2023-12-05 00:36:12 +08:00
/** @} */
2023-11-11 02:07:22 +08:00
#ifdef __cplusplus
}
#endif /* __cplusplus */
2023-11-11 02:07:22 +08:00
#endif /* _MR_API_H_ */