亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wuart_e.c

?? Zigbee無線網絡節點的串口控制LED燈
?? C
?? 第 1 頁 / 共 2 頁
字號:
{
    MAC_RxFrameData_s *psFrame;
    MAC_Addr_s *psAddr;
    uint16 u16NodeAddr;
    uint8 i;
    // rmm    char acBlankLine[] = "                                ";

    psFrame = &psMcpsInd->uParam.sIndData.sFrame;
    psAddr = &psFrame->sSrcAddr;

    /* Check that this is a data frame */
    if (psMcpsInd->u8Type == MAC_MCPS_IND_DATA)
    {
        /* Check that data is from UART node */
        u16NodeAddr = psAddr->uAddr.u16Short;

        if (u16NodeAddr == COORD_ADDR)
        {
            if (psFrame->au8Sdu[0] == u8RxFrameHandle)
            {
                u8RxFrameHandle++;

                /* Copy frame data to serial buffer for output on UART */
                for (i = 1; i < psFrame->u8SduLength; i++)
                {
                    vSerial_TxChar(psFrame->au8Sdu[i]);
                }
                psFrame->au8Sdu[psFrame->u8SduLength] = 0;                  // Add a 'null' to the end of the data payload (required by the LcdWriteText function).
                vLcdWriteText((char*)&psFrame->au8Sdu[1], 6, 0);
                vLcdRefreshAll();                vLcdScrollUp(1);                vLcdWriteText(acBlankLine, 6, 0);
            }
            /* Must have missed a frame */
            else if (psFrame->au8Sdu[0] > u8RxFrameHandle)
            {
                u8RxFrameHandle = psFrame->au8Sdu[0] + 1;

                /* Copy frame data to serial buffer for output on UART */
                for (i = 1; i < psFrame->u8SduLength; i++)
                {
                    vSerial_TxChar(psFrame->au8Sdu[i]);
                }
                psFrame->au8Sdu[psFrame->u8SduLength] = 0;                  // Add a 'null' to the end of the data payload (required by the LcdWriteText function).
                vLcdWriteText((char*)&psFrame->au8Sdu[1], 6, 0);
                vLcdRefreshAll();                vLcdScrollUp(1);                vLcdWriteText(acBlankLine, 6, 0);
            }
            /* Must be the same frame as last time */
            else if (psFrame->au8Sdu[0] < u8RxFrameHandle)
            {
                /* Dont do anything as we already have the data */
            }
        }
    }
}

/****************************************************************************
 *
 * NAME: vProcessIncomingHwEvent
 *
 * DESCRIPTION:
 * Process any hardware events.
 *
 * PARAMETERS:      Name            RW  Usage
 *                  psAHI_Ind
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vProcessIncomingHwEvent(AppQApiHwInd_s *psAHI_Ind)
{
    /* If this is an event from UART0 */
    if (psAHI_Ind->u32DeviceId == E_AHI_DEVICE_UART0)
    {
        /* If data has been received */
        if ((psAHI_Ind->u32ItemBitmap & 0x000000FF) == E_AHI_UART_INT_RXDATA)
        {
            /* Process UART0 RX interrupt */
            if (((psAHI_Ind->u32ItemBitmap & 0x0000FF00) >> 8) == 0x0D)
            {
                vWUART_TxData();
            }
            else
            {
                vUART_RxCharISR((psAHI_Ind->u32ItemBitmap & 0x0000FF00) >> 8);
            }
        }
        else if (psAHI_Ind->u32ItemBitmap == E_AHI_UART_INT_TX)
        {
            /* Process UART0 TX interrupt */
            vUART_TxCharISR();
        }
    }
}

/****************************************************************************
 *
 * NAME: vTickTimerISR
 *
 * DESCRIPTION:
 *
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vTickTimerISR(uint32 u32Device, uint32 u32ItemBitmap)
{
    static uint8 u8ToggleCount;

    /* Flash LED 1 to show we are alive */
    if (u8ToggleCount++ & 0x40)
    {
	    vLedControl(0, TRUE);    }
    else
    {
	    vLedControl(0, FALSE);    }
    /* rmm
    Commented out. Data now transmittd on the receipt of a CR

    // Do this every 10ms to tx data received on hardware UART
    if (sDeviceData.sSystem.eState == E_STATE_RUNNING)
    {
        vWUART_TxData();
    }
    */
}

