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

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

?? ftrfhub.c

?? 用cypress的3721芯片做的無線中心結點c代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
//----------------------------------------------------------------------------
//
// FTRFHub.c - Hub Implementation
//
//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
//
// Copyright 2008, Cypress Semiconductor Corporation.
//
// This software is owned by Cypress Semiconductor Corporation (Cypress)
// and is protected by and subject to worldwide patent protection (United
// States and foreign), United States copyright laws and international
// treaty provisions. Cypress hereby grants to licensee a personal,
// non-exclusive, non-transferable license to copy, use, modify, create
// derivative works of, and compile the Cypress Source Code and derivative
// works for the sole purpose of creating custom software in support of
// licensee product to be used only in conjunction with a Cypress integrated
// circuit as specified in the applicable agreement. Any reproduction,
// modification, translation, compilation, or representation of this
// software except as specified above is prohibited without the express
// written permission of Cypress.
//
// Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND,EXPRESS OR IMPLIED,
// WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
// Cypress reserves the right to make changes without further notice to the
// materials described herein. Cypress does not assume any liability arising
// out of the application or use of any product or circuit described herein.
// Cypress does not authorize its products for use as critical components in
// life-support systems where a malfunction or failure may reasonably be
// expected to result in significant injury to the user. The inclusion of
// Cypress' product in a life-support systems application implies that the
// manufacturer assumes all risk of such use and in doing so indemnifies
// Cypress against all charges.
//
// Use may be limited by and subject to the applicable Cypress software
// license agreement.
//--------------------------------------------------------------------------

#include "FTRFHub.h"
#include "CYFISNP_protocol.h"

#define ENABLE_BIND_BUTTON      0   // 0 = enter bind only via PC command
                                    // 1 = enable local bind button

static void showDevRecords  (void);
static void showLeds        (void);

// ---------------------------------------------------------------------------
// Private variables
// ---------------------------------------------------------------------------
#define LED_I2C_PULSE_TIME      (25/CYFISNP_TIMER_UNITS)    // ON pulsewidth
static WORD ledI2cPulseTimer;

#define LED_I2C_PULSE_SCALER    20              // I2C polls per LED pulse
static signed char ledI2CPulseScaler;

#define LED_GREEN_PULSE         (25/CYFISNP_TIMER_UNITS)    // ON pulsewidth
static WORD greenLedTimer;


// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
// main()
//
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
void main()
{
    EzI2Cs_SetRamBuffer(sizeof(I2CBuffer), sizeof(I2CBuffer), pI2C);

    M8C_EnableGInt;                     //Enable Interrupts

    EzI2Cs_Start();                     //Turn on I2C

    LED_GREEN_Start();
    LED_RED_Start();

    LED_GREEN_On();

#if CYFISNP_DEBUG || DEBUG_I2C
    TX8_Start(0);
    showDevRecords();
#endif

    LED_GREEN_Off();
    CYFISNP_Start();                // Start Protocol (and radio)

    // -----------------------------------------------------------------------
    // POLLING LOOP
    // -----------------------------------------------------------------------
    while (1)
    {
        // -------------------------------------------------------------------
        // Periodic service SNP (processes a maximum of 1 Rx packet, so if
        //  you're expecting a packet every 10mS, you should be calling this
        //  at LEAST once every 10 mS)
        // -------------------------------------------------------------------
        CYFISNP_Run();              // Run CYFISNP once thru the loop.

        // -------------------------------------------------------------------
        // CYFISNP Bind Mode lasts ~12 seconds and SCD wants it longer,
        //  so each SCD bind command results in 2x CYFISNP Bind cycles
        // -------------------------------------------------------------------
        if (bindRetryCt != 0 && CYFISNP_eProtState != CYFISNP_BIND_MODE)
        {
            --bindRetryCt;
            CYFISNP_BindStart();
            CYFISNP_OutStr("<RestartBind>");
        }

        // -------------------------------------------------------------------
        // Control RED and GREEN LEDs
        // -------------------------------------------------------------------
        showLeds();

        // -------------------------------------------------------------------
        // Serve Rx data from node(s)
        // -------------------------------------------------------------------
        if (CYFISNP_RxDataPend())   // If SNP Rx data pending
        {
            CYFISNP_TimeSet(&greenLedTimer, LED_GREEN_PULSE);
            LED_GREEN_On();
            ServeSNPPackets();      // Service pending Rx data
        }

        // -------------------------------------------------------------------
        // Service possible I2C request from Host
        // -------------------------------------------------------------------
        CheckHostRequest();
    }
}


