KW41Z板卡Thread end device例程代码分析
[复制链接]
主要功能
通过coap来进行数据交互,coap初始化,创建了3个URI,分别是'/led'、'/temp'和'/sink’。
sink用来配置目标地址,默认是in6addr_realmlocal_allthreadnodes,看着像广播地址;
led用来控制板子上的led状态;
temp用来读取温度传感器值;
代码调用过程
应用的主要实现
main_task://nwk_ip/app/common/app_init.c
THR_Init://nwk_ip/app/common/app_thread_init.c
OSA_TaskCreate():THR_Task
//THR_Task:用于处理来自物理层、ip层、协议层的任务消息,优先级依次降低;
// 内部调用了NWKU_MsgHandler,未找到源码。
APP_Init://source/end_device_app.c
THR_StartInstance(mThrInstanceId, pStackCfg[0]) //使用默认参数,参数内容有点长,不列出
APP_InitCoapDemo()
COAP_CreateInstance()//无源码
//初始化创建了3个coap URI,分别是'/led','/temp','/sink',服务端口5683
//'/led'回调APP_CoapLedCb:
APP_ProcessLedCmd:
//'on' :App_UpdateStateLeds(gDeviceState_AppLedOn_c)
//'off' :App_UpdateStateLeds(gDeviceState_AppLedOff_c)
//'toggle':App_UpdateStateLeds(gDeviceState_AppLedToggle_c)
//'flash' :App_UpdateStateLeds(gDeviceState_AppLedFlash_c)
//...
COAP_Send(gCoapMsgTypeAckSuccessChanged_c)
//'/temp'回调APP_CoapTempCb:
//gCoapGET_c:App_GetTempDataString
//gCoapPOST_c:shell_printf(pData)
//'/sink'回调APP_CoapSinkCb:
//'create':设置gCoapDestAddress,用于coap消息的目标地址
//'release':设置为默认值
PHY的数据上报
PD_SendMessage:phy层通过此接口调用PD_MAC_SapHandler发送接收的数据报文;
PD_MAC_SapHandler:通过Phy_RegisterSapHandlers接口注册,Phy_RegisterSapHandlers未找到调用的地方
总结
文章内容不多,主要是coap、thread等都是提供的库,SDK中没有实现的源码,所以只是大概的一个过程,接下去的计划是先找找看有没有NXP协议栈的源码,如果没有就打算以openthread再搭建工程来进行协议栈的学习,然后以openthread的内容进行分享了,这样也可以跟其他厂家芯片(以openthread作为thread协议栈的)进行方便的互联。
|