Source insight with Z-Stack 김백규
Review
Z-Stack Structure
Contents Start with the main function. osal_init_system() osalAddTask() osalInitTasks() Define Simple Descriptor Task Init function Task Event processing function
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
osal_init_system() Task initialize
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
osalAddTask()
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
osalTaskInit() User Task ZigBee Task
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
osalTaskAdd Create a new Task Control Block
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
osalInitTasks Call every init function on each task added
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
SerialApp_init() We are using “Service Discovery”
Flow chart osal_init_system() osalTaskInit() osalAddTasks() osalInitTasks() osal_start_system() osalTaskAdd (MAC…) osalTaskAdd (NWK…) osalTaskAdd (USER…) SerialApp_Init() SerialApp_ProcessEvent() MAIN()
SerialApp_ProcessEvent()(1) Use a system event to process ZigBee packets
SerialApp_ProcessEvent()(2) We can also use user-defined events
Sending data to the ZigBee network Code for sending a packet to ZigBee network
Issues We don’t have to write all of these codes. Important to understand how the sending function works Good to know how Z-Stack works.