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

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

?? pcieepromcli.c

?? dsp DM642 pci 詳細的開發(fā)例程
?? C
字號:
// PciEEPROMCLI.c
//////////////////////////////////////////////////////////////////////////////
////
////  Copyright (c) 2003, Valley Technologies, Inc.
////  All rights reserved.
////
//////////////////////////////////////////////////////////////////////////////
////
////  $Header $
////
////  $ReleaseClass: src $
////
////  Original Author                 : ebersole
////  Most Recent Contributing $Author: ebersole $
////
//////////////////////////////////////////////////////////////////////////////
////
////  This file contains the CLI routines needed for the Pci-EEPROM submenu.
////  These routines read the contents of the PCI-EEPROM and do various things
////  to it (display, save to file, calculate checksum).
////  The low-level dirty work is done by the LED part of the DM642 Library.
////
//////////////////////////////////////////////////////////////////////////////


//############################################################################


// Includes
#include <stdio.h>
#include "dm642_lib.h"
#include "Dm642Cli.h"


//############################################################################
//                           Function Prototypes
//############################################################################


static void dumpPciEEPROMToScreen    (DM642_HANDLE hDM642);
static void savePciEEPROMToFile      (DM642_HANDLE hDM642);
static void validatePciEEPROMChecksum(DM642_HANDLE hDM642);
static void validateFileChecksum   (DM642_HANDLE hDM642);


//############################################################################
//                            Start of Functions
//############################################################################


