Zigbee协议栈的实现方式采用的是分层的思想,分别有物理层、数据链路层(介质访问控制层)、网络层和应用层。每一层都实现了不同的功能,但是每一层实现的功能对于其它层来说又是封闭的,如果要进行数据互通,需要调用一些API函数。这是一些浅显的基本概念,百度一下都可以知道的啦!那么整个协议栈是如何执行的呢?我们直接来看代码吧!打开Zmain.c文件,之前是一些宏定义,暂时先不用管,看到主函数:
int main( void )
{
// Turn off interrupts
osal_int_disable( INTS_ALL );
// Initialization for board related stuff such as LEDs
HAL_BOARD_INIT();
// Make sure supply voltage is high enough to run
zmain_vdd_check();
// Initialize board I/O
InitBoard( OB_COLD );
// Initialze HAL drivers
HalDriverInit();
// Initialize NV System
osal_nv_init( NULL );
// Initialize the MAC
ZMacInit();
// Determine the extended address
zmain_ext_addr();
#if defined ZCL_KEY_ESTABLISH
// Initialize the Certicom certificate information.
zmain_cert_init();
#endif
//