/****************************************************************************
 *
 * NAME: vStartActiveScan
 *
 * DESCRIPTION:
 * Start a scan to search for a network to join.
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vStartActiveScan(void)
{
    MAC_MlmeReqRsp_s  sMlmeReqRsp;
    MAC_MlmeSyncCfm_s sMlmeSyncCfm;

    sDeviceData.sSystem.eState = E_STATE_SCANNING;

    /* Request scan */
    sMlmeReqRsp.u8Type = MAC_MLME_REQ_SCAN;
    sMlmeReqRsp.u8ParamLength = sizeof(MAC_MlmeReqScan_s);
    sMlmeReqRsp.uParam.sReqScan.u8ScanType = MAC_MLME_SCAN_TYPE_ACTIVE;
    sMlmeReqRsp.uParam.sReqScan.u32ScanChannels = SCAN_CHANNELS;
    sMlmeReqRsp.uParam.sReqScan.u8ScanDuration = ACTIVE_SCAN_DURATION;

    vAppApiMlmeRequest(&sMlmeReqRsp, &sMlmeSyncCfm);
}

/****************************************************************************
 *
 * NAME: vHandleActiveScanResponse
 *
 * DESCRIPTION:
 * Handle the reponse generated by the stack as a result of the network scan.
 *
 * PARAMETERS:      Name            RW  Usage
 *                  psMlmeInd
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vHandleActiveScanResponse(MAC_MlmeDcfmInd_s *psMlmeInd)
{
    MAC_PanDescr_s *psPanDesc;
    int i;

    /* Make sure it is what we're after */
    if ((psMlmeInd->uParam.sDcfmScan.u8Status == MAC_ENUM_SUCCESS)
        && (psMlmeInd->uParam.sDcfmScan.u8ScanType == MAC_MLME_SCAN_TYPE_ACTIVE))
    {
        /* Determine which, if any, network contains demo coordinator.
           Algorithm for determining which network to connect to is
           beyond the scope of 802.15.4, and we use a simple approach
           of matching the required PAN ID and short address, both of
           which we already know */

        i = 0;
        while (i < psMlmeInd->uParam.sDcfmScan.u8ResultListSize)
        {
            psPanDesc = &psMlmeInd->uParam.sDcfmScan.uList.asPanDescr[i];

            if ((psPanDesc->sCoord.u16PanId == PAN_ID)
             && (psPanDesc->sCoord.u8AddrMode == 2)
             && (psPanDesc->sCoord.uAddr.u16Short == COORD_ADDR))
            {
                /* Matched so start to synchronise and associate */
                sDeviceData.sSystem.u8Channel = psPanDesc->u8LogicalChan;
                vStartAssociate();
                return;
            }
            i++;
        }
    }
    /* Failed to find coordinator: keep trying */
    vStartActiveScan();
}

/****************************************************************************
 *
 * NAME: vStartAssociate
 *
 * DESCRIPTION:
 * Start the association process with the network coordinator.
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * Assumes that a network has been found during the network scan.
 ****************************************************************************/
PRIVATE void vStartAssociate(void)
{
    MAC_MlmeReqRsp_s  sMlmeReqRsp;
    MAC_MlmeSyncCfm_s sMlmeSyncCfm;

    sDeviceData.sSystem.eState = E_STATE_ASSOCIATING;

    /* Create associate request. We know short address and PAN ID of
       coordinator as this is preset and we have checked that received
       beacon matched this */
    sMlmeReqRsp.u8Type = MAC_MLME_REQ_ASSOCIATE;
    sMlmeReqRsp.u8ParamLength = sizeof(MAC_MlmeReqAssociate_s);
    sMlmeReqRsp.uParam.sReqAssociate.u8LogicalChan = sDeviceData.sSystem.u8Channel;
    sMlmeReqRsp.uParam.sReqAssociate.u8Capability = 0x80; /* We want short address, other features off */
    sMlmeReqRsp.uParam.sReqAssociate.u8SecurityEnable = FALSE;
    sMlmeReqRsp.uParam.sReqAssociate.sCoord.u8AddrMode = 2;
    sMlmeReqRsp.uParam.sReqAssociate.sCoord.u16PanId = PAN_ID;
    sMlmeReqRsp.uParam.sReqAssociate.sCoord.uAddr.u16Short = COORD_ADDR;

    vAppApiMlmeRequest(&sMlmeReqRsp, &sMlmeSyncCfm);
}

/****************************************************************************
 *
 * NAME: vHandleAssociateResponse
 *
 * DESCRIPTION:
 * Handle the response generated by the stack as a result of the associate
 * start request.
 *
 * PARAMETERS:      Name            RW  Usage
 *                  psMlmeInd
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vHandleAssociateResponse(MAC_MlmeDcfmInd_s *psMlmeInd)
{
    /* If successfully associated with network coordinator */
    if (psMlmeInd->uParam.sDcfmAssociate.u8Status == MAC_ENUM_SUCCESS)
    {
        /* Store short address that we have been assigned */
        sDeviceData.sSystem.u16ShortAddr = psMlmeInd->uParam.sDcfmAssociate.u16AssocShortAddr;
        /* We are now in the running state */
        sDeviceData.sSystem.eState = E_STATE_RUNNING;

        /* Turn on LED 2 to show we have assocaited */
	    vLedControl(1, TRUE);
    }
    else
    {
        /* Try, try again */
        vStartActiveScan();
    }
}

