T-Box Basic dev
Loading...
Searching...
No Matches
ril_probe.h File Reference

RIL 多目标网络探测执行器 More...

#include <pthread.h>
#include <stdatomic.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include "ril_config.h"

Go to the source code of this file.

Data Structures

struct  ril_probe_request_t
 一轮 APN 网络探测请求 More...
struct  ril_probe_state_event_t
 一轮 APN 网络探测结果 More...
struct  ril_probe_ops_t
 可由单元测试替换的探测线程操作 More...
struct  ril_probe_t
 单工作线程、单请求槽和单结果槽的探测执行器 More...

Macros

#define RIL_PROBE_TIMEOUT_MAX_MS   60000U
 单目标网络探测的最大超时,单位毫秒

Functions

bool ril_probe_targets_are_healthy (uint8_t executed_count, uint8_t succeeded_count)
 判断一轮中是否至少有一个目标成功。
uint64_t ril_probe_address_deadline (uint64_t now_ms, uint64_t deadline_ms, size_t remaining_addresses)
 为当前地址分配本目标剩余时间中的公平份额。
bool ril_probe_bind_error_is_unavailable (int error_code)
 判断接口绑定错误是否表示当前探测不可执行。
int ril_probe_bind_interface (int fd, const char *ifname)
 将探测 socket 绑定到指定网络接口。
int ril_probe_init (ril_probe_t *probe, const ril_config_t *config, const ril_probe_ops_t *ops)
 初始化可选的单个网络探测工作线程。
int ril_probe_schedule (ril_probe_t *probe, const ril_probe_request_t *request)
 复制并调度一轮 APN 网络探测。
int ril_probe_collect (ril_probe_t *probe, ril_probe_state_event_t *result)
 非阻塞收集一轮网络探测结果。
void ril_probe_deinit (ril_probe_t *probe)
 停止工作线程并释放同步资源。

Detailed Description

RIL 多目标网络探测执行器

Version
1.0.0
Date
2026-07-17

Function Documentation

◆ ril_probe_address_deadline()

uint64_t ril_probe_address_deadline ( uint64_t now_ms,
uint64_t deadline_ms,
size_t remaining_addresses )

为当前地址分配本目标剩余时间中的公平份额。

Parameters
now_ms当前单调时钟毫秒数。
deadline_ms本目标的总截止时间。
remaining_addresses包含当前地址的剩余地址数量。
Returns
当前地址的截止时间。

◆ ril_probe_bind_error_is_unavailable()

bool ril_probe_bind_error_is_unavailable ( int error_code)

判断接口绑定错误是否表示当前探测不可执行。

Parameters
error_codeerrno 错误码。
Returns
权限不足或接口不存在返回 true,否则返回 false。

◆ ril_probe_bind_interface()

int ril_probe_bind_interface ( int fd,
const char * ifname )

将探测 socket 绑定到指定网络接口。

Note
生产实现使用 SO_BINDTODEVICE;单元测试可替换此弱符号。

◆ ril_probe_collect()

int ril_probe_collect ( ril_probe_t * probe,
ril_probe_state_event_t * result )

非阻塞收集一轮网络探测结果。

Parameters
probe探测执行器。
result输出探测结果。
Returns
TBOX_OK 成功;暂无结果返回 TBOX_ERROR_AGAIN;其他值失败。

◆ ril_probe_deinit()

void ril_probe_deinit ( ril_probe_t * probe)

停止工作线程并释放同步资源。

Parameters
probe探测执行器。

◆ ril_probe_init()

int ril_probe_init ( ril_probe_t * probe,
const ril_config_t * config,
const ril_probe_ops_t * ops )

初始化可选的单个网络探测工作线程。

probe_count 为 0 时不创建线程或同步对象。

Parameters
probe输出探测执行器。
config不可变启动配置。
ops线程和执行操作;NULL 使用系统实现。
Returns
TBOX_OK 成功,其他值失败。

◆ ril_probe_schedule()

int ril_probe_schedule ( ril_probe_t * probe,
const ril_probe_request_t * request )

复制并调度一轮 APN 网络探测。

Parameters
probe探测执行器。
request探测请求。
Returns
TBOX_OK 成功,其他值失败。

◆ ril_probe_targets_are_healthy()

bool ril_probe_targets_are_healthy ( uint8_t executed_count,
uint8_t succeeded_count )

判断一轮中是否至少有一个目标成功。

Parameters
executed_count已执行目标数量。
succeeded_count成功目标数量。
Returns
存在成功目标且计数有效返回 true,否则返回 false。