///---------------------------------------------------------------------------
// ServeSNPPackets() - A SNP Rx packet is pending, copy the packet to I2C buffer
//             and store in the buffer.
//
//Variables:
//             pApiPkt - pointer to SNP data
//             numberOfPacketsInBuffer - running packet count in the hub buffer
//             pNextWrite - pointer to the start of where the data is going to
//                          be placed that was received from SNP
//----------------------------------------------------------------------------
void ServeSNPPackets(void)
{
    BYTE index = 0;
    if (numberOfPacketsInBuffer != MAX_BUFF_PKTS) {
        pApiPkt = CYFISNP_RxDataGet();      // ptr to Rx API Packet

        devId = pApiPkt->devId;
        switch (pApiPkt->type) {
        //--------------------------------------------------------------------
        case CYFISNP_API_TYPE_BIND_RSP_ACK:
            bindRetryCt = 0;
            bindNodeId = pApiPkt->devId;
            bindNodeMID[0] = pApiPkt->payload[0];
            bindNodeMID[1] = pApiPkt->payload[1];
            bindNodeMID[2] = pApiPkt->payload[2];
            bindNodeMID[3] = pApiPkt->payload[3];
#ifdef CYFISNP_DEBUG
            CYFISNP_OutStr("\r\nSNP_BRespAck MID=");
            CYFISNP_OutHex(bindNodeMID[0]);    CYFISNP_OutHex(bindNodeMID[1]);
            CYFISNP_OutHex(bindNodeMID[2]);    CYFISNP_OutHex(bindNodeMID[3]);
#endif
            break;

        //--------------------------------------------------------------------
        case CYFISNP_API_TYPE_CONF_BCDR:
        case CYFISNP_API_TYPE_CONF:
        case CYFISNP_API_TYPE_SYNC_BCDR:
        case CYFISNP_API_TYPE_SYNC:
            pNextWrite->length = pApiPkt->length;
            pNextWrite->rssi = pApiPkt->rssi;
            pNextWrite->devId = pApiPkt->devId;
            length = pApiPkt->length;
            for (index = 0; index<=length; index++) {
                pNextWrite->payload[index] = pApiPkt->payload[index];
            }
            WriteBufferManager();       // manage pointer and buffer
#if CYFISNP_DEBUG
            CYFISNP_OutStr("<RxPkts=");
            CYFISNP_OutHex(numberOfPacketsInBuffer);
            CYFISNP_OutChar('>');
#endif
            break;
        default:
            break;
        }
        CYFISNP_RxDataRelease();        // Free the Rx buffer for reuse
    }
}


//----------------------------------------------------------------------------
// showI2C_Buffer() - Show Rx/Tx I2C buffer on TX8 serial port for debug
//----------------------------------------------------------------------------
#ifdef DEBUG_I2C
void showI2C_Buffer(const BYTE *msg, BYTE len) {
    BYTE *pch = &I2CBuffer[0];
    CYFISNP_OutStr(msg);
    while (len-- != 0) {
        CYFISNP_OutHex(*pch++);
        CYFISNP_OutChar(',');
    }
}
#else
#define showI2C_Buffer(msg, len)
#endif

