Program Listing for File ring_buf.h
↰ Return to documentation for file (components/wifi_sniffer/ring_buf.h)
#pragma once
#include <stdint.h>
#include <stdbool.h>
#include "esp_err.h"
/* 단일 슬롯 = 헤더 + payload(MAX) 크기 */
typedef struct {
uint32_t magic; /* 패킷 식별용(상위에서 사용) */
uint16_t len; /* payload 길이 */
uint16_t _rsv; /* 정렬 */
} ring_slot_hdr_t;
typedef struct ring_buf ring_buf_t;
/* cap = 슬롯 개수, slot_size = 헤더+payload 전체 바이트 */
esp_err_t ring_buf_create(ring_buf_t **out, uint32_t cap, uint32_t slot_size, bool try_psram);
void ring_buf_destroy(ring_buf_t *rb);
bool ring_buf_push(ring_buf_t *rb, const ring_slot_hdr_t *hdr, const uint8_t *payload);
bool ring_buf_pop (ring_buf_t *rb, ring_slot_hdr_t *hdr, uint8_t *payload);
uint32_t ring_buf_size(const ring_buf_t *rb); /* 현재 저장된 슬롯 수 */
uint32_t ring_buf_cap (const ring_buf_t *rb); /* 총 슬롯 개수 */
uint32_t ring_buf_free(const ring_buf_t *rb); /* 남은 슬롯 수 */
void ring_buf_reset(ring_buf_t *rb); /* 링 버퍼 초기화 */