1. 传感网sensor network
    1. Sensor(收集数据)
      1. MobileSensor
        1. SENSOR_SELECT_SINK set up a binding to the Sink
      2. SleepSensor
      3. common Sensor
    2. Sink(存储数据)
      1. multicast message:SINK_ADVERTISE 向周围sensor广播自己的地址:EUI64
  2. ST实例逻辑
    1. Ember Handler
      1. emberMessageSentHandler
        1. 消息发送完后可通过它检查是否成功
      2. emberIncomingMessageHandler
        1. 据ClusterID划分
          1. MSG_SINK_ADVERTISE
          2. MSG_SENSOR_SELECT_SINK
          3. MSG_SINK_READY
          4. MSG_SINK_QUERY
          5. EmberNodeId emberGetSender(void); 获取发送者的node id
          6. MSG_DATA
          7. MSG_MULTICAST_HELLO
      3. emberStackStatusHandler
      4. emberSwitchNetworkKeyHandler
    2. JIT(just in time)相关
      1. appAddJitForAllChildren 但父节点收到的消息需要转为jit消息时
        1. 1)createAndStoreJitMessage
          1. 被appAddJitForAllChildren调用 父节点收到后处理
        2. 2)emberSetMessageFlag
      2. emberPollHandler 子节点向父节点poll时,父节点调用
        1. appSendJitToChild 给指定编号NodeID发送Jit消息
      3. sleep sensor睡醒后 appPoll
  3. Zigbee概念
    1. APS:应用支持子层 (网络层NWK和应用层APL间的接口)
      1. APSDE数据实体
      2. APSME管理实体
      3. APS帧格式
        1. APS头:帧控制,寻址信息
          1. APDU 帧格式
          2. 字节:1
          3. 0/1
          4. 0/2
          5. 0/2
          6. 0/2
          7. 0/1
          8. 1
          9. 变量
          10. 0/变量
          11. 子主题 9
          12. 名称:帧控制
          13. 目标地址
          14. 组地址
          15. Cluster标识符
          16. Profile标识符
          17. 源端点
          18. APS计数器
          19. 扩展头
          20. 帧负载
          21. Topic
          22. APS负载
          23. 帧头--帧控制字节
          24. 0-1
          25. 2-3
          26. 4
          27. 5
          28. 6
          29. 7
          30. 含义
          31. 帧类型 00:数据 01:命令 10:确认 11:保留
          32. 传送模式 00:正常单播传送 01:间接寻址 10:广播 11:组寻址
          33. ACK.格式 表明帧头中寻址域是否存在 数据帧设置0,命令帧设置为1
          34. 安全
          35. ACK.请求 1:接收者需要发送ACK确认帧 0:不需要确认
          36. 扩展头存在 1:包含扩展头 0:不包含
          37. 目标地址: 目标端点域 (组寻址模式时无效)
          38. 如果是0x00:则送到zigbee设备的ZDO端点
          39. 0x01~0xf0送到运行在该端点上的一个应用程序
          40. 0xff,送到除0x00端点外的所有活动端点
          41. 组地址域:长度16位 仅当使用组寻址时有效, 目标端点不存在
          42. 将传送给所有端点
        2. APS负载,长度可变
    2. 应用架构
      1. 最多240个应用对象 0:ZDO数据接口 255:给所有应用对象做广播数据接口 241~254 保留
    3. 应用Profile 由ZigBeeAlliance定义
      1. 应用的分类: * Smart Energy * Home Automation * Telecom Applications * Commercial Building Automation * Personal Home and Hospital Care
    4. 子主题 4
  4. 协调器Coordinator
    1. 创建网络
      1. 1)USE_HARDCODED_NETWORK_SETTINGS(参数预先设定好了)
        1. #define APP_CHANNEL (26) //0x1A #define APP_PANID (0x01ff) #define APP_EXTENDED_PANID {'s','e','n','s','o','r',0,0} #define APP_POWER (3)
      2. 2)SINK_USE_SCAN_UTILS(通过扫描信道强弱,动态 获取可用的信道和网络标号)
      3. 安全设定 sensorCommonSetupSecurity()
    2. 地址表管理
      1. SINK_ADDRESS_TABLE
      2. SINK_TRUST_CENTER_ADDRESS_CACHE
      3. (sink功能)接收到信息后更新地址表中的记录,对长时间无响应的节点删除
    3. 安全
      1. 设置networkKey
      2. 设置preconfiguredLinkKey
      3. 每30秒切换一次密钥
        1. int8u sendNetworkKeyUpdateTimer; #define SENSORAPP_NETWORK_KEY_UPDATE_TIME 120
    4. 作为sink时,广播地址(并非协调器的作用)
    5. Multicast
      1. addMulticastGroup
      2. sendMulticastHello
      3. 子主题 3
    6. sinkAdvertise
    7. handleSensorSelectSink
    8. findFreeAddressTableLocation
    9. sinkAppSwitchNetworkKey
  5. 路由Router
    1. 子主题 1
  6. 终端EndDevice
    1. SleepSensor
    2. MobileSensor