summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorSonicadvance1 <sonicadvance1@gmail.com>2009-05-13 03:49:13 +0000
committerSonicadvance1 <sonicadvance1@gmail.com>2009-05-13 03:49:13 +0000
commit0f9214bce5cb98fddfaa225db7063ad3241f0477 (patch)
treeb220af2f21deba2ab72aea739f87b417e95ce470 /Source/Core
parentdcad8a779daf58ea748369547a965e96b7912473 (diff)
Dolphin connects to the virtual NIC device now, but for some reason it can't send out it's packet. 350 bytes, yet 0 get out >>
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3214 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp23
-rw-r--r--Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp15
2 files changed, 29 insertions, 9 deletions
diff --git a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp
index 5818d9034f..f123abf2a6 100644
--- a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp
+++ b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp
@@ -23,13 +23,19 @@
bool CEXIETHERNET::deactivate()
{
+ DEBUGPRINT("Deactivating BBA...\n");
+ if(!isActivated())
+ return true;
+ CloseHandle(mHRecvEvent);
+ mHRecvEvent = INVALID_HANDLE_VALUE;
+ CloseHandle(mHAdapter);
+ mHAdapter = INVALID_HANDLE_VALUE;
+ DEBUGPRINT("Success!\n");
return true;
- // TODO: Actually deactivate
}
bool CEXIETHERNET::isActivated()
{
- return false;
- //TODO: Never Activated Yet!
+ return mHAdapter != INVALID_HANDLE_VALUE;
}
bool CEXIETHERNET::activate() {
@@ -54,12 +60,14 @@ if(isActivated())
#endif //0
mHAdapter = CreateFile (/*device_path*/
- USERMODEDEVICEDIR "{1B1F9D70-50B7-4F45-AA4A-ABD17451E736}" TAPSUFFIX,
+ //{E0277714-28A6-4EB6-8AA2-7DF4870C04F6}
+ USERMODEDEVICEDIR "{E0277714-28A6-4EB6-8AA2-7DF4870C04F6}" TAPSUFFIX,
GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0);
DEBUGPRINT("TAP-WIN32 device opened: %s\n",
- USERMODEDEVICEDIR "{1B1F9D70-50B7-4F45-AA4A-ABD17451E736}" TAPSUFFIX);
+ USERMODEDEVICEDIR "{E0277714-28A6-4EB6-8AA2-7DF4870C04F6}" TAPSUFFIX);
if(mHAdapter == INVALID_HANDLE_VALUE) {
+ DEBUGPRINT("mHAdapter is invalid\n");
return false;
}
@@ -88,6 +96,7 @@ if(isActivated())
if(!DeviceIoControl(mHAdapter, TAP_IOCTL_GET_MTU,
&mMtu, sizeof (mMtu), &mMtu, sizeof (mMtu), &len, NULL))
{
+ DEBUGPRINT("Couldn't get device MTU");
return false;
}
DEBUGPRINT("TAP-Win32 MTU=%d (ignored)\n", mMtu);
@@ -102,6 +111,10 @@ if(isActivated())
DEBUGPRINT("WARNING: The TAP-Win32 driver rejected a TAP_IOCTL_SET_MEDIA_STATUS DeviceIoControl call.\n");
return false;
}
+ else
+ {
+ DEBUGPRINT("TAP-WIN32 status as Connected\n");
+ }
}
//set up recv event
diff --git a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp
index 7850e68ea1..04f3418390 100644
--- a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp
+++ b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp
@@ -23,7 +23,7 @@
#include "EXI_Device.h"
#include "EXI_DeviceEthernet.h"
-#define SONICDEBUG
+//#define SONICDEBUG
void DEBUGPRINT (const char * format, ...)
{
@@ -79,9 +79,15 @@ CEXIETHERNET::CEXIETHERNET() :
ID = 0x04020200;
mWriteP = INVALID_P;
mReadP = INVALID_P;
+ mWaiting = false;
mReadyToSend = false;
Activated = false;
m_bInterruptSet = false;
+#ifdef _WIN32
+ mHAdapter = INVALID_HANDLE_VALUE;
+ mHRecvEvent = INVALID_HANDLE_VALUE;
+ mHReadWait = INVALID_HANDLE_VALUE;
+#endif
mRecvBufferLength = 0;
@@ -199,9 +205,9 @@ void CEXIETHERNET::ImmWrite(u32 _uData, u32 _uSize)
if (RISE(BBA_NCRA_SR) && isActivated())
{
DEBUGPRINT( "\t[INFO]BBA Start Recieve\n");
- exit(0);
+ //exit(0);
// TODO: Need to make our virtual network device start receiving
- //HWGLE(startRecv());
+ startRecv();
}
if (RISE(BBA_NCRA_ST1))
{
@@ -222,8 +228,9 @@ void CEXIETHERNET::ImmWrite(u32 _uData, u32 _uSize)
break;
case BBA_NWAYC:
DEBUGPRINT( "\t[INFO]BBA_NWAYCn");
- if(_uData & (BBA_NWAYC_ANE | BBA_NWAYC_ANS_RA))
+ if(Common::swap32(_uData) & (BBA_NWAYC_ANE | BBA_NWAYC_ANS_RA))
{
+ DEBUGPRINT("ACTIVATING!\n");
activate();
//say we've successfully negotiated for 10 Mbit full duplex
//should placate libogc