summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/UDPWrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/InputCommon/UDPWrapper.cpp')
-rw-r--r--Source/Core/InputCommon/UDPWrapper.cpp92
1 files changed, 92 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/UDPWrapper.cpp b/Source/Core/InputCommon/UDPWrapper.cpp
new file mode 100644
index 0000000000..7fc77c4f44
--- /dev/null
+++ b/Source/Core/InputCommon/UDPWrapper.cpp
@@ -0,0 +1,92 @@
+#include "UDPWrapper.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+const char* DefaultPort(const int index)
+{
+ static std::string s;
+ s = "443";
+ s += (char)('2' + index);
+ return s.c_str();
+}
+
+UDPWrapper::UDPWrapper(int indx, const char* const _name) :
+ ControllerEmu::ControlGroup(_name,GROUP_TYPE_UDPWII),
+ inst(NULL), index(indx),
+ updIR(false),updAccel(false),
+ updButt(false),udpEn(false)
+ , port(DefaultPort(indx))
+{
+ //PanicAlert("UDPWrapper #%d ctor",index);
+}
+
+void UDPWrapper::LoadConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base )
+{
+ ControlGroup::LoadConfig(sec,defdev,base);
+
+ std::string group( base + name ); group += "/";
+
+ int _updAccel,_updIR,_updButt,_udpEn,_updNun,_updNunAccel;
+ sec->Get((group + "Enable").c_str(),&_udpEn, 0);
+ sec->Get((group + "Port").c_str(), &port, DefaultPort(index));
+ sec->Get((group + "Update_Accel").c_str(), &_updAccel, 1);
+ sec->Get((group + "Update_IR").c_str(), &_updIR, 1);
+ sec->Get((group + "Update_Butt").c_str(), &_updButt, 1);
+ sec->Get((group + "Update_Nunchuk").c_str(), &_updNun, 1);
+ sec->Get((group + "Update_NunchukAccel").c_str(), &_updNunAccel, 0);
+
+ udpEn=(_udpEn>0);
+ updAccel=(_updAccel>0);
+ updIR=(_updIR>0);
+ updButt=(_updButt>0);
+ updNun=(_updNun>0);
+ updNunAccel=(_updNunAccel>0);
+
+ Refresh();
+}
+
+
+void UDPWrapper::SaveConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base )
+{
+ ControlGroup::SaveConfig(sec,defdev,base);
+ std::string group( base + name ); group += "/";
+ sec->Set((group + "Enable").c_str(), (int)udpEn, 0);
+ sec->Set((group + "Port").c_str(), port, DefaultPort(index));
+ sec->Set((group + "Update_Accel").c_str(), (int)updAccel, 1);
+ sec->Set((group + "Update_IR").c_str(), (int)updIR, 1);
+ sec->Set((group + "Update_Butt").c_str(), (int)updButt, 1);
+ sec->Set((group + "Update_Nunchuk").c_str(), (int)updNun, 1);
+ sec->Set((group + "Update_NunchukAccel").c_str(), (int)updNunAccel, 0);
+}
+
+
+void UDPWrapper::Refresh()
+{
+ bool udpAEn=(inst!=NULL);
+ if (udpEn&&udpAEn)
+ {
+ if (strcmp(inst->getPort(),port.c_str()))
+ {
+ delete inst;
+ inst= new UDPWiimote(port.c_str(),"Dolphin-Emu",index); //TODO: Changeable display name
+ }
+ return;
+ }
+ if (!udpEn)
+ {
+ if (inst)
+ delete inst;
+ inst=NULL;
+ return;
+ }
+ //else
+ inst= new UDPWiimote(port.c_str(),"Dolphin-Emu",index);
+}
+
+UDPWrapper::~UDPWrapper()
+{
+ if (inst)
+ delete inst;
+}