深度解析:元宇宙养殖农业DAPP系统开发逻辑详细方案

简介: 深度解析:元宇宙养殖农业DAPP系统开发逻辑详细方案

源文件(dispatch.c):

u32 func_ChipCheck(u8 cmd_in, u8 cmd_out)
{

/*do something*/
PRINT_WARN("func %s,line num: %d, %p,%d!\r\n", __FUNCTION__, __LINE__, cmd_in, 2);
return (0);

}

u32 func_DataTrans(u8 cmd_in, u8 cmd_out)
{

/*do something*/
PRINT_WARN("func %s,line num: %d, %p,%d!\r\n", __FUNCTION__, __LINE__, cmd_in, 2);
return (0);

}
u32 func_DataSave(u8 cmd_in, u8 cmd_out)
{

/*do something*/
PRINT_WARN("func %s,line num: %d, %p,%d!\r\n", __FUNCTION__, __LINE__, cmd_in, 2);
return (0);

}
复制
建立索引关系,即functionlist中的功能接口和funcCodelist的接口名称一一对应起来,同时编写索引查找函数。在源文件进行定义:

pFunc functionlist[] = {

func_ChipCheck,
func_DataTrans,
func_DataSave,

};

u8 funcCodelist[] =
{

ChipCheck,
DataTrans,
DataSave,

};
/**

  • 功能接口的回调函数

*

  • @author KingBoy (2020/5/24)

*

  • @param p 被调用的函数
  • @param cmd_in 输入参数
  • @param cmd_out 输出参数

*

  • @return u32 0-success

*/
u32 dispath_callback(pFunc p, u8 cmd_in, u8 cmd_out)
{

u32 ret = 0;
ret = (*p)(cmd_in, cmd_out);
return (ret);

}
/**

  • 功能派发接口

*

  • @author KingBoy (2020/5/23)

*

  • @param cmd_ptr 输入输出:数据起始地址
  • @param cmd_len 输入输出:数据长度

*/
void function_dispatch(u8 cmd_ptr, u32 cmd_len)
{

int func_code;

func_code = getEnumIndex(*(cmd_ptr));
PRINT_WARN("func %s,line num: %d, %02x\r\n", __FUNCTION__, __LINE__, func_code);
if (func_code != -1)
{
    //用法1,直接定义函数数组后调用
    //functionlist[func_code](cmd_ptr, cmd_ptr);
    //用法2,使用回调函数进行处理
    dispath_callback(functionlist[func_code], cmd_ptr, cmd_ptr);
}
else
{
    PRINT_WARN("func %s,line num: %d, %02x\r\n", __FUNCTION__, __LINE__, func_code);
}

}
/**

  • 获取功能的索引位置

*

  • @author KingBoy (2020/5/23)

*

  • @param value 功能码值

*

  • @return int 索引位置,-1为未找到

*/
int getEnumIndex(u8 value)
{

int i = 0;
for (i = 0; i < sizeof(funcCodelist); i++)
{
    if (value == funcCodelist[i])
    {
        return (i);
    }
}
if (i >= sizeof(funcCodelist))
{
    return (ERR_NOFUNC);
}

return (0);

}
复制
function_dispatch即处理的函数,cmd_ptr将外部数据传入,根据第一个字节的取值决定是执行哪个功能函数((cmd_ptr)),在getEnumIndex中获得该功能的索引位置,如果查到的位置合法(不是-1),则调用回调函数dispath_callback并将需要调用的功能函数functionlist[func_code]传入,同时传入函数的参数(u8 cmd_in, u8 *cmd_out)。

对于相似的功能接口来说,可以选择直接调用(functionlistfunc_code;)或者是回调函数调用(dispath_callback(functionlist[func_code], cmd_ptr, cmd_ptr);)两者的处理等价。

如果使用回调函数,当想要修改功能时,可以只在dispath_callback进行操作而不需要对底层进行修改。

相关文章
|
23天前
|
传感器 存储 数据采集
04 深度解析物联网架构与技术应用于农业大棚系统
本文将深入探讨物联网架构在农业大棚系统中的应用,从设备接入、边缘网关、数据传输到云平台和应用平台,逐层解析其技术应用与通信协议,为读者全面呈现物联网在农业领域的实际运用场景。
|
2月前
|
Python
区域代理分红商城系统开发源码片段示例规则解析
level = Column(Integer, default=1) # 代理等级,例如:1代表普通用户,2代表初级代理,3代表高级代理等 parent_id = Column(Integer, ForeignKey('user.id')) # 上级代理ID 【更全面的开发源码搭建可V or TG我昵称】 parent = relationship("User", remote_side=[id]) # 上级代理对象
|
4月前
|
监控 NoSQL Linux
【分布式】Redis的持久化方案解析
【1月更文挑战第25天】【分布式】Redis的持久化方案解析
|
7月前
|
存储 区块链 数据安全/隐私保护
DApp互助预约排单系统开发设计规则逻辑解析
DApp互助预约排单系统开发设计规则逻辑解析
|
9天前
|
JSON Java Maven
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
9 0
Javaweb之SpringBootWeb案例之自动配置以及常见方案的详细解析
|
2月前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
90 0
|
2月前
|
安全 数据安全/隐私保护 虚拟化
iOS应用加固方案解析:ipa加固安全技术全面评测
iOS应用加固方案解析:ipa加固安全技术全面评测
37 3
|
6月前
|
机器学习/深度学习 传感器 自动驾驶
视觉BEV基本原理和方案解析
视觉BEV在高德高精地图地面要素识别、车道线拓扑构建、车端融合定位等业务场景中都扮演了重要角色。
|
2月前
|
存储 安全 区块链
NFT代币模式系统开发技术规则解析
随着区块链技术的飞速发展,NFT(非同质化代币)作为一种独特的数字资产,正在全球范围内掀起一股热潮。NFT不仅赋予了数字内容独一无二的身份标识,更让艺术品、游戏道具等虚拟物品具备了真实可交易的价值。本文将深入探讨NFT代币模式的系统开发源码,带您领略这一创新技术的魅力所在。
|
3月前
|
编解码 计算机视觉 Python
IPC机制在jetson中实现硬解码视频流数据通信的逻辑解析
IPC机制在jetson中实现硬解码视频流数据通信的逻辑解析
39 0

推荐镜像

更多