49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
#ifndef _AIRKISS_PING_PONG_H_
|
|
#define _AIRKISS_PING_PONG_H_
|
|
|
|
#include "airkiss_main.h"
|
|
|
|
#define BUF_LEN AIRKISS_MIN_RX_BUF_SIZE
|
|
|
|
#define PINIGPONG_DEBUG 1
|
|
#if PINIGPONG_DEBUG
|
|
#define PINIGPONG_PRT os_printf
|
|
#define PINIGPONG_WARN warning_prf
|
|
#define PINIGPONG_FATAL fatal_prf
|
|
#else
|
|
#define PINIGPONG_PRT null_prf
|
|
#define PINIGPONG_WARN null_prf
|
|
#define PINIGPONG_FATAL null_prf
|
|
#endif
|
|
|
|
struct buff_str {
|
|
char *addr;
|
|
struct buff_str *next_buf_addr;
|
|
|
|
uint32_t read_enable;
|
|
uint32_t write_enable;
|
|
uint32_t length;
|
|
uint32_t offset;
|
|
uint32_t actual;
|
|
};
|
|
|
|
struct pingpong_buffer {
|
|
struct buff_str buf1;
|
|
struct buff_str buf2;
|
|
|
|
struct buff_str *current_read;
|
|
int read_switch;
|
|
|
|
struct buff_str *current_write;
|
|
int write_switch;
|
|
};
|
|
|
|
/* return valule: bytes have read, or 0 if not read enable */
|
|
extern int pingpong_init(void);
|
|
extern void pingpong_free(void);
|
|
extern uint32_t read_from_pingpong_buf(void *buf_user, const uint32_t count, uint32_t *actual);
|
|
extern uint32_t write_to_pingpong_buf(void *buf_user, const uint32_t count, const uint32_t actual);
|
|
#endif // _AIRKISS_PING_PONG_H_
|
|
// eof
|
|
|