LAN By Pass Utility under Linux

From LEXWiKi

(Difference between revisions)
Jump to: navigation, search
(How to compile source code)
(loop_test_thread)
Line 77: Line 77:
writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear|WDTimer_Enable);
writesmbusbyte(F75111_address,WDT_Ctrl,STS_WD_TMOUT_Clear|WDTimer_Enable);
}
}
- 
}
}
- 
- 
}
}

Revision as of 15:31, 8 November 2011


Contents

The Sample code source you can download from

Source file: Binary file:


How to compile source code

1. Compile source code with Code::Blocks
download and install the Code::Block with command "apt-get install codeblocks libgtk2.0-dev"
Open an exist project(lanbypass.cbp) in Code::Blocks, click the compile button
( add an option 'pkg-config --libs gtk+-2.0 gthread-2.0' in "Project->Build Option->Linker Setting->Other linker option")
2.Compile source code with "make"

  1. cd lanbypass
  2. make
  3. cd src/bin/Debug // 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