/****************************************************************************
 *
 * NAME: vTxUARTData
 *
 * DESCRIPTION:
 *
 * PARAMETERS:      Name            RW  Usage
 * None.
 *
 * RETURNS:
 * None.
 *
 * NOTES:
 * None.
 ****************************************************************************/
PRIVATE void vWUART_TxData(void)
{
    MAC_McpsReqRsp_s  sMcpsReqRsp;
    MAC_McpsSyncCfm_s sMcpsSyncCfm;
    uint8 *pu8Payload, i = 0;
    int16 i16RxChar;

    i16RxChar = i16Serial_RxChar();

    if (i16RxChar >= 0)
    {
        /* Create frame transmission request */
        sMcpsReqRsp.u8Type = MAC_MCPS_REQ_DATA;
        sMcpsReqRsp.u8ParamLength = sizeof(MAC_McpsReqData_s);
        /* Set handle so we can match confirmation to request */
        sMcpsReqRsp.uParam.sReqData.u8Handle = 1;
        /* Use short address for source */
        sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.u8AddrMode = 2;
        sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.u16PanId = PAN_ID;
        sMcpsReqRsp.uParam.sReqData.sFrame.sSrcAddr.uAddr.u16Short = sDeviceData.sSystem.u16ShortAddr;
        /* Use short address for destination */
        sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.u8AddrMode = 2;
        sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.u16PanId = PAN_ID;
        sMcpsReqRsp.uParam.sReqData.sFrame.sDstAddr.uAddr.u16Short = COORD_ADDR;
        /* Frame requires ack but not security, indirect transmit or GTS */
        sMcpsReqRsp.uParam.sReqData.sFrame.u8TxOptions = MAC_TX_OPTION_ACK;

        pu8Payload = sMcpsReqRsp.uParam.sReqData.sFrame.au8Sdu;
        pu8Payload[i++] = u8TxFrameHandle++;
        pu8Payload[i++] = (uint8)i16RxChar;

        while ((i16RxChar >= 0) && (i < MAX_DATA_PER_FRAME))
        {
            i16RxChar = i16Serial_RxChar();

            if (i16RxChar >= 0)
            {
                /* Set payload data */
                pu8Payload[i++] = (uint8)i16RxChar;
            }
        }

        /* Set frame length */
        sMcpsReqRsp.uParam.sReqData.sFrame.u8SduLength = i;

        /* Request transmit */
        vAppApiMcpsRequest(&sMcpsReqRsp, &sMcpsSyncCfm);
    }
}

