增加功能测试代码
This commit is contained in:
96
src/main.c
96
src/main.c
@@ -3,38 +3,78 @@
|
|||||||
* @author guishenking (guishenking@outlook.com)
|
* @author guishenking (guishenking@outlook.com)
|
||||||
* @brief
|
* @brief
|
||||||
* @version 0.1
|
* @version 0.1
|
||||||
* @date 2025-07-24
|
* @date 2025-08-15
|
||||||
*
|
*
|
||||||
* @copyright Copyright (c) 2025
|
* @copyright Copyright (c) 2025
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "lib/kfifo/kfifo.h"
|
#include "lib/kfifo/kfifo.h"
|
||||||
#include <stdint.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
kfifo_def(fifo,1024);
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
// 示例数据
|
|
||||||
uint8_t src_data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
|
|
||||||
size_t src_length = sizeof(src_data);
|
|
||||||
uint8_t dest_data[1024];
|
|
||||||
size_t dest_length = sizeof(dest_data);
|
|
||||||
uint32_t offset;
|
|
||||||
|
|
||||||
memset(dest_data, 0, dest_length); // 清空目标数据缓冲区
|
|
||||||
|
|
||||||
kfifo_in(&fifo, dest_data, dest_length); // 将数据写入FIFO
|
|
||||||
|
|
||||||
int ret = kfifo_peek_block(&fifo, dest_data, dest_length); // 从FIFO读取数据
|
|
||||||
|
|
||||||
memset(src_data, 0, src_length); // 清空源数据缓冲区
|
|
||||||
|
|
||||||
// 解码数据
|
|
||||||
kfifo_seek(&fifo, offset); // 根据偏移量调整FIFO读取位置
|
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
printf("KFIFO Test Program\n");
|
||||||
|
|
||||||
|
// 测试静态FIFO
|
||||||
|
printf("\n=== Testing Static FIFO ===\n");
|
||||||
|
kfifo_def(static_fifo, 8); // 创建大小为8的静态FIFO
|
||||||
|
|
||||||
|
// 测试空状态
|
||||||
|
printf("Is empty (should be 1): %d\n", kfifo_is_empty(&static_fifo));
|
||||||
|
|
||||||
|
// 测试写入单个字节
|
||||||
|
kfifo_put_byte(&static_fifo, 0xAA);
|
||||||
|
printf("After put 0xAA, used: %u\n", kfifo_used(&static_fifo));
|
||||||
|
|
||||||
|
// 测试读取单个字节
|
||||||
|
uint8_t byte;
|
||||||
|
kfifo_get_byte(&static_fifo, &byte);
|
||||||
|
printf("Got byte: 0x%02X\n", byte);
|
||||||
|
|
||||||
|
// 测试块写入
|
||||||
|
const uint8_t test_data[] = {0x11, 0x22, 0x33, 0x44, 0x55};
|
||||||
|
int written = kfifo_in(&static_fifo, test_data, sizeof(test_data));
|
||||||
|
printf("Wrote %d bytes, used: %u\n", written, kfifo_used(&static_fifo));
|
||||||
|
|
||||||
|
// 测试块读取
|
||||||
|
uint8_t read_buf[8];
|
||||||
|
int read = kfifo_out(&static_fifo, read_buf, sizeof(read_buf));
|
||||||
|
printf("Read %d bytes: ", read);
|
||||||
|
for (int i = 0; i < read; i++) {
|
||||||
|
printf("0x%02X ", read_buf[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
// 测试动态FIFO
|
||||||
|
printf("\n=== Testing Dynamic FIFO ===\n");
|
||||||
|
kfifo_t *dynamic_fifo = kfifo_init_dynamic(16);
|
||||||
|
if (!dynamic_fifo) {
|
||||||
|
printf("Failed to create dynamic FIFO\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 测试写入超过容量
|
||||||
|
const uint8_t big_data[20] = {0};
|
||||||
|
written = kfifo_in(dynamic_fifo, big_data, sizeof(big_data));
|
||||||
|
printf("Tried to write 20 bytes to 16-byte FIFO, actually wrote %d\n", written);
|
||||||
|
|
||||||
|
// 测试peek功能
|
||||||
|
const uint8_t *peek_ptr;
|
||||||
|
int peek_len = kfifo_peek(dynamic_fifo, &peek_ptr);
|
||||||
|
printf("Peeked %d bytes at %p\n", peek_len, peek_ptr);
|
||||||
|
|
||||||
|
// 测试seek功能
|
||||||
|
int seeked = kfifo_seek(dynamic_fifo, 8);
|
||||||
|
printf("Seeked %d bytes\n", seeked);
|
||||||
|
|
||||||
|
// 测试peek_seek功能
|
||||||
|
peek_len = kfifo_peek_seek(dynamic_fifo, &peek_ptr, 4);
|
||||||
|
printf("Peeked %d bytes after seeking 4\n", peek_len);
|
||||||
|
|
||||||
|
// 清理动态FIFO
|
||||||
|
if (!kfifo_destroy(dynamic_fifo)) {
|
||||||
|
printf("Failed to destroy dynamic FIFO\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\nAll tests completed\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Reference in New Issue
Block a user