//////////////////////////////////////////////////////////////////////////////
////
////  Name: PrintPciEEPROMSubMenu
////
////  Purpose: Displays the PCI-EEPROM Sub-Menu to the screen.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void PrintPciEEPROMSubMenu(DM642_HANDLE hDM642)
{
    printf ("\n");
    printf ("******************* PCI-EEPROM Menu *******************\n");
    printf ("\n");
    printf ("Using board #%d (EVM-DM642)\n", g_dwBoardNum);
    printf ("\n");
    printf ("1:  Save PCI EEPROM to file         \n");
    printf ("2:  Dump PCI EEPROM to screen       \n");
    printf ("                                    \n");
    printf ("3:  Validate PCI EEPROM Checksum    \n");
    printf ("4:  Validate FILE       Checksum    \n");
    printf ("                                    \n");
    printf ("q:  Quit                            \n");
    printf ("                                    \n");
    printf (">> ");

}       // END PrintPciEEPROMSubMenu()

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
////
////  Name: RunPciEEPROMSubMenu
////
////  Purpose:  Displays the PCI-EEPROM SubMenu.  Gets the user's choice
////            from said menu.  Processes that choice.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void RunPciEEPROMSubMenu(DM642_HANDLE hDM642)
{
    
    char    sChoice[80];
    int     nStatus = 0;


    while (TRUE)
    {
        PrintPciEEPROMSubMenu(hDM642);

        scanf ("%s", sChoice);
        printf ("\n");

        if (0 == strcmp(sChoice, "1"))
        {
            savePciEEPROMToFile(hDM642);
            continue;
        }

        if (0 == strcmp(sChoice, "2"))
        {
            dumpPciEEPROMToScreen(hDM642);
            continue;
        }

        if (0 == strcmp(sChoice, "3"))
        {
            validatePciEEPROMChecksum(hDM642);
            continue;
        }

        if (0 == strcmp(sChoice, "4"))
        {
            validateFileChecksum(hDM642);
            continue;
        }

        //----------------------------
        // 'q' is the QUIT choice
        //----------------------------
        if (0 == strcmp (sChoice, "q"))
        {
            break;
        }

    }   // End infinite while-loop

}       // END RunPciEEPROMSubMenu()

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
////
////  Name: dumpPciEEPROMToScreen
////
////  Purpose: This routine reads the entire PCI EEPROM and then displays
////           those values to the screen.  The actual EEPROM reading is
////           handled by the DM642 library.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void dumpPciEEPROMToScreen(DM642_HANDLE hDM642)
{
    int  i;
    WORD oEEPROMContents[kPciEEPROMAddr_TotalNum];


    //------------------------------------
    // Clear out our input 'buffer' ...
    //------------------------------------
    memset(oEEPROMContents, 0 , sizeof(oEEPROMContents));

    //------------------------------------------------
    // Read the entire EEPROM into our buffer
    //------------------------------------------------
    DM642PciEEPROMReadMulti(hDM642, &oEEPROMContents[0],
                                    kPciEEPROMAddr_1stAddr,
                                    kPciEEPROMAddr_TotalNum);

    //-------------------------------------------------
    // Dump the contents of our buffer to the screen
    //-------------------------------------------------
    printf("\n");
    for (i = 0; i < kPciEEPROMAddr_TotalNum; i++)
    {
        printf("Address %d: 0x%04x\n", i, oEEPROMContents[i]);
    }

    printf("\n");

    //----------------------------------------------------------------
    // Give the user a chance to actually read what's on the screen
    //----------------------------------------------------------------
    printf("Press the ENTER key to continue ...\n");
    getchar();

}       // END dumpPciEEPROM()

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
////
////  Name: savePciEEPROMToFile
////
////  Purpose: This routine reads the entire PCI EEPROM and then saves
////           those values to a file.  The routine prompts the user for the
////           name of the file.  The actual EEPROM reading is handled
////           by the  DM642 library.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void savePciEEPROMToFile(DM642_HANDLE hDM642)
{

    WORD  oEEPROMContents[kPciEEPROMAddr_TotalNum];
    char  strFilename[32];
    FILE *fp;
    int   nStatus = kNoError;


    //-------------------------------------------------
    // Get the filename to save the EEPROM to.
    // If we get invalid input, or a QUIT, then bail.
    //-------------------------------------------------
    nStatus = getString("Enter output filename  (or q) >> ", 
                         strFilename);
    if (nStatus != kNoError)
    {
        return;
    }

    //------------------------------------
    // Clear out our input 'buffer' ...
    //------------------------------------
    memset(oEEPROMContents, 0 , sizeof(oEEPROMContents));

    //------------------------------------------------
    // Read the entire EEPROM into our buffer
    //------------------------------------------------
    DM642PciEEPROMReadMulti(hDM642, &oEEPROMContents[0],
                                   kPciEEPROMAddr_1stAddr,
                                   kPciEEPROMAddr_TotalNum);

    //-------------------------------------------------
    // Write our buffer out to the indicated file ...
    //-------------------------------------------------
    nStatus = openFile(strFilename, "w", &fp);
    if (kNoError == nStatus)
    {
        int  i;

        for (i = 0; i < kPciEEPROMAddr_TotalNum; i++)
        {
            fprintf(fp, "0x%04x\n", oEEPROMContents[i]);
        }
    }

    //-----------------
    // Clean up ...
    //-----------------
    if (fp != NULL)
    {
        fflush(fp);
        fclose(fp);
    }

}       // END savePciEEPROMToFile()

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
////
////  Name: validatePciEEPROMChecksum
////
////  Purpose:  This routine validates the checksum stored in the PCI
////            EEPROM against a checksum calculated for the
////            data currently stored in the EERPM.
////            Both the reading and checksum calculation are handled
////            by the DM642 library.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void validatePciEEPROMChecksum(DM642_HANDLE hDM642)
{
    WORD oEEPROMContents[kPciEEPROMAddr_TotalNum];
    WORD nCalcCsum;
    int  nStatus = kNoError;


    //-------------------------------
    // Clear out our 'buffer' ...
    //-------------------------------
    memset(oEEPROMContents, 0 , sizeof(oEEPROMContents));

    //------------------------------------------------
    // Read the entire EEPROM into our buffer
    //------------------------------------------------
    DM642PciEEPROMReadMulti(hDM642, &oEEPROMContents[0],
                                   kPciEEPROMAddr_1stAddr,
                                   kPciEEPROMAddr_TotalNum);

    //--------------------------------------------------
    // Validate the checksum vs. what is in our buffer
    //--------------------------------------------------
    nStatus = DM642PciEEPROMValidateChecksum(hDM642,
                                           &oEEPROMContents[0],
                                           &nCalcCsum);

    printf("Calcuated Csum == 0x%04x, Actual Csum == 0x%04x\n",
            nCalcCsum,
            oEEPROMContents[kPciEEPROMAddr_CheckSum]);

    if(nStatus != kNoError)
    {
        printf("ERROR: checksum does not validate!\n");
    }
    else
    {
        printf("EEPROM checksum is GOOD.\n");
    }

}       // END validatePciEEPROMChecksum()

//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
////
////  Name: validateFileChecksum
////
////  Purpose:  This routine validates the checksum of PCI EEPROM data
////            that is stored in a file.  The routine prompts the user for
////            the file name.  The actual checksum calculation/comparison is
////            handled by the DM642 library.
////
////  Input Parameters::
////      hDM642 - Handle of the currently-open DM642 board/card
////
////  Output Parameters: none
////
////  Return Value(s)  : none
////
//////////////////////////////////////////////////////////////////////////////