/****************************************************************************/
/***        END OF FILE                                                   ***/
/****************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品不卡在线| 亚洲精品日产精品乱码不卡| 中文字幕乱码日本亚洲一区二区| 亚洲黄色小视频| 紧缚捆绑精品一区二区| 在线亚洲高清视频| 国产欧美日韩不卡| 美女任你摸久久| 欧美日韩在线一区二区| 欧美韩日一区二区三区四区| 日本vs亚洲vs韩国一区三区 | 无吗不卡中文字幕| 国产日韩精品一区| 亚洲激情图片qvod| 国产麻豆成人精品| 欧美一二三区在线| 亚洲观看高清完整版在线观看 | 麻豆成人综合网| 91福利小视频| 国产精品夫妻自拍| 国产69精品久久777的优势| 91精品国产综合久久久久| 伊人开心综合网| 色域天天综合网| 亚洲毛片av在线| 91色在线porny| 亚洲人成网站色在线观看| 成人aa视频在线观看| 亚洲国产高清aⅴ视频| 国产乱子伦视频一区二区三区 | 成人免费黄色在线| 亚洲美女少妇撒尿| 欧美一级片在线| 五月婷婷久久丁香| 欧美另类变人与禽xxxxx| 亚洲免费观看高清完整| 一道本成人在线| 亚洲夂夂婷婷色拍ww47| 欧美在线啊v一区| 亚洲福利一二三区| 欧美丰满一区二区免费视频| 香港成人在线视频| 91精品国产一区二区三区| 日本美女一区二区三区| 日韩欧美高清dvd碟片| 国产综合色在线| 欧美精品第1页| 成人av午夜电影| 日本韩国欧美三级| 精品少妇一区二区| 中文字幕在线不卡一区| 日韩电影一区二区三区| 成人免费三级在线| 欧美一三区三区四区免费在线看 | 亚洲欧洲精品天堂一级| 久久免费视频色| 粉嫩欧美一区二区三区高清影视| 久久先锋影音av鲁色资源| 国产成+人+日韩+欧美+亚洲 | 亚洲午夜在线观看视频在线| 成人性视频网站| 26uuu精品一区二区三区四区在线| 美女视频黄 久久| 国产免费久久精品| 在线看一区二区| 免费的国产精品| 国产精品伦理一区二区| 欧美亚洲日本国产| 国产美女精品人人做人人爽 | 韩国女主播一区| 国产欧美精品一区| 欧美在线高清视频| 国产成人免费视频| 精品午夜久久福利影院| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 精品国偷自产国产一区| 99久久精品情趣| 蜜臀av一区二区| 玉足女爽爽91| 久久久久久久综合色一本| 在线观看日韩电影| 国产成人av一区二区三区在线| 一二三四社区欧美黄| 久久亚洲精品小早川怜子| 欧美在线看片a免费观看| 国产一区二区精品久久99 | 久久久99精品久久| 在线视频你懂得一区| 国产成人精品亚洲午夜麻豆| 天天爽夜夜爽夜夜爽精品视频| 日韩一区欧美一区| 精品国产免费一区二区三区四区 | 亚洲精品菠萝久久久久久久| 久久精品视频免费| 日韩亚洲欧美一区二区三区| 色噜噜偷拍精品综合在线| 国产综合久久久久久鬼色 | 亚洲一级二级三级在线免费观看| 国产欧美视频一区二区| 日韩美女一区二区三区| 欧美日韩不卡在线| 在线欧美日韩国产| 91美女精品福利| 成人av电影在线网| 成人永久看片免费视频天堂| 国产资源在线一区| 国产在线麻豆精品观看| 麻豆一区二区三区| 看片的网站亚洲| 免费成人av在线| 一区二区激情小说| 天天综合天天做天天综合| 在线观看欧美黄色| 色哟哟在线观看一区二区三区| 成人小视频在线| 国产成人aaa| 欧美日韩国产另类不卡| 在线亚洲精品福利网址导航| 在线中文字幕一区二区| 日本韩国欧美在线| 精品婷婷伊人一区三区三| 欧美日韩中文字幕一区| 在线观看av一区二区| 欧美亚洲免费在线一区| 欧美日韩免费一区二区三区视频| 欧美视频中文字幕| 欧美日韩国产一区二区三区地区| 91精品国产色综合久久不卡电影 | 亚洲最大成人综合| 一区二区三区欧美视频| 亚洲成a人片综合在线| 日韩和欧美的一区| 国产真实乱偷精品视频免| 国产激情一区二区三区四区| 东方aⅴ免费观看久久av| 日本一区二区三区四区| 亚洲欧美激情视频在线观看一区二区三区| 欧美天天综合网| 制服丝袜一区二区三区| 欧美精品一区二区高清在线观看| 国产无一区二区| 尤物av一区二区| 美腿丝袜亚洲色图| 福利电影一区二区| 欧美三级电影在线观看| 欧美一区二区三级| 亚洲国产成人私人影院tom| 亚洲免费大片在线观看| 蜜乳av一区二区三区| 成人综合婷婷国产精品久久蜜臀| 91激情在线视频| 欧美不卡视频一区| 亚洲男人天堂av| 美女在线观看视频一区二区| 成人av网在线| 宅男在线国产精品| 国产精品福利一区二区| 免费在线观看一区| 99精品视频在线观看免费| 欧美一区三区二区| 中文字幕一区二区不卡| 免费在线观看一区二区三区| av不卡免费电影| 日韩精品一区二区在线| 亚洲精品高清视频在线观看| 国产揄拍国内精品对白| 欧美亚洲禁片免费| 国产女人aaa级久久久级| 日本不卡一区二区三区高清视频| 本田岬高潮一区二区三区| 日韩欧美视频一区| 亚洲最大的成人av| 成人中文字幕在线| 精品国精品自拍自在线| 午夜视频久久久久久| 91在线视频在线| 国产清纯白嫩初高生在线观看91| 日本麻豆一区二区三区视频| 在线精品国精品国产尤物884a| 欧美国产欧美综合| 韩国精品久久久| 日韩一区二区免费视频| 亚洲综合视频在线| 色综合天天综合狠狠| 国产精品日日摸夜夜摸av| 麻豆国产欧美日韩综合精品二区| 91福利视频网站| 亚洲美女免费视频| 91年精品国产| 1000精品久久久久久久久| 丁香一区二区三区| 国产视频一区二区在线观看| 韩国一区二区三区| 久久噜噜亚洲综合| 国产一区二区三区四区在线观看| 日韩免费在线观看| 麻豆91免费看| 久久人人97超碰com| 国产在线不卡视频| 欧美国产精品久久|