/*
This file is part of jpcsp.
Jpcsp is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Jpcsp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Jpcsp. If not, see <http://www.gnu.org/licenses/>.
*/
package jpcsp.HLE.kernel.types;
public class SceNetIfHandle extends pspAbstractMemoryMappedStructure {
public int callbackArg4;
public int upCallbackAddr;
public int downCallbackAddr;
public int sendCallbackAddr;
public int ioctlCallbackAddr;
public int addrFirstMessageToBeSent;
public int addrLastMessageToBeSent;
public int numberOfMessagesToBeSent;
public int unknown36;
public int unknown40;
public int handleInternalAddr;
public SceNetIfHandleInternal handleInternal;
public static class SceNetIfHandleInternal extends pspAbstractMemoryMappedStructure {
public String interfaceName;
public int ioctlSemaId;
public int ioctlOKSemaId;
public pspNetMacAddress macAddress = new pspNetMacAddress();
public int unknownCallbackAddr184;
public int unknownCallbackAddr188;
public int sceNetIfhandleIfUp;
public int sceNetIfhandleIfDown;
public int sceNetIfhandleIfIoctl;
public int errorCode;
@Override
protected void read() {
readUnknown(20); // Offset 0
interfaceName = readStringNZ(16); // Offset 20
readUnknown(148); // Offset 36
unknownCallbackAddr184 = read32(); // Offset 184
unknownCallbackAddr188 = read32(); // Offset 188
readUnknown(44); // Offset 192
macAddress = new pspNetMacAddress();
read(macAddress); // Offset 236
readUnknown(2); // Offset 242
sceNetIfhandleIfUp = read32(); // Offset 244
sceNetIfhandleIfDown = read32(); // Offset 248
sceNetIfhandleIfIoctl = read32(); // Offset 252
ioctlSemaId = read32(); // Offset 256
ioctlOKSemaId = read32(); // Offset 260
readUnknown(4); // Offset 264
errorCode = read32(); // Offset 268
}
@Override
protected void write() {
writeSkip(20); // Offset 0
writeStringNZ(16, interfaceName); // Offset 20
writeSkip(148); // Offset 36
write32(unknownCallbackAddr184); // Offset 184
write32(unknownCallbackAddr188); // Offset 188
writeSkip(44); // Offset 192
write(macAddress); // Offset 236
writeSkip(2); // Offset 242
write32(sceNetIfhandleIfUp); // Offset 244
write32(sceNetIfhandleIfDown); // Offset 248
write32(sceNetIfhandleIfIoctl); // Offset 252
write32(ioctlSemaId); // Offset 256
write32(ioctlOKSemaId); // Offset 260
writeSkip(4); // Offset 264
write32(errorCode); // Offset 268
}
@Override
public int sizeof() {
return 320;
}
@Override
public String toString() {
return String.format("interfaceName='%s', unknownCallbackAddr184=0x%08X, unknownCallbackAddr188=0x%08X, sceNetIfhandleIfUp=0x%08X, sceNetIfhandleIfDown=0x%08X, sceNetIfhandleIfIoctl=0x%08X, ioctlSemaId=0x%X, ioctlOKSemaId=0x%X, macAddress=%s", interfaceName, unknownCallbackAddr184, unknownCallbackAddr188, sceNetIfhandleIfUp, sceNetIfhandleIfDown, sceNetIfhandleIfIoctl, ioctlSemaId, ioctlOKSemaId, macAddress);
}
}
@Override
protected void read() {
handleInternalAddr = read32(); // Offset 0
if (handleInternalAddr != 0) {
handleInternal = new SceNetIfHandleInternal();
handleInternal.read(mem, handleInternalAddr);
}
callbackArg4 = read32(); // Offset 4
upCallbackAddr = read32(); // Offset 8
downCallbackAddr = read32(); // Offset 12
sendCallbackAddr = read32(); // Offset 16
ioctlCallbackAddr = read32(); // Offset 20
addrFirstMessageToBeSent = read32(); // Offset 24
addrLastMessageToBeSent = read32(); // Offset 28
numberOfMessagesToBeSent = read32(); // Offset 32
unknown36 = read32(); // Offset 36
unknown40 = read32(); // Offset 40
}
@Override
protected void write() {
write32(handleInternalAddr); // Offset 0
if (handleInternalAddr != 0 && handleInternal != null) {
handleInternal.write(mem, handleInternalAddr);
}
write32(callbackArg4); // Offset 4
write32(upCallbackAddr); // Offset 8
write32(downCallbackAddr); // Offset 12
write32(sendCallbackAddr); // Offset 16
write32(ioctlCallbackAddr); // Offset 20
write32(addrFirstMessageToBeSent); // Offset 24
write32(addrLastMessageToBeSent); // Offset 28
write32(numberOfMessagesToBeSent); // Offset 32
write32(unknown36); // Offset 36
write32(unknown40); // Offset 40
}
@Override
public int sizeof() {
return 44;
}
@Override
public String toString() {
return String.format("callbackArg4=0x%X, upCallbackAddr=0x%08X, downCallbackAddr=0x%08X, sendCallbackAddr=0x%08X, ioctlCallbackAddr=0x%08X, firstMessage=0x%08X, lastMessage=0x%08X, nbrMessages=0x%X, unknown36=0x%X, unknown40=0x%X, internalStructure: %s", callbackArg4, upCallbackAddr, downCallbackAddr, sendCallbackAddr, ioctlCallbackAddr, addrFirstMessageToBeSent, addrLastMessageToBeSent, numberOfMessagesToBeSent, unknown36, unknown40, handleInternal);
}
}