void validateFileChecksum(DM642_HANDLE hDM642)
{
    int openFile(char *sFilename, char *sOption, FILE **pfp);

    WORD  oEEPROMContents[kPciEEPROMAddr_TotalNum];
    char  strFilename[32];
    int   nStatus = kNoError;


    //-------------------------------------------------
    // Get the filename to load the EEPROM from.
    // If we get invalid input, or a QUIT, then bail.
    //-------------------------------------------------
    nStatus = getString("Enter input filename (or q) >> ", 
                         strFilename);

    if (kNoError == nStatus)
    {
        FILE *pMyFile = NULL;

        //-------------------------------
        // Clear out our 'buffer' ...
        //-------------------------------
        memset(oEEPROMContents, 0 , sizeof(oEEPROMContents));

        //---------------------------------
        // Open the indicated file ...
        //---------------------------------
        nStatus = openFile(strFilename, "r+", &pMyFile);

        if (kNoError == nStatus)
        {
            int i;

            //-------------------------------------------------
            // Read our buffer in from the indicated file ...
            //-------------------------------------------------
            for (i = 0; i < kPciEEPROMAddr_TotalNum; i++)
            {
                fscanf(pMyFile, "0x%04x\n", &oEEPROMContents[i]);
            }
        }

        //-------------------------------------------------
        // Close the file, since we are finished with it
        //-------------------------------------------------
        if (NULL != pMyFile)
        {
            fflush(pMyFile);
            fclose(pMyFile);
        }
    }

    if (kNoError == nStatus)
    {
        WORD nCalcCsum;

        //--------------------------------------------------
        // Validate the checksum vs. what is in our buffer
        // Then print the results.
        //--------------------------------------------------

        nStatus = DM642PciEEPROMValidateChecksum(hDM642,
                                               &oEEPROMContents[0],
                                               &nCalcCsum);

        printf("Calcuated Csum == 0x%04x, Actual Csum == 0x%04x\n",
                nCalcCsum,
                oEEPROMContents[kPciEEPROMAddr_CheckSum]);

        if(nStatus != kNoError)
        {
            printf("ERROR: checksum does not validate!\n");
        }
        else
        {
            printf("File checksum is GOOD.\n");
        }
    }

}       // END validateFileChecksum()


