BasicRF 简析(一:main()简析)

/***********************************************************************************

* @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);

}

猜你喜欢

转载自blog.csdn.net/z_hualin/article/details/79010245