/***********************************************************************************
* @fn appLight
*
* @brief Application code for light application. Puts MCU in endless
* loop waiting for user input from joystick.
* //等待接收的死循环;
* @param basicRfConfig - file scope variable. Basic RF configuration data
* //BasicRF基本配置参数;
* pRxData - file scope variable. Pointer to buffer for RX data
* //指向接收数据的缓冲区;
* @return none
*/
static void appLight()
{
halLcdWriteLine(HAL_LCD_LINE_1, "Light"); //LCD 相关提示;
halLcdWriteLine(HAL_LCD_LINE_2, "Ready");
#ifdef ASSY_EXP4618_CC2420
halLcdClearLine(1);
halLcdWriteSymbol(HAL_LCD_SYMBOL_RX, 1);
#endif
// Initialize BasicRF
//BasicRF初始化,参看上篇;
basicRfConfig.myAddr = LIGHT_ADDR;
if(basicRfInit(&basicRfConfig)==FAILED) {
HAL_ASSERT(FALSE);
}
basicRfReceiveOn(); //再次将txState.receiveOn设置为TRUE,并进入接收状态;
// Main loop
//主循环,一旦有接收数据,则进行处理;
//对于灯开关例程中 无复杂操作的主循环的内容,即:青色加粗部分 简单修改后完全可以写至RF中断服务子程序中来完成;
//对于复杂的操作,RF中断优先级比较高,可以通过标志位把 不重要的部分 分离出中断服务子程序,以响应其他中断;
while (TRUE) {
while(!basicRfPacketIsReady()); //接收中断完成则跳出轮询,进行后续的数据处理等操作;
//将接收的数据写入pRsData;
//若接收数据命令正确则LED灯状态切换一次;
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {
if(pRxData[0] == LIGHT_TOGGLE_CMD) {
halLedToggle(1);
}
}
}
}