/*********************************************************************************** * @fnmain * * @briefThis 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. * @parambasicRfConfig - file scope variable. Basic RF configuration *data *appState - file scope variable. Holds application state * * @returnnone */ /*********************************************************************************** @函数主函数 @简介“灯开关”程序的起始主函数。在选定程序模式后,由开关节点按键 向 灯节点发送一个 状态切换命令 来控制灯的灭。 @参数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 basicRFbasicRfConfig.panId = PAN_ID;//该程序中关于网络参数PANID 、通道号、短地址都以常量的形式固定;basicRfConfig.channel = RF_CHANNEL;basicRfConfig.ackRequest = TRUE;// 该值为真,该节点发送数据包后,要求接受方收到数据包后返回一个ACK; #ifdef SECURITY_CCMbasicRfConfig.securityKey = key; #endif// Initalise board peripheralshalBoardInit();// 进行时钟设置 和 IO设置,如:LED、按键、LCD等相关外设;halJoystickInit();// 重复上一步基本的初始化,多出部分为可选择功能:开启中断服务子程序;// Initalise hal_rf// 进行RF初始化,如果RF部分初始化失败,则指示灯动作;if(halRfInit()==FAILED) {HAL_ASSERT(FALSE);}// Indicate that device is poweredhalLedSet(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 hereappSwitch();}// Receiver application//灯节点为接收程序;else if(appMode == LIGHT) {// No return from hereappLight();}// Role is undefined. This code should not be reached//如果节点功能未被定义即,非开关非灯,则指示灯动作;HAL_ASSERT(FALSE); }
Viki Shi:
感谢分享