This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
用Z-Stack 3.0.2 库CC2530芯片:SampleLight设置为协调器,SampleSwitch为终端,抓取的协议看已连接,但是按终端的按键Wireshark抓不到数据,协调器的灯也没变化。
终端的按键代码:
if ( keys & HAL_KEY_SW_7 )
{
zclGeneral_SendOnOff_CmdToggle( SAMPLESW_ENDPOINT,&zclSampleSw_DstAddr,FALSE, bdb_getZCLFrameCounter() );
HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);
}
可以看到终端这边的LED2切换。但Wireshark软件上看不到数据。请各位指点迷津!谢谢!3.0.2_1.rar
您好:谢谢您的回复,代码是按您给的链接里的方法来修改的,删除了UI。
目前在:SampleLight端加:
if ( keys & HAL_KEY_SW_7)
{
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION|BDB_COMMISSIONING_MODE_FINDING_BINDING);//协调器
HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
}
在SampleSwitch代码增加:
if ( keys & HAL_KEY_SW_1 )
{
HalLedSet(HAL_LED_1,HAL_LED_MODE_TOGGLE);
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);
}
但是依然不能入网。附Wireshark抓包文件:0827.rar
您好:按您所说的,只在初始化部分各加一句,其它部分没做任何更改,代码如下:
SampleSwitch终端初始化
void zclSampleSw_Init( byte task_id )
{
zclSampleSw_TaskID = task_id;
// Set destination address to indirect
zclSampleSw_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;
zclSampleSw_DstAddr.endPoint = 0;
zclSampleSw_DstAddr.addr.shortAddr = 0;
// Register the Simple Descriptor for this application
bdb_RegisterSimpleDescriptor( &zclSampleSw_SimpleDesc );
// Register the ZCL General Cluster Library callback functions
zclGeneral_RegisterCmdCallbacks( SAMPLESW_ENDPOINT, &zclSampleSw_CmdCallbacks );
zclSampleSw_ResetAttributesToDefaultValues();
// Register the application's attribute list
zcl_registerAttrList( SAMPLESW_ENDPOINT, zclSampleSw_NumAttributes, zclSampleSw_Attrs );
// Register the Application to receive the unprocessed Foundation command/response messages
zcl_registerForMsg( zclSampleSw_TaskID );
// Register low voltage NV memory protection application callback
RegisterVoltageWarningCB( zclSampleApp_BatteryWarningCB );
// Register for all key events - This app will handle all key events
RegisterForKeys( zclSampleSw_TaskID );
bdb_RegisterCommissioningStatusCB( zclSampleSw_ProcessCommissioningStatus );
// Register for a test endpoint
afRegister( &sampleSw_TestEp );
#ifdef ZCL_DIAGNOSTIC
// Register the application's callback function to read/write attribute data.
// This is only required when the attribute data format is unknown to ZCL.
zcl_registerReadWriteCB( SAMPLESW_ENDPOINT, zclDiagnostic_ReadWriteAttrCB, NULL );
if ( zclDiagnostic_InitStats() == ZSuccess )
{
// Here the user could start the timer to save Diagnostics to NV
}
#endif
#if defined (OTA_CLIENT) && (OTA_CLIENT == TRUE)
// Register for callback events from the ZCL OTA
zclOTA_Register(zclSampleSw_TaskID);
#endif
zdpExternalStateTaskID = zclSampleSw_TaskID;
UI_Init(zclSampleSw_TaskID, SAMPLEAPP_LCD_AUTO_UPDATE_EVT, SAMPLEAPP_KEY_AUTO_REPEAT_EVT, &zclSampleSw_IdentifyTime, APP_TITLE, &zclSampleSw_UiUpdateLcd, zclSampleSw_UiStatesMain);
UI_UpdateLcd();
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING);//
}
SampleLight协调器初始化
void zclSampleLight_Init( byte task_id )
{
zclSampleLight_TaskID = task_id;
// Set destination address to indirect
zclSampleLight_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;
zclSampleLight_DstAddr.endPoint = 0;
zclSampleLight_DstAddr.addr.shortAddr = 0;
// Register the Simple Descriptor for this application
bdb_RegisterSimpleDescriptor( &zclSampleLight_SimpleDesc );
// Register the ZCL General Cluster Library callback functions
zclGeneral_RegisterCmdCallbacks( SAMPLELIGHT_ENDPOINT, &zclSampleLight_CmdCallbacks );
// Register the application's attribute list
zclSampleLight_ResetAttributesToDefaultValues();
zcl_registerAttrList( SAMPLELIGHT_ENDPOINT, zclSampleLight_NumAttributes, zclSampleLight_Attrs );
#ifdef ZCL_LEVEL_CTRL
zclSampleLight_LevelLastLevel = zclSampleLight_LevelCurrentLevel;
#endif
// Register the Application to receive the unprocessed Foundation command/response messages
zcl_registerForMsg( zclSampleLight_TaskID );
#ifdef ZCL_DISCOVER
// Register the application's command list
zcl_registerCmdList( SAMPLELIGHT_ENDPOINT, zclCmdsArraySize, zclSampleLight_Cmds );
#endif
// Register low voltage NV memory protection application callback
RegisterVoltageWarningCB( zclSampleApp_BatteryWarningCB );
// Register for all key events - This app will handle all key events
RegisterForKeys( zclSampleLight_TaskID );
bdb_RegisterCommissioningStatusCB( zclSampleLight_ProcessCommissioningStatus );
// Register for a test endpoint
afRegister( &sampleLight_TestEp );
#ifdef ZCL_DIAGNOSTIC
// Register the application's callback function to read/write attribute data.
// This is only required when the attribute data format is unknown to ZCL.
zcl_registerReadWriteCB( SAMPLELIGHT_ENDPOINT, zclDiagnostic_ReadWriteAttrCB, NULL );
if ( zclDiagnostic_InitStats() == ZSuccess )
{
// Here the user could start the timer to save Diagnostics to NV
}
#endif
//GP_UPDATE
#if (ZG_BUILD_RTR_TYPE)
gp_RegisterCommissioningModeCB(gp_CommissioningMode);
gp_RegisterGPChangeChannelReqCB(gp_ChangeChannelReq);
#endif
zdpExternalStateTaskID = zclSampleLight_TaskID;
UI_Init(zclSampleLight_TaskID, SAMPLEAPP_LCD_AUTO_UPDATE_EVT, SAMPLEAPP_KEY_AUTO_REPEAT_EVT, &zclSampleLight_IdentifyTime, APP_TITLE, &zclSampleLight_UiUpdateLcd, zclSampleLight_UiStatesMain);
UI_UpdateLcd();
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION|BDB_COMMISSIONING_MODE_FINDING_BINDING);//协调器
}
抓包文件如附件:ydm.rar
您好:由于您回复的那条指令看不全,我测试了以下两条指令:
//bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION|BDB_COMMISSIONING_MODE_FINDING_BINDING
|BDB_COMMISSIONING_MODE_INITIALIZATION);//2
bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION|BDB_COMMISSIONING_MODE_FINDING_BINDING
|BDB_COMMISSIONING_MODE_NWK_STEERING);//1
这两条,依然不行。附两次测试的抓包文件如下,另外跟预编译配置有关系没?我协调器配置位为:
BDB_REPORTING
SECURE=1
TC_LINKKEY_JOIN
NV_INIT
xNV_RESTORE
xZTOOL_P1
xMT_TASK
xMT_APP_FUNC
xMT_SYS_FUNC
xMT_ZDO_FUNC
xMT_ZDO_MGMT
xMT_APP_CNF_FUNC
LCD_SUPPORTED=DEBUG
MULTICAST_ENABLED=FALSE
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_ON_OFF
ZCL_SCENES
ZCL_GROUPS
ZCL_LEVEL_CTRL
终端配置为:
SECURE=1
TC_LINKKEY_JOIN
NV_INIT
NV_RESTORE
xPOWER_SAVING
NWK_AUTO_POLL
xZTOOL_P1
xMT_TASK
xMT_APP_FUNC
xMT_SYS_FUNC
xMT_ZDO_FUNC
xMT_ZDO_MGMT
xMT_APP_CNF_FUNC
LCD_SUPPORTED=DEBUG
MULTICAST_ENABLED=FALSE
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_BASIC
ZCL_IDENTIFY
ZCL_ON_OFF
ZCL_GROUPS
谢谢!