ESP32/components/iperf/iperf.h

75 lines
1.7 KiB
C

#ifndef IPERF_H
#define IPERF_H
#include <stdint.h>
#include <stdbool.h>
#include "led_strip.h"
// --- Configuration Flags ---
#define IPERF_FLAG_CLIENT (1 << 0)
#define IPERF_FLAG_SERVER (1 << 1)
#define IPERF_FLAG_TCP (1 << 2)
#define IPERF_FLAG_UDP (1 << 3)
// --- Defaults ---
#define IPERF_DEFAULT_PORT 5001
#define IPERF_DEFAULT_INTERVAL 3
#define IPERF_DEFAULT_TIME 30
#define IPERF_TRAFFIC_TASK_PRIORITY 4
#define IPERF_REPORT_TASK_PRIORITY 5
#define IPERF_UDP_TX_LEN (1470)
// --- NVS Keys ---
#define NVS_KEY_IPERF_ENABLE "iperf_enabled"
#define NVS_KEY_IPERF_PERIOD "iperf_period"
#define NVS_KEY_IPERF_ROLE "iperf_role"
#define NVS_KEY_IPERF_DST_IP "iperf_dst_ip"
#define NVS_KEY_IPERF_PORT "iperf_port"
#define NVS_KEY_IPERF_PROTO "iperf_proto"
#define NVS_KEY_IPERF_BURST "iperf_burst"
#define NVS_KEY_IPERF_LEN "iperf_len"
typedef struct {
uint32_t flag;
uint32_t dip;
uint16_t dport;
uint32_t time;
uint32_t pacing_period_us;
uint32_t burst_count;
uint32_t send_len;
} iperf_cfg_t;
// --- Stats Structure ---
typedef struct {
bool running;
uint32_t config_pps;
uint32_t actual_pps;
float error_rate;
} iperf_stats_t;
// --- Header ---
typedef struct {
int32_t id;
uint32_t tv_sec;
uint32_t tv_usec;
uint32_t id2;
} udp_datagram;
// --- API ---
void iperf_init_led(led_strip_handle_t handle);
void iperf_set_pps(uint32_t pps);
uint32_t iperf_get_pps(void);
// New: Get snapshot of current stats
void iperf_get_stats(iperf_stats_t *stats);
// New: Print formatted status to stdout (for CLI/Python)
void iperf_print_status(void);
void iperf_start(iperf_cfg_t *cfg);
void iperf_stop(void);
#endif // IPERF_H