86 lines
4.0 KiB
C
86 lines
4.0 KiB
C
#include "lwrb.h"
|
|
uint8_t lwrb_data[8 + 1];
|
|
lwrb_t buff;
|
|
|
|
int main()
|
|
{
|
|
lwrb_sz_t len;
|
|
lwrb_init(&buff, lwrb_data, ARRAY_LEN(lwrb_data));
|
|
printf("Read/Write test\r\n");
|
|
{
|
|
uint8_t rw_buff[8];
|
|
|
|
#define RW_TEST(_w_exp_, _r_exp_, _rw_len_, _rw_exp_len_) \
|
|
do \
|
|
{ \
|
|
printf("W ptr: %u, R ptr: %u, R/W len: %u, as_expected: %u\r\n", (unsigned)buff.w_ptr, (unsigned)buff.r_ptr, \
|
|
(unsigned)(_rw_len_), \
|
|
(unsigned)(buff.w_ptr == (_w_exp_) && buff.r_ptr == (_r_exp_) && (_rw_len_) == (_rw_exp_len_))); \
|
|
} while (0)
|
|
|
|
lwrb_reset(&buff);
|
|
len = lwrb_write(&buff, "1234567890", 10); /* Write 3 bytes */
|
|
RW_TEST(3, 0, len, 3);
|
|
len = lwrb_write(&buff, "abcdefg", 7); /* Write 3 bytes */
|
|
RW_TEST(6, 0, len, 3);
|
|
for (int i = 0; i < buff.size; i++)
|
|
{
|
|
printf("%c ", buff.buff[i]);
|
|
}
|
|
printf("\n");
|
|
len = lwrb_read(&buff, rw_buff, 3); /* Read 3 bytes */
|
|
RW_TEST(6, 3, len, 3);
|
|
len = lwrb_read(&buff, rw_buff, 4); /* Read 4 bytes */
|
|
RW_TEST(6, 6, len, 3);
|
|
|
|
len = lwrb_write(&buff, "abc", 3); /* Write 3 bytes -> buffer should go over */
|
|
RW_TEST(0, 6, len, 3);
|
|
|
|
#undef RW_TEST
|
|
}
|
|
|
|
// printf("Read/Write extended test\r\n");
|
|
// {
|
|
// uint8_t rw_buff[8];
|
|
// lwrb_sz_t written, read;
|
|
// uint8_t success;
|
|
|
|
// #define RW_TEST(_w_exp_, _r_exp_, _success_, _rw_len_, _rw_exp_len_) \
|
|
// do \
|
|
// { \
|
|
// printf("W ptr: %u, R ptr: %u, R/W success: %u, R/W len: %u, as_expected: %u\r\n", (unsigned)buff.w_ptr, \
|
|
// (unsigned)buff.r_ptr, (unsigned)(_success_), (unsigned)(_rw_len_), \
|
|
// (unsigned)(buff.w_ptr == (_w_exp_) && buff.r_ptr == (_r_exp_) && (_rw_len_) == (_rw_exp_len_))); \
|
|
// } while (0)
|
|
|
|
// lwrb_reset(&buff);
|
|
// written = 0;
|
|
// success = lwrb_write_ex(&buff, "abcdefg", 7, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
|
|
// RW_TEST(7, 0, success, written, 7);
|
|
// // success = lwrb_read_ex(&buff, rw_buff, 3, &read, LWRB_FLAG_READ_ALL); /* Read 3 bytes only */
|
|
// // printf("RW FULL READ: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
|
|
// // RW_TEST(7, 3, success, written, 7);
|
|
|
|
// /* This one shall failed, not enough memory available */
|
|
// success = lwrb_write_ex(&buff, "abcd", 4, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
|
|
// printf("RW FULL WRITE: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 0));
|
|
|
|
// /* Read few more bytes to allow full write */
|
|
// success = lwrb_read_ex(&buff, rw_buff, 1, &read, LWRB_FLAG_READ_ALL); /* Read 3 bytes only */
|
|
// printf("RW FULL READ: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
|
|
// // 打印rw_buff
|
|
// for (int i = 0; i < ARRAY_LEN(rw_buff); i++)
|
|
// {
|
|
// printf("%c ", rw_buff[i]);
|
|
// }
|
|
|
|
// /* Now it should go through */
|
|
// success = lwrb_write_ex(&buff, "abcdefg", 7, &written, LWRB_FLAG_WRITE_ALL); /* Write all bytes */
|
|
// printf("RW FULL WRITE: %u, as_expected: %u\r\n", (unsigned)success, (unsigned)(success == 1));
|
|
|
|
// #undef RW_TEST
|
|
// }
|
|
|
|
return 0;
|
|
}
|