Zstack 스크랩 노트 4
5413 단어 Zigbee
Zigbee 네트워크의 세 가지 장치는 어떻게 네트워크를 구성합니까?그룹 네트워크 개념?
#define SERIALAPP_MSG_RTRY_EVT 0x0001//데이터 재발급 #define SERIALAPPRSP_RTRY_EVT 0x0002/응답 메시지 다시 보내기 #define SERIALAPPMSG_SEND_EVT 0x0004//데이터 전송
네트워크 디바이스 시작:
이 문장은 HOLD 가 무엇인지와 중대한 관계가 있다AUTO_START ??
#if defined( HOLD_AUTO_START ) devStates_t devState = DEV_HOLD; #else devStates_t devState = DEV_INIT; #endif
HOLD_AUTO_START의 정의는
HOLD_AUTO_IAR ->Project->Option->C/C++ Compile->Preprocess->Defined symbols에서 정의합니다.
//ZDOInitDevice return values
#define ZDO_INITDEV_RESTORED_NETWORK_STATE 0x00
#define ZDO_INITDEV_NEW_NETWORK_STATE 0x01
#define ZDO_INITDEV_LEAVE_NOT_STARTED 0x02
//Use the following to macros to make device type decisions #define ZG_BUILD_COORDINATOR_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_COORDINATOR) #define ZG_BUILD_RTR_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_COORDINATOR | DEVICE_BUILD_ROUTER)) #define ZG_BUILD_ENDDEVICE_TYPE (ZSTACK_DEVICE_BUILD & DEVICE_BUILD_ENDDEVICE) #define ZG_BUILD_RTRONLY_TYPE (ZSTACK_DEVICE_BUILD == DEVICE_BUILD_ROUTER) #define ZG_BUILD_JOINING_TYPE (ZSTACK_DEVICE_BUILD & (DEVICE_BUILD_ROUTER | DEVICE_BUILD_ENDDEVICE))
ZigBee 장치의 시작, 결국 ZDO 호출StartDevice() 함수로 구현됩니다.다음은 이 함수를 어떻게 시작하는지 봅시다.ZDOInitDevice() 함수의 마지막 부분에서 다음 ZDApp 이 호출되었습니다.NetworkInit() 함수, 이 함수에서 ZDO 시작NETWORK_INIT 이벤트, 이 이벤트는 ZDAppevent_loop () 이벤트 처리 함수에서 처리됩니다.이 이벤트에서 장치 시작 함수 ZDO 호출됨StartDevice().
ZCL이란?
zigbee cluster library(ZCL) zigbee
ZCL , , 、 。
//Device types definitions ( from ZGlobals.h file )
#define ZG_DEVICETYPE_COORDINATOR 0x00
#define ZG_DEVICETYPE_ROUTER 0x01
#define ZG_DEVICETYPE_ENDDEVICE 0x02
ZStack-CC2530-2.3.0-1.4.0의 단순 App 예에 대한 그룹 네트
http://blog.sina.com.cn/s/blog_933b730f01013o3x.html
Zigbee의 포트 0은??
sapi_bindInProgress = 0xffff;귀속 표지 비트, 기본적으로 귀속을 허용하지 않습니다.
//Initialize leave control logic ZDApp_LeaveCtrlInit();//제어에서 벗어나 초기화
제어에서 벗어나 초기화라니요??
노드 설명자란??
//Node Descriptor format structure typedef struct { uint8 LogicalType:3; uint8 ComplexDescAvail:1; /* AF_V1_SUPPORT - reserved bit. */ uint8 UserDescAvail:1; /* AF_V1_SUPPORT - reserved bit. */ uint8 Reserved:3; uint8 APSFlags:3; uint8 FrequencyBand:5; uint8 CapabilityFlags; uint8 ManufacturerCode[2]; uint8 MaxBufferSize; uint8 MaxInTransferSize[2]; uint16 ServerMask; uint8 MaxOutTransferSize[2]; uint8 DescriptorCapability; } NodeDescriptorFormat_t;
지금 공유기 장치가 그룹 네트워크에서의 작용을 알고 싶습니다???
/*********************************************************************
* @fn ZDApp_Init
*
* @brief ZDApp Initialization function.
*
* @param task_id - ZDApp Task ID
*
* @return None
*/
void ZDApp_Init( uint8 task_id )
{
// Save the task ID
ZDAppTaskID = task_id;
// Initialize the ZDO global device short address storage
ZDAppNwkAddr.addrMode = Addr16Bit;
ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;
(void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.
// Check for manual "Hold Auto Start"
/ / , SW_1 devState = DEV_HOLD
ZDAppCheckForHoldKey();
// Initialize ZDO items and setup the device - type of device to create.
ZDO_Init();
// Register the endpoint description with the AF
// This task doesn't have a Simple description, but we still need
// to register the endpoint.
afRegister( (endPointDesc_t *)&ZDApp_epDesc );
#if defined( ZDO_USERDESC_RESPONSE )
ZDApp_InitUserDesc();
#endif // ZDO_USERDESC_RESPONSE
// Start the device? ,
if ( devState != DEV_HOLD )
{
ZDOInitDevice( 0 );
}
else
{
ZDOInitDevice( ZDO_INIT_HOLD_NWK_START );
// Blink LED to indicate HOLD_START
HalLedBlink ( HAL_LED_4, 0, 50, 500 );
}
// Initialize the ZDO callback function pointers zdoCBFunc[]
ZDApp_InitZdoCBFunc();
ZDApp_RegisterCBs();
} /* ZDApp_Init() */
// Init ZDO, but hold and wait for application to start the joining or
// forming network
#define ZDO_INIT_HOLD_NWK_START 0xFFFF
/*********************************************************************
* @fn ZDO_Init
*
* @brief ZDObject and ZDProfile initialization.
*
* @param none
*
* @return none
*/
void ZDO_Init( void )
{
// Initialize ZD items
#if defined ( REFLECTOR )
ZDO_EDBind = NULL;
#endif
// Initialize default ZDO_UseExtendedPANID to the APS one.
osal_cpyExtAddr( ZDO_UseExtendedPANID, AIB_apsUseExtendedPANID );
// Setup the device - type of device to create.
ZDODeviceSetup();
}
static void ZDODeviceSetup( void )
{
if ( ZG_BUILD_COORDINATOR_TYPE )
{
NLME_CoordinatorInit();
}
#if defined ( REFLECTOR )
APS_ReflectorInit( (ZG_DEVICE_COORDINATOR_TYPE) ? APS_REFLECTOR_PUBLIC : APS_REFLECTOR_PRIVATE );
#endif
if ( ZG_BUILD_JOINING_TYPE )
{
NLME_DeviceJoiningInit();
}
}
조정기, 공유기와 단말기는 도대체 어떤 관계입니까?
트리 그룹 이런 네트워크 모드와 다중 루트?
참고: Z-Stack 1.4.1의 장치 유형은 일반적으로 컴파일할 때 컴파일 옵션(ZDO COORDINATOR 및 RTR NWK)을 통해 결정됩니다.모든 응용 예는 장치 종류를 컴파일하기 위해 독립된 프로젝트 파일을 제공합니다.