LAN By Pass Utility under Linux

From LEXWiKi

Revision as of 14:21, 9 November 2011 by Kk (Talk | contribs)
Jump to: navigation, search


Contents

The Sample code source you can download from

Source file:LANByPass_v1.0_Src.tar.gz
Binary file:LANByPass_v1.0_Bin.tar.gz

How to compile source code

1. Compile source code with Code::Blocks

  1. download and install the Code::Block with command "apt-get install codeblocks libgtk2.0-dev"
  2. Open an exist project(lanbypass.cbp) in Code::Blocks
  3. add an option `pkg-config gtk+-2.0 --libs` in "Project->Build Option->Linker Setting->Other linker option"
  4. add an option `pkg-config gtk+-2.0 --cflags`-std=gnu99 in "Project->Build Option->compiler setting->Other option"
  5. click the compile button

2.Compile source code with "make"

  1. download and install the libgtk2.0-dev with command "apt-get install libgtk2.0-dev"
  2. cd lanbypass
  3. ./configure
  4. make
  5. cd src/lanbypass // execute the binary file()

How to Use The LAN By Pass Utility

Image:lanbypass.png

  1. Loop Time: Loop time is means "the time of delay before LAN by pass be enabled".
  2. Enable: Enable LAN by pass function.
  3. Disable: Disable LAN by pass function.
  4. Loop Test: Do LAN by pass loop test as below picture.

Image:Loop_test.jpg

Introduction

parameters define

#--------F75111 Controller-------
#define Config              0x03
#define WDT_Ctrl            0x36
#define WDTimer             0x37
#define F75111_address      0x9c
#--------WDT controller----------
#define set_pin10           0x03 
#define WDTimer_Enable      0x20
#define STS_WD_TMOUT_Clear  0x40

Enable Funtion

void enable()
{
    writesmbusbyte(F75111_address,Config,set_pin10);
    writesmbusbyte(F75111_address,WDTimer,timer);
    writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear|WDTimer_Enable);
}

Disable Funtion

void disable()
{
    disable_flags=1;
    writesmbusbyte(F75111_address,Config,set_pin10);
    writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear);
}

Loop test Funtion

void loop_test()
{
    if(chack_time()==1)
    {
        gtk_widget_set_sensitive(enable_button,FALSE);
        gtk_widget_set_sensitive(disable_button,TRUE);
        gtk_widget_set_sensitive(loop_test_button,FALSE);
        g_thread_create((void*)loop_test_thread,timer,FALSE,NULL);
    }
}

loop_test_thread

void loop_test_thread(int timer)
{
       BYTE timeout=0;
       disable_flags=0;
       writesmbusbyte(F75111_address,Config,set_pin10);
       writesmbusbyte(F75111_address,WDTimer,timer);
       writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear|WDTimer_Enable);
       while(disable_flags==0)
       {
           usleep(10000);
           SMBus_ReadByte(F75111_address,WDTimer,&timeout);
           if(timeout<=1)
           {
               writesmbusbyte(F75111_address,SMBHSTCMD,set_pin10);
               writesmbusbyte(F75111_address,WDTimer,timer);
               writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear|WDTimer_Enable);
           }
       }
}
Personal tools