2013-09-07 00:55:42 +02:00
|
|
|
// Copyright (c) 2013- PPSSPP Project.
|
|
|
|
|
|
|
|
// This program 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, version 2.0 or later versions.
|
|
|
|
|
|
|
|
// This program 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 2.0 for more details.
|
|
|
|
|
|
|
|
// A copy of the GPL 2.0 should have been included with the program.
|
|
|
|
// If not, see http://www.gnu.org/licenses/
|
|
|
|
|
|
|
|
// Official git repository and contact information can be found at
|
|
|
|
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
2020-08-18 02:01:30 +07:00
|
|
|
#include <deque>
|
2019-12-24 00:04:03 +07:00
|
|
|
#include "Core/HLE/proAdhoc.h"
|
|
|
|
|
2019-12-25 22:30:39 +07:00
|
|
|
#ifdef _MSC_VER
|
|
|
|
#pragma pack(push,1)
|
|
|
|
#endif
|
2019-11-13 12:56:29 +07:00
|
|
|
typedef struct MatchingArgs {
|
|
|
|
u32_le data[6]; //ContextID, Opcode, bufAddr[ to MAC], OptLen, OptAddr[, EntryPoint]
|
2019-12-25 22:30:39 +07:00
|
|
|
} PACK MatchingArgs;
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
#pragma pack(pop)
|
|
|
|
#endif
|
2019-11-13 12:56:29 +07:00
|
|
|
|
2020-08-26 17:17:31 +07:00
|
|
|
struct AdhocctlRequest {
|
|
|
|
u8 opcode;
|
|
|
|
SceNetAdhocctlGroupName group;
|
|
|
|
};
|
|
|
|
|
2020-08-18 02:01:30 +07:00
|
|
|
struct AdhocSendTarget {
|
|
|
|
u32 ip;
|
|
|
|
u16 port; // original port
|
|
|
|
};
|
|
|
|
|
|
|
|
struct AdhocSendTargets {
|
|
|
|
int length;
|
|
|
|
std::deque<AdhocSendTarget> peers;
|
|
|
|
bool isBroadcast;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct AdhocSocketRequest {
|
|
|
|
int type;
|
|
|
|
int id; // PDP/PTP socket id
|
|
|
|
void* buffer;
|
|
|
|
s32_le* length;
|
|
|
|
u32 timeout;
|
|
|
|
u64 startTime;
|
2020-08-26 17:17:31 +07:00
|
|
|
SceNetEtherAddr* remoteMAC;
|
2020-08-18 02:01:30 +07:00
|
|
|
u16_le* remotePort;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum AdhocSocketRequestType : int
|
|
|
|
{
|
|
|
|
PTP_CONNECT = 0,
|
|
|
|
PTP_ACCEPT = 1,
|
|
|
|
PTP_SEND = 2,
|
|
|
|
PTP_RECV = 3,
|
2020-09-08 19:16:44 +07:00
|
|
|
PTP_FLUSH = 4,
|
|
|
|
PDP_SEND = 5,
|
|
|
|
PDP_RECV = 6,
|
|
|
|
ADHOC_POLL_SOCKET = 7,
|
2020-08-18 02:01:30 +07:00
|
|
|
};
|
|
|
|
|
2014-03-15 11:32:57 -07:00
|
|
|
class PointerWrap;
|
2013-09-07 00:55:42 +02:00
|
|
|
|
|
|
|
void Register_sceNetAdhoc();
|
|
|
|
|
2019-12-24 00:04:03 +07:00
|
|
|
u32_le __CreateHLELoop(u32_le* loopAddr, const char* sceFuncName, const char* hleFuncName, const char* tagName = NULL);
|
2013-09-07 00:55:42 +02:00
|
|
|
void __NetAdhocInit();
|
|
|
|
void __NetAdhocShutdown();
|
|
|
|
void __NetAdhocDoState(PointerWrap &p);
|
2015-01-04 14:07:44 +01:00
|
|
|
void __UpdateAdhocctlHandlers(u32 flags, u32 error);
|
2019-11-13 12:56:29 +07:00
|
|
|
void __UpdateMatchingHandler(MatchingArgs params);
|
2013-10-26 23:08:21 +01:00
|
|
|
|
|
|
|
// I have to call this from netdialog
|
2020-08-18 00:39:46 +07:00
|
|
|
int sceNetAdhocctlGetState(u32 ptrToStatus);
|
2013-10-26 23:08:21 +01:00
|
|
|
int sceNetAdhocctlCreate(const char * groupName);
|
2020-08-18 00:39:46 +07:00
|
|
|
int sceNetAdhocctlConnect(const char* groupName);
|
|
|
|
int sceNetAdhocctlJoin(u32 scanInfoAddr);
|
|
|
|
int sceNetAdhocctlScan();
|
|
|
|
int sceNetAdhocctlGetScanInfo(u32 sizeAddr, u32 bufAddr);
|
|
|
|
|
|
|
|
int NetAdhocMatching_Term();
|
|
|
|
int NetAdhocctl_Term();
|
|
|
|
int NetAdhocctl_GetState();
|
|
|
|
int NetAdhocctl_Create(const char* groupName);
|
|
|
|
int NetAdhoc_Term();
|
2014-06-24 23:43:03 +07:00
|
|
|
|
|
|
|
// May need to use these from sceNet.cpp
|
|
|
|
extern bool netAdhocInited;
|
|
|
|
extern bool netAdhocctlInited;
|
2020-07-12 08:04:55 +07:00
|
|
|
extern bool networkInited;
|
2020-10-23 00:58:56 +07:00
|
|
|
extern bool netAdhocGameModeEntered;
|
2020-10-09 23:37:35 +07:00
|
|
|
extern int adhocDefaultTimeout; //3000000 usec
|
|
|
|
extern int adhocDefaultDelay; //10000
|
|
|
|
extern int adhocExtraDelay; //20000
|
|
|
|
extern int adhocEventPollDelay; //100000; // Seems to be the same with PSP_ADHOCCTL_RECV_TIMEOUT
|
|
|
|
extern int adhocMatchingEventDelay; //30000
|
|
|
|
extern int adhocEventDelay; //1000000
|
2019-12-24 00:04:03 +07:00
|
|
|
extern std::recursive_mutex adhocEvtMtx;
|
|
|
|
extern int IsAdhocctlInCB;
|
|
|
|
|
2020-08-02 08:49:58 +07:00
|
|
|
extern u32 dummyThreadHackAddr;
|
|
|
|
extern u32_le dummyThreadCode[3];
|
|
|
|
extern u32 matchingThreadHackAddr;
|
|
|
|
extern u32_le matchingThreadCode[3];
|
|
|
|
|