//############################################################################
//                             End of Functions
//############################################################################

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女视频在线看| 欧美美女一区二区三区| 在线视频综合导航| 久久精品网站免费观看| 亚洲.国产.中文慕字在线| 久草这里只有精品视频| 欧美曰成人黄网| 久久久精品国产免大香伊| 午夜视频一区二区| av电影在线观看不卡| 久久综合狠狠综合久久综合88| 亚洲激情校园春色| 波多野结衣亚洲| 精品国产91洋老外米糕| 香蕉久久夜色精品国产使用方法 | 日韩午夜中文字幕| 一区二区三区日韩精品| 成人丝袜18视频在线观看| 欧美一区二区三区日韩| 亚洲一区二区三区在线播放| 99久久99久久久精品齐齐| 欧美激情一区二区三区| 国产剧情一区在线| 精品乱人伦小说| 久久精品国产在热久久| 欧美zozo另类异族| 免费在线欧美视频| 91精品国产aⅴ一区二区| 亚洲成人免费在线观看| 欧美性xxxxx极品少妇| 亚洲激情综合网| 在线观看一区二区精品视频| 一区二区在线观看视频在线观看| 99久久久精品| 一区二区三区四区不卡在线 | 日韩一区国产二区欧美三区| 丝袜诱惑亚洲看片| 欧美日韩国产区一| 婷婷久久综合九色综合绿巨人| 欧美日韩在线三区| 性感美女极品91精品| 欧美一二三区在线| 国产一区二区电影| 国产精品国产三级国产普通话99 | 亚洲福利视频导航| 欧美美女一区二区三区| 六月丁香婷婷色狠狠久久| 久久理论电影网| www.欧美日韩国产在线| 一区二区三区精品视频在线| 欧美三级午夜理伦三级中视频| 午夜亚洲国产au精品一区二区| 日韩一级片在线播放| 国产成人午夜片在线观看高清观看| 中文字幕精品一区| 色哦色哦哦色天天综合| 日本欧美大码aⅴ在线播放| 久久久99精品久久| 日本福利一区二区| 日韩av电影免费观看高清完整版| ww久久中文字幕| 91污在线观看| 美女一区二区在线观看| 中文字幕一区二区不卡| 欧美日韩精品福利| 国产伦精品一区二区三区免费迷 | 精品嫩草影院久久| 成人99免费视频| 麻豆精品一区二区| 亚洲天天做日日做天天谢日日欢| 7777精品伊人久久久大香线蕉最新版| 国产一区二区成人久久免费影院| 一片黄亚洲嫩模| 国产亚洲成aⅴ人片在线观看| 色偷偷一区二区三区| 韩国精品一区二区| 亚洲午夜久久久久久久久电影网| 26uuu国产在线精品一区二区| av一二三不卡影片| 久久99九九99精品| 亚洲午夜电影在线观看| 欧美国产日韩在线观看| 欧美日韩国产高清一区二区三区| 国产激情偷乱视频一区二区三区| 亚洲成人av在线电影| 国产精品久久久久aaaa樱花 | 久久久久久久久久久黄色| 欧美日韩在线免费视频| 成人黄色小视频| 久久精品久久精品| 午夜激情久久久| 亚洲理论在线观看| 国产精品欧美综合在线| 2021国产精品久久精品| 91精品国产综合久久福利| 色香蕉成人二区免费| 成人动漫一区二区| 国产91精品露脸国语对白| 美女一区二区久久| 亚洲已满18点击进入久久| 亚洲欧美激情小说另类| 国产精品高清亚洲| 国产精品久久看| 欧美国产日韩亚洲一区| 久久蜜桃一区二区| 26uuu另类欧美| 久久久久久久久久久电影| ww亚洲ww在线观看国产| 久久精品夜夜夜夜久久| 国产日产欧美一区| 久久久久久久久久久久久久久99| 久久综合狠狠综合| 国产色爱av资源综合区| 国产精品久久久久天堂| 中文字幕制服丝袜一区二区三区 | 精品国产免费人成电影在线观看四季| 欧美精品乱码久久久久久| 色八戒一区二区三区| 色偷偷一区二区三区| 欧美午夜一区二区| 欧美日韩第一区日日骚| 678五月天丁香亚洲综合网| 日韩亚洲欧美在线| 国产午夜亚洲精品理论片色戒| 久久久久久久网| 综合av第一页| 香蕉加勒比综合久久| 美女在线视频一区| 国产盗摄视频一区二区三区| 国产一区二区在线免费观看| 国产成人三级在线观看| 99精品国产一区二区三区不卡| 成人av在线网| 欧美在线观看视频在线| 91精品国产欧美日韩| 久久久久久久久久久久久女国产乱| 国产女同性恋一区二区| 一区二区三区四区五区视频在线观看 | av网站一区二区三区| 在线精品亚洲一区二区不卡| 欧美精品九九99久久| 2021中文字幕一区亚洲| ...xxx性欧美| 国产91在线看| 色婷婷av一区二区| 日韩女同互慰一区二区| 国产精品电影院| 天天操天天干天天综合网| 国产在线麻豆精品观看| 色婷婷久久99综合精品jk白丝| 欧美丰满高潮xxxx喷水动漫| 国产亚洲成av人在线观看导航 | 欧洲另类一二三四区| 精品久久久久久久久久久久包黑料| 久久久国产一区二区三区四区小说 | 国产精品亲子乱子伦xxxx裸| 午夜电影网一区| 99久久免费精品| 2014亚洲片线观看视频免费| 一区二区欧美国产| 国产成人aaaa| 欧美一区二区女人| 一区二区三区在线观看欧美| 国产精品亚洲视频| 制服丝袜av成人在线看| 中文字幕综合网| 国产综合色在线| 欧美日韩国产乱码电影| 中文一区在线播放| 精品亚洲aⅴ乱码一区二区三区| 色综合天天综合给合国产| 欧美精品一区二区三区四区| 亚洲主播在线播放| jizzjizzjizz欧美| 久久亚洲精华国产精华液| 日韩一区精品视频| 在线看一区二区| 中文字幕一区二区三区不卡| 国产在线观看一区二区| 欧美一区二区视频在线观看2020| 一区二区三区蜜桃网| 国产69精品久久久久777| 欧美肥妇bbw| 亚洲成av人片在线观看| 色婷婷久久一区二区三区麻豆| 日本一区二区三区电影| 国产毛片精品一区| 精品国产一二三| 美女精品一区二区| 91精品欧美综合在线观看最新| 亚洲综合一二三区| 色综合久久九月婷婷色综合| 国产精品嫩草99a| eeuss鲁片一区二区三区在线看| 精品粉嫩aⅴ一区二区三区四区| 欧美aⅴ一区二区三区视频| 欧美绝品在线观看成人午夜影视| 一区二区三区成人在线视频| 99精品偷自拍| 亚洲欧美日韩精品久久久久|