Linux UWB Stack实现——MCPS调度接口(API)
在上一篇文章中,介绍了MCPS调度接口涉及的相关数据结构实现MCPS调度接口(数据结构),本文继续介绍调度相关的方法的实现。
1. 域处理
1.1 域注册与注销
注册/注销一个mcps802154_region,分别在模块加载(module_init)和模块卸载(module_exit)时调用。
int mcps802154_region_register(struct mcps802154_region_ops *region_ops);
void mcps802154_region_unregister(struct mcps802154_region_ops *region_ops);
1.2 域操作
域的操作包括:打开和关闭一个域,域的参数设置,域的调用以及发送域的事件。
// 打开一个域,然后设置参数。需要打开域的名称,底层设备指针
// 返回指向打开域的指针
struct mcps802154_region *
mcps802154_region_open(struct mcps802154_llhw *llhw, const char *name,const struct nlattr *params_attr,struct netlink_ext_ack *extack);
// 关闭一个域
void mcps802154_region_close(struct mcps802154_llhw *llhw,struct mcps802154_region *region);// 设置一个打开域的参数
int mcps802154_region_set_parameters(struct mcps802154_llhw *llhw,struct mcps802154_region *region,const struct nlattr *params_attr,struct netlink_ext_ack *extack);// 调用域中的一个特定的处理程序,通过域特定的程序的标识符call_id来标识调用的程序
int mcps802154_region_call(struct mcps802154_llhw *llhw,struct mcps802154_region *region, u32 call_id,const struct nlattr *params_attr,const struct genl_info *info);// 分配缓冲区以发送域的通知,返回已分配且提前填充的buffer
struct sk_buff *
mcps802154_region_event_alloc_skb(struct mcps802154_llhw *llhw,struct mcps802154_region *region, u32 call_id,u32 portid, int approx_len, gfp_t gfp);// 发送已分配的且已经填充的buffer,需要传递底层硬件指针
int mcps802154_region_event(struct mcps802154_llhw *llhw, struct sk_buff *skb);
2. 调度器
2.1 调度器注册与注销
在模块加载时注册一个mcps802154_scheduler调度器;模块卸载时,注销调度器。与mcps802154_region处理类似。
int mcps802154_scheduler_register(struct mcps802154_scheduler_ops *scheduler_ops);
void mcps802154_scheduler_unregister(struct mcps802154_scheduler_ops *scheduler_ops);
2.2 调度器操作
对于调度器而言,可能更改调度开始的时间、清除或回收当前的调度、向调度中增加新的域、更改调度访问、无效调度等,主要通过以下的外部API调用。
// 改变当前已经更新调度开始时间戳:需要调度计划上下文,同时设置新的时间戳(DTU)
int mcps802154_schedule_set_start(const struct mcps802154_schedule_update *schedule_update,u32 start_timestamp_dtu);// 清除或回收当前的调度计划(schedule)
// n_keeps:保留上一调度计划的域数
// last_region_duration_dtu:最后域的持续时间,若为MCPS802154_DURATION_NO_CHANGE则保持不变
int mcps802154_schedule_recycle(const struct mcps802154_schedule_update *schedule_update,size_t n_keeps, int last_region_duration_dtu);// 向当前更新的调度计划中增加一个新的域,包括开始时间以及持续时间
int mcps802154_schedule_add_region(const struct mcps802154_schedule_update *schedule_update,struct mcps802154_region *region, int start_dtu, int duration_dtu); // 请求尽可能更改访问
// 当有新的可用数据时,则使用此函数重新评估当前访问的时间。
// 如设备在休眠或等待接收帧,有新的数据需要发送,则需要调用请求重新评估,更改访问。
// 如果设备处于忙碌状态,将忽略请求,这种情况下,当前访问完成后才会检查新的访问。
void mcps802154_reschedule(struct mcps802154_llhw *llhw);// 请求无效调度计划(schedule)
// 有限状态机锁应该入锁。要无效当前的schedule,将导致调度计划更改。
// 当例如某些参数更改时,应从外部模块调用此API以强制进行调度计划更改。
void mcps802154_schedule_invalidate(struct mcps802154_llhw *llhw);
相关文章:
Linux UWB Stack实现——MCPS调度接口(API)
在上一篇文章中,介绍了MCPS调度接口涉及的相关数据结构实现MCPS调度接口(数据结构),本文继续介绍调度相关的方法的实现。 1. 域处理 1.1 域注册与注销 注册/注销一个mcps802154_region,分别在模块加载(mo…...
el-tree中插入图标并且带提示信息
<template><div class"left"><!-- default-expanded-keys 默认展开 --><!-- expand-on-click-node 只有点击箭头才会展开树 --><el-tree :data"list" :props"defaultProps" node-click"handleNodeClick" :…...
竞赛选题 深度学习 YOLO 实现车牌识别算法
文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于yolov5的深度学习车牌识别系统实现 该项目较…...
Direct3D网格(一)
创建网格 我们可以用D3DXCreateMeshFVF函数创建一个"空"网格对象 ,空网格对象是指我们指定了网格的面片总数和顶点总数,然后由该函数为顶点缓存、索引缓存和属性缓存分配大小合适的内存,之后即可手工填入网格数据。 HRESULT WINA…...
C语言打印菱形
一、运行结果图 二、源代码 # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值;int line 0;int i 0;int j 0;//获取变量值;scanf("%d", &line);//循环打印上半部分;for (i 0; i <…...
ElasticSearch搜索引擎:数据的写入流程
一、ElasticSearch 写数据的总体流程: (1)ES 客户端选择一个节点 node 发送请求过去,这个节点就是协调节点 coordinating node (2)协调节点对 document 进行路由,通过 hash 算法计算出数据应该…...
python3 调用 另外一个python脚本
3种python调用其他脚本脚本的方法_python 调用python脚本_linjingyg的博客-CSDN博客 Python之系统交互(调用系统命令)subprocess_subprocess.getoutput(cmd) 参数格式不正确-CSDN博客 subprocess.call()只能返回状态码。subprocess.getoutput(cmd)只能输出命令结果。 str(py…...
【13】c++设计模式——>简单工厂模式
工厂模式的定义 c中的工厂模式是一种创建型设计模式,它提供一种创建对象的接口,但具体创建的对象类型可以在运行时决定,这样可以将对象的创建与使用代码分离,提高代码的灵活性和可维护性。 在c中实现工厂模式,通常会定…...
系统架构设计:2 论软件设计方法及其应用
目录 一 软件设计方法 1结构化设计 2信息工程 3面向对象设计 4原型设计...
基于Winform的UDP通信
1、文件结构 2、UdpReceiver.cs using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks;namespace UDPTest.Udp {public class UdpStateEventArgs : EventArgs…...
掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)
简介 BERT(来自 Transformers 的双向编码器表示)是 Google 开发的革命性自然语言处理 (NLP) 模型。它改变了语言理解任务的格局,使机器能够理解语言的上下文和细微差别。在本文[1]中,我们将带您踏上从 BERT 基础知识到高级概念的旅…...
Linux Ftrace介绍
文章目录 一、简介二、内核函数调用跟踪参考链接: 一、简介 Ftrace 是 Linux 官方提供的跟踪工具,在 Linux 2.6.27 版本中引入。Ftrace 可在不引入任何前端工具的情况下使用,让其可以适合在任何系统环境中使用。 Ftrace 可用来快速排查以下相…...
Go语言进阶------>init()函数
Init()包初始化 执行优先级 Init()函数的执行优先级比main()函数的执行优先级要高,也就是说程序会优先执行Init()函数之后再执行main()函数. 代码如下 package mainimport "fmt"func init() {fmt.Println("执行了Init()函数") }func main() {fmt.Println…...
云计算:常用微服务框架
目录 一、理论 1.Java微服务框架 2.Go微服务框架 3.Python微服务框架 4.Node.js微服务框架 5..Net微服务框架 一、理论 1.Java微服务框架 Spring Cloud:最早最成熟,Java开源微服务框架方案 SpringBoot:全新框架,设计目的是…...
jmeter添加断言(详细图解)
先创建一个线程组,再创建一个http请求。 为了方便观察,我们添加两个监听器,察看结果树和断言结果。 添加断言:响应断言,响应断言也是比较常用的一个断言 设置响应断言:正常情况下响应代码是200。选择响应代…...
few shot object detection via feature reweight笔记
摘要部分 few shot很多用的都是faster R-CNN为基础,本文用的是one-stage 结构。 用了一个meta feature learner和reweighting模块。 和其他的few shot一样,先学习base数据集,再推广到novel数据集。 feature learner会从base数据集中提取meta…...
工会排队模式:电商新营销模式吸引消费者,提升销售!
随着电商行业的繁荣发展,私域流量已经成为了电商平台争夺消费者和促进销售的重要手段。工会排队模式正是在这种背景下应运而生的一种创新性的电商营销模式。这种模式通过奖金池的资金来为消费者和商家提供返现和排队奖励,构建了一个实现消费者和商家共赢…...
定档通知2024中国(北京)国际红外技术及设备展览会
时间:2024年7月14-16日 地点:北京国家会议中心 ◆展会背景background: 各有关红外企业厂商:2024年7月14~16日,2024中国国际红外技术及设…...
自助建站系统,一建建站系统api版,自动建站
安装推荐php7.2或7.2以下都行 可使用虚拟主机或者服务器进行搭建。 分站进入网站后台 域名/admin 初始账号123456qq.com密码123456 找到后台的网站设置 将主站域名及你在主站的通信secretId和通信secretKey填进去。 即可正常使用 通信secretId和通信secretKey在主站的【账号…...
算法框架-LLM-1-Prompt设计(一)
原文:算法框架-LLM-1-Prompt设计(一) - 知乎 目录 收起 1 prompt-engineering-for-developers 1.1 Prompt Engineering 1.1.1 提示原则 1. openai的环境 2. 两个基本原则 3. 示例 eg.1 eg.2 结构化输出 eg.3 模型检验 eg.4 提供示…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
前言:本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中,跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南,你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案,并结合内网…...
