BasicRF 简析
时间:10-02
整理:3721RD
点击:
/*********************************************************************************** * @fn main * * @brief This is the main entry of the "Light Switch" application. * After the application modes are chosen the switch can * send toggle commands to a light device. * @param basicRfConfig - file scope variable. Basic RF configuration * data * appState - file scope variable. Holds application state * * @return none */ /*********************************************************************************** @函数 主函数 @简介 “灯开关”程序的起始主函数。在选定程序模式后,由开关节点按键 向 灯节点发送一个 状态切换命令 来控制灯的灭。 @参数 basicRfConfig - Basic RF 配置信息 typedef struct { uint16 myAddr; //本节点地址; uint16 panId; //PANID号; uint8 channel; // 通道号; uint8 ackRequest; //是否要求有应答; #ifdef SECURITY_CCM //安全设置(目前应用不涉及该应用,一般跳过处理); uint8* securityKey; uint8* securityNonce; #endif } basicRfCfg_t; appState – 显示应用程序状态 basicRfRxInfo_t 和 basicRfTxState_t收发的一些信息状态。 @返回值 无 */ void main(void) { uint8 appMode = NONE; //如果程序中 多个功能选择的话 可以考虑 设备模式变量 来进行程序功能的选择; //设备参数的选择也是同样的道理,如:设备编号。 // Config basicRF basicRfConfig.panId = PAN_ID; //该程序中关于网络参数PANID 、通道号、短地址都以常量的形式固定; basicRfConfig.channel = RF_CHANNEL; basicRfConfig.ackRequest = TRUE; // 该值为真,该节点发送数据包后,要求接受方收到数据包后返回一个ACK; #ifdef SECURITY_CCM basicRfConfig.securityKey = key; #endif // Initalise board peripherals halBoardInit(); // 进行时钟设置 和 IO设置,如:LED、按键、LCD等相关外设; halJoystickInit(); // 重复上一步基本的初始化,多出部分为可选择功能:开启中断服务子程序; // Initalise hal_rf // 进行RF初始化,如果RF部分初始化失败,则指示灯动作; if(halRfInit()==FAILED) { HAL_ASSERT(FALSE); } // Indicate that device is powered halLedSet(1); // LED1亮; // Print Logo and splash screen on LCD // 液晶显示logo; utilPrintLogo("Light Switch"); // Wait for user to press S1 to enter menu //等待按下S1 进入功能选择目录; while (halButtonPushed()!=HAL_BUTTON_1); halMcuWaitMs(350); halLcdClear(); // Set application role //通过Joystick操作 赋值给 程序模式变量 以进行功能的选择; //若设备节点功能固定的话,这部分可舍去; appMode = appSelectMode(); halLcdClear(); // Transmitter application //根据 模式变量的值 来进入不同的功能程序; //开关节点为发送程序; if(appMode == SWITCH) { // No return from here appSwitch(); } // Receiver application //灯节点为接收程序; else if(appMode == LIGHT) { // No return from here appLight(); } // Role is undefined. This code should not be reached //如果节点功能未被定义即,非开关非灯,则指示灯动作; HAL_ASSERT(FALSE); }
感谢分享