//----------------------------------------------------------------------------
//
// CheckHostRequest() - Of the host has made a request for a packet, figure out
//              what type of packet is requested and return it thru the
//              I2C Buffer
//
//Variables:
//        I2CBuffer - buffer that EZI2C has access to. Used when hub wants to
//                    return data back to host.
//        sTestTxPkt - instantiation of CYFISNP_API_PKT. Used so data can be
//                     put in the defined structure by SNP
//        numberOfPacketsInBuffer - running packet count in the hub buffer
//        pNextRead - pointer to the start of the next set of data to return
//                    to host.
//----------------------------------------------------------------------------
void CheckHostRequest()
{
    BYTE ivar = 0;
    BYTE index = 0;
    BYTE payloadIndex = 0;

    switch (I2CBuffer[COMMAND_BYTE]) {
    case HOST_CONFIG_STATUS:
        showI2C_Buffer("\r\nI2C Rx:", 1);
        I2CBuffer[1] = FIRST_TOUCH_RF_DEVICE;
        I2CBuffer[2] = FW_VERSION;
        I2CBuffer[3] = (BYTE)CYFISNP_eProtState;   //current state of SNP Protocol
        CYFISNP_SetPtr(&I2CBuffer[4]);
        CYFISNP_SetLength(0x04);
        CYFISNP_GetFuses();
        I2CBuffer[8] = RESERVED;
        I2CBuffer[9] = NETWORK_SIZE;
        I2CBuffer[0] = HOST_CONFIG_STATUS_RSP;
        showI2C_Buffer(" Tx:", 10);
        break;

    // -----------------------------------------------------------------------
    // get next packet from hub buffer and return to HOST via I2CBuffer
    // -----------------------------------------------------------------------
    case FETCH_NXT_PKT:
        if (--ledI2CPulseScaler < 0) {
            ledI2CPulseScaler = LED_I2C_PULSE_SCALER;
            CYFISNP_TimeSet(&ledI2cPulseTimer, LED_I2C_PULSE_TIME);
            LED_RED_On();
        }

        if (numberOfPacketsInBuffer != 0) {
            showI2C_Buffer("\r\nI2C Rx:", 1);
            length = pNextRead->length;
            devId  = pNextRead->devId;

            //stuff I2C buffer with data
            I2CBuffer[1] = numberOfPacketsInBuffer;
            I2CBuffer[2] = length;
            I2CBuffer[3] = pNextRead->rssi;
            I2CBuffer[4] = RESERVED;
            I2CBuffer[5] = devId;
            for (index=6; index < (length+6); index++)
            {
                I2CBuffer[index] = pNextRead->payload[payloadIndex];
                payloadIndex++;
            }
            ReadBufferManager();
            showI2C_Buffer(" Tx:", 10);
        }
        else
        {
            I2CBuffer[1] = 0xFF;   // if Rx messages available, return 0xFF
            CYFISNP_OutChar('*');
        }
        I2CBuffer[RESPONSE_BYTE] = FETCH_NXT_PKT_RSP;
        break;

    // -----------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产女同性恋一区二区| 国产成人免费网站| 国产精品天天摸av网| 日韩免费一区二区| 欧美精品欧美精品系列| 欧美日韩视频在线一区二区 | 亚洲专区一二三| 国产亚洲福利社区一区| 欧美精品一区二| 久久久久九九视频| 国产精品全国免费观看高清| 久久精品夜夜夜夜久久| 亚洲国产精品成人综合| 国产精品久久久久久久久久久免费看 | 亚洲精品一线二线三线| 欧美不卡一区二区三区四区| 精品免费日韩av| 久久伊99综合婷婷久久伊| 久久久久97国产精华液好用吗| 久久久三级国产网站| 国产欧美日韩在线观看| 国产精品久久一级| 亚洲一区二区三区四区五区中文| 亚洲成av人**亚洲成av**| 精品亚洲国内自在自线福利| 国产ts人妖一区二区| 国产精品亚洲专一区二区三区| 成人免费电影视频| 色999日韩国产欧美一区二区| 欧美久久婷婷综合色| 精品日韩成人av| 亚洲天堂av一区| 日韩—二三区免费观看av| 国产精品性做久久久久久| 色综合久久中文综合久久牛| 欧美精品乱码久久久久久| 久久久亚洲欧洲日产国码αv| 亚洲美女在线国产| 久久www免费人成看片高清| 99视频精品免费视频| 欧美日韩dvd在线观看| 国产日韩综合av| 亚洲成人免费影院| 不卡av免费在线观看| 91精品国产入口| 中文字幕在线一区免费| 日韩av一区二区在线影视| 丰满岳乱妇一区二区三区 | 一区二区三区在线看| 久久精品国产99| 色哟哟亚洲精品| 久久精品欧美日韩| 丝袜美腿成人在线| 9久草视频在线视频精品| 欧美一级欧美三级| 亚洲午夜久久久久| 99精品欧美一区二区三区小说| 日韩欧美亚洲一区二区| 一区二区三区在线免费视频| 大胆欧美人体老妇| 久久女同互慰一区二区三区| 日韩国产欧美在线观看| 欧洲av在线精品| 自拍视频在线观看一区二区| 国产精品一色哟哟哟| 日韩一级免费一区| 日日夜夜精品视频免费| 99久久夜色精品国产网站| 国产网站一区二区| 麻豆成人91精品二区三区| 51精品国自产在线| 亚洲成年人网站在线观看| 欧美亚洲动漫精品| 亚洲欧美色图小说| 93久久精品日日躁夜夜躁欧美| 国产三级一区二区三区| 国产精品综合二区| 久久久久久久久岛国免费| 国产麻豆欧美日韩一区| 久久蜜臀中文字幕| 国产精品中文字幕一区二区三区| 精品久久人人做人人爰| 国产精品一级二级三级| 国产婷婷色一区二区三区在线| 免费看日韩a级影片| 欧美一区二区三区免费在线看 | 中文字幕精品一区| 成人性生交大片免费看视频在线| 欧美韩国日本不卡| 色爱区综合激月婷婷| 一级做a爱片久久| 欧美老人xxxx18| 久久se这里有精品| 国产精品久久久久久久久免费桃花 | 亚洲成人你懂的| 欧美精品久久久久久久多人混战 | 久久久久久久久99精品| 国产不卡在线播放| 综合中文字幕亚洲| 欧美日韩国产美| 久久99精品国产麻豆不卡| 久久久亚洲午夜电影| 92精品国产成人观看免费| 亚欧色一区w666天堂| 精品少妇一区二区三区免费观看| 成人综合在线视频| 亚洲综合一区二区三区| 欧美成人女星排行榜| 成人a级免费电影| 亚洲国产日韩精品| 亚洲精品一线二线三线| 91老师片黄在线观看| 日韩激情视频在线观看| 国产欧美一区二区三区在线老狼| 日本黄色一区二区| 国产在线观看一区二区| 亚洲综合丁香婷婷六月香| 精品精品欲导航| 91成人在线观看喷潮| 韩国成人福利片在线播放| 亚洲女人小视频在线观看| 精品免费日韩av| 欧美三级在线看| 不卡一区在线观看| 久久99热这里只有精品| 亚洲三级小视频| 26uuu国产在线精品一区二区| 在线观看国产一区二区| 国产成人精品免费网站| 免费一区二区视频| 亚洲一区中文日韩| 国产精品网站一区| 久久久久久久一区| 日韩一区二区免费在线观看| 欧美亚洲一区三区| 99久久99久久综合| 懂色av一区二区在线播放| 日韩黄色免费网站| 亚洲综合色噜噜狠狠| 中文字幕在线观看不卡| 久久女同互慰一区二区三区| 欧美巨大另类极品videosbest| 色综合天天综合色综合av | 自拍偷拍国产精品| 国产欧美一区二区精品仙草咪| 69久久夜色精品国产69蝌蚪网| 91麻豆.com| 日本韩国欧美一区二区三区| 成人免费高清在线| 福利电影一区二区| 国产不卡一区视频| 成av人片一区二区| av高清不卡在线| av福利精品导航| 97se狠狠狠综合亚洲狠狠| 成人av电影观看| 91免费看`日韩一区二区| 99久久精品情趣| 色婷婷精品大视频在线蜜桃视频| 99视频在线观看一区三区| 97久久超碰国产精品| 色婷婷激情一区二区三区| 在线观看网站黄不卡| 欧美午夜宅男影院| 5858s免费视频成人| 欧美一区二区三区免费大片| 日韩精品在线看片z| 国产亲近乱来精品视频 | 在线看国产一区二区| 在线免费观看不卡av| 欧美日本在线一区| 日韩免费观看高清完整版在线观看| 欧美大尺度电影在线| 国产婷婷一区二区| 亚洲另类在线视频| 石原莉奈一区二区三区在线观看| 免费观看一级欧美片| 国产一区二区三区不卡在线观看| 粉嫩高潮美女一区二区三区| 色综合一区二区三区| 91超碰这里只有精品国产| 精品国产污网站| 国产精品国产三级国产普通话蜜臀| 亚洲综合在线观看视频| 久久精品国产一区二区| 成人动漫一区二区在线| 欧美性大战久久久| 久久久五月婷婷| 亚洲国产毛片aaaaa无费看 | 精品国产不卡一区二区三区| 国产三级精品在线| 亚洲成人免费视频| 成人免费视频网站在线观看| 在线观看亚洲专区| 久久婷婷国产综合精品青草 | 欧美日韩的一区二区| 国产日产欧美精品一区二区三区| 亚洲一区二区三区免费视频| 国产一区二区三区四区在线观看| 91视频国产资源|