基于Z-Stack2006的简单应用开发
这是基本Z-Stack开发的一个实际案例,关于OSAL的文章可以看我上传的另一份《深入浅出Z-Stack 2006 OSAL多任务资源分配机制》是zigbee新手入门的很好的教程。
基于Z-Stack2006的简单应用开发
此文的作者依然是大神cyril3。向他致敬。 我想很多人都会对“Z-Stack 2006”这个说法产生怀疑。没错!在Z-Stack的所有版本中,并没有“Z-Stack 2006”这个版本。在这里我所指的是Z-Stack针对ZigBee 2006协议的版本。而我所使用的是Z-Stack 1-4-3版本。
我们所熟知的是,Z-Stack是基于OSAL的支持多任务的ZigBee协议栈,在《深入浅出Z-Stack 2006 OSAL多任务资源分配机制》中,我向大家简要分析了OSAL的运行机制。但是对于开发一个满足需求的应用,了解这样一个机制仅仅是一个开始。下面,我将通过一个简单实例,向大家介绍如何进行基于Z-Stack的应用开发。
一、建立工程
我认为反复地使用GenericApp是一件十分恶心的事情。这一次,我们需要拥有一个属于我们自己的工程。
使用IAR建立一个Z-Stack工程是一件十分繁琐并且枯燥的事情,每一层都有太多的文件需要被添加进去。所幸的是,我们有一个很好的投机取巧的办法。
找到GenericApp工程的文件夹,复制此文件夹并且重命名Cyril3App。删除Source目录下的所有文件,然后建立如下几个文件:
Cyril3App.h:定义应用程序全局宏
Cyril3AppCoordManage.c:协调器代码
Cyril3AppCoordManage.h:协调器宏定义
OSAL_Cyril3AppCoord.c:协调器应用框架代码
Cyril3AppRouterManage.c:路由器代码
Cyril3AppRouterManage.h:路由器宏定义
OSAL_Cyril3AppRouter.c:路由器应用框架代码
进入CC2430DB目录,分别将GenericApp.ewp和GenericApp.eww重命名为
Cyril3App.ewp和Cyril3App.eww。使用记事本打开这两个文件,将里面所有的GenericApp都改为Cyril3App。我们可以使用查找替换功能来解决。用IAR打开这个工程,将App组里面的文件全部移除。在App组里面新建“Coodinator”和“Router”两个组。分别将路由器和协调器的三个文件加入对应的两个组。这样,一个空的工程就建立好了。
接下来我们就可以在这个工程里面开发我们的应用了。
抛开实用性,我们仅仅来关注技术层面所发生的事情。所以,请大家不要来指责我这个东西没有任何实用性,我只是抛砖引玉。功能更加强大,更实用的应用程序需要大家去完成。 既然OSAL可以支持多任务,那么我们就为我们的应用设计两个任务。第一个任务在应用层面上为我们管理整个网络的节点,第二个任务我们来做一些简单的操作。接下来我们要干点实事了。
二、建立应用程序。
OSAL框架在背后为我们做了很多我们不容易发现却很重要的事情,但是即使这样,我们仍然需要自己做一些事情来完成这个应用程序框架。切换工作空间配置到CoordinatorDB,将Router组排除编译(右键单击组名,选择Options,将左上角的“Exclude from build”的勾选去除)。打开“OSAL_Cyril3AppCoord.c”在这个文件里面,我们完成OSAL应用程序框架的最后一些事情。
1,添加如下代码:


