Homogenize indentation (use tabs)
This commit is contained in:
parent
a0f8a6d153
commit
8fccb570e5
@ -1,9 +1,8 @@
|
|||||||
#ifndef OS_H
|
#ifndef OS_H
|
||||||
#define OS_H
|
#define OS_H
|
||||||
|
|
||||||
|
|
||||||
#define SYSTEM_VERSION(major, minor, revision) \
|
#define SYSTEM_VERSION(major, minor, revision) \
|
||||||
(((major)<<24)|((minor)<<16)|((revision)<<8))
|
(((major)<<24)|((minor)<<16)|((revision)<<8))
|
||||||
|
|
||||||
u32 osConvertVirtToPhys(u32 vaddr);
|
u32 osConvertVirtToPhys(u32 vaddr);
|
||||||
const char* osStrError(u32 error);
|
const char* osStrError(u32 error);
|
||||||
|
@ -5,23 +5,22 @@
|
|||||||
#ifndef SVC_H
|
#ifndef SVC_H
|
||||||
#define SVC_H
|
#define SVC_H
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MEMOP_FREE =1, // Free heap
|
MEMOP_FREE =1, // Free heap
|
||||||
MEMOP_ALLOC=3, // Allocate heap
|
MEMOP_ALLOC=3, // Allocate heap
|
||||||
MEMOP_MAP =4, // Mirror mapping
|
MEMOP_MAP =4, // Mirror mapping
|
||||||
MEMOP_UNMAP=5, // Mirror unmapping
|
MEMOP_UNMAP=5, // Mirror unmapping
|
||||||
MEMOP_PROT =6, // Change protection
|
MEMOP_PROT =6, // Change protection
|
||||||
|
|
||||||
MEMOP_FREE_LINEAR =0x10001, // Free linear heap
|
MEMOP_FREE_LINEAR =0x10001, // Free linear heap
|
||||||
MEMOP_ALLOC_LINEAR=0x10003 // Allocate linear heap
|
MEMOP_ALLOC_LINEAR=0x10003 // Allocate linear heap
|
||||||
} MemOp;
|
} MemOp;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MEMPERM_READ =1,
|
MEMPERM_READ =1,
|
||||||
MEMPERM_WRITE =2,
|
MEMPERM_WRITE =2,
|
||||||
MEMPERM_EXECUTE=4,
|
MEMPERM_EXECUTE=4,
|
||||||
MEMPERM_MAX =0xFFFFFFFF //force 4-byte
|
MEMPERM_MAX =0xFFFFFFFF //force 4-byte
|
||||||
} MemPerm;
|
} MemPerm;
|
||||||
|
|
||||||
u32* getThreadCommandBuffer(void);
|
u32* getThreadCommandBuffer(void);
|
||||||
@ -50,5 +49,4 @@ s32 svcConnectToPort(volatile Handle* out, const char* portName);
|
|||||||
s32 svcSendSyncRequest(Handle session);
|
s32 svcSendSyncRequest(Handle session);
|
||||||
s32 svcGetProcessId(u32 *out, Handle handle);
|
s32 svcGetProcessId(u32 *out, Handle handle);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
#define NETDB_H
|
#define NETDB_H
|
||||||
|
|
||||||
struct hostent {
|
struct hostent {
|
||||||
char * h_name;
|
char * h_name;
|
||||||
char ** h_aliases;
|
char ** h_aliases;
|
||||||
int h_addrtype;
|
int h_addrtype;
|
||||||
int h_length;
|
int h_length;
|
||||||
char ** h_addr_list;
|
char ** h_addr_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,50 +4,50 @@
|
|||||||
|
|
||||||
u32 osConvertVirtToPhys(u32 vaddr)
|
u32 osConvertVirtToPhys(u32 vaddr)
|
||||||
{
|
{
|
||||||
if(vaddr >= 0x14000000 && vaddr < 0x1c000000)
|
if(vaddr >= 0x14000000 && vaddr < 0x1c000000)
|
||||||
return vaddr + 0x0c000000; // LINEAR heap
|
return vaddr + 0x0c000000; // LINEAR heap
|
||||||
if(vaddr >= 0x1F000000 && vaddr < 0x1F600000)
|
if(vaddr >= 0x1F000000 && vaddr < 0x1F600000)
|
||||||
return vaddr - 0x07000000; // VRAM
|
return vaddr - 0x07000000; // VRAM
|
||||||
if(vaddr >= 0x1FF00000 && vaddr < 0x1FF80000)
|
if(vaddr >= 0x1FF00000 && vaddr < 0x1FF80000)
|
||||||
return vaddr + 0x00000000; // DSP memory
|
return vaddr + 0x00000000; // DSP memory
|
||||||
if(vaddr >= 0x30000000 && vaddr < 0x40000000)
|
if(vaddr >= 0x30000000 && vaddr < 0x40000000)
|
||||||
return vaddr - 0x10000000; // Only available under FIRM v8+ for certain processes.
|
return vaddr - 0x10000000; // Only available under FIRM v8+ for certain processes.
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 osGetFirmVersion() {
|
u32 osGetFirmVersion() {
|
||||||
return (*(u32*)0x1FF80000) & ~0xFF;
|
return (*(u32*)0x1FF80000) & ~0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 osGetKernelVersion() {
|
u32 osGetKernelVersion() {
|
||||||
return (*(u32*)0x1FF80060) & ~0xFF;
|
return (*(u32*)0x1FF80060) & ~0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* osStrError(u32 error) {
|
const char* osStrError(u32 error) {
|
||||||
switch((error>>26) & 0x3F) {
|
switch((error>>26) & 0x3F) {
|
||||||
case 0:
|
case 0:
|
||||||
return "Success.";
|
return "Success.";
|
||||||
case 1:
|
case 1:
|
||||||
return "Nothing happened.";
|
return "Nothing happened.";
|
||||||
case 2:
|
case 2:
|
||||||
return "Would block.";
|
return "Would block.";
|
||||||
case 3:
|
case 3:
|
||||||
return "Not enough resources.";
|
return "Not enough resources.";
|
||||||
case 4:
|
case 4:
|
||||||
return "Not found.";
|
return "Not found.";
|
||||||
case 5:
|
case 5:
|
||||||
return "Invalid state.";
|
return "Invalid state.";
|
||||||
case 6:
|
case 6:
|
||||||
return "Unsupported.";
|
return "Unsupported.";
|
||||||
case 7:
|
case 7:
|
||||||
return "Invalid argument.";
|
return "Invalid argument.";
|
||||||
case 8:
|
case 8:
|
||||||
return "Wrong argument.";
|
return "Wrong argument.";
|
||||||
case 9:
|
case 9:
|
||||||
return "Interrupted.";
|
return "Interrupted.";
|
||||||
case 10:
|
case 10:
|
||||||
return "Internal error.";
|
return "Internal error.";
|
||||||
default:
|
default:
|
||||||
return "Unknown.";
|
return "Unknown.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,133 +20,133 @@ static circlePosition cPos;
|
|||||||
|
|
||||||
Result hidInit(u32* sharedMem)
|
Result hidInit(u32* sharedMem)
|
||||||
{
|
{
|
||||||
if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
|
if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT;
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
|
|
||||||
// Request service.
|
// Request service.
|
||||||
if((ret=srvGetServiceHandle(&hidHandle, "hid:USER")))return ret;
|
if((ret=srvGetServiceHandle(&hidHandle, "hid:USER")))return ret;
|
||||||
|
|
||||||
// Get sharedmem handle.
|
// Get sharedmem handle.
|
||||||
if((ret=HIDUSER_GetSharedMem(&hidMemHandle))) goto cleanup1;
|
if((ret=HIDUSER_GetSharedMem(&hidMemHandle))) goto cleanup1;
|
||||||
|
|
||||||
// Map HID shared memory at addr "sharedMem".
|
// Map HID shared memory at addr "sharedMem".
|
||||||
hidSharedMem=sharedMem;
|
hidSharedMem=sharedMem;
|
||||||
if((ret=svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2;
|
if((ret=svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2;
|
||||||
|
|
||||||
// Reset internal state.
|
// Reset internal state.
|
||||||
kOld = kHeld = kDown = kUp = 0;
|
kOld = kHeld = kDown = kUp = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
cleanup2:
|
cleanup2:
|
||||||
svcCloseHandle(hidMemHandle);
|
svcCloseHandle(hidMemHandle);
|
||||||
cleanup1:
|
cleanup1:
|
||||||
svcCloseHandle(hidHandle);
|
svcCloseHandle(hidHandle);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hidExit()
|
void hidExit()
|
||||||
{
|
{
|
||||||
// Unmap HID sharedmem and close handles.
|
// Unmap HID sharedmem and close handles.
|
||||||
svcUnmapMemoryBlock(hidMemHandle, (u32)hidSharedMem);
|
svcUnmapMemoryBlock(hidMemHandle, (u32)hidSharedMem);
|
||||||
svcCloseHandle(hidMemHandle);
|
svcCloseHandle(hidMemHandle);
|
||||||
svcCloseHandle(hidHandle);
|
svcCloseHandle(hidHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hidScanInput()
|
void hidScanInput()
|
||||||
{
|
{
|
||||||
kOld = kHeld;
|
kOld = kHeld;
|
||||||
|
|
||||||
int padId = hidSharedMem[4];
|
int padId = hidSharedMem[4];
|
||||||
kHeld = hidSharedMem[10 + padId*4];
|
kHeld = hidSharedMem[10 + padId*4];
|
||||||
cPos = *(circlePosition*)&hidSharedMem[10 + padId*4 + 3];
|
cPos = *(circlePosition*)&hidSharedMem[10 + padId*4 + 3];
|
||||||
|
|
||||||
int touchId = hidSharedMem[42 + 4];
|
int touchId = hidSharedMem[42 + 4];
|
||||||
tPos = *(touchPosition*)&hidSharedMem[42 + 8 + touchId*2];
|
tPos = *(touchPosition*)&hidSharedMem[42 + 8 + touchId*2];
|
||||||
if (hidSharedMem[42 + 8 + touchId*2 + 1])
|
if (hidSharedMem[42 + 8 + touchId*2 + 1])
|
||||||
kHeld |= KEY_TOUCH;
|
kHeld |= KEY_TOUCH;
|
||||||
|
|
||||||
kDown = (~kOld) & kHeld;
|
kDown = (~kOld) & kHeld;
|
||||||
kUp = kOld & (~kHeld);
|
kUp = kOld & (~kHeld);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 hidKeysHeld()
|
u32 hidKeysHeld()
|
||||||
{
|
{
|
||||||
return kHeld;
|
return kHeld;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 hidKeysDown()
|
u32 hidKeysDown()
|
||||||
{
|
{
|
||||||
return kDown;
|
return kDown;
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 hidKeysUp()
|
u32 hidKeysUp()
|
||||||
{
|
{
|
||||||
return kUp;
|
return kUp;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hidTouchRead(touchPosition* pos)
|
void hidTouchRead(touchPosition* pos)
|
||||||
{
|
{
|
||||||
if (pos) *pos = tPos;
|
if (pos) *pos = tPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hidCircleRead(circlePosition* pos)
|
void hidCircleRead(circlePosition* pos)
|
||||||
{
|
{
|
||||||
if (pos) *pos = cPos;
|
if (pos) *pos = cPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HIDUSER_GetSharedMem(Handle* outMemHandle)
|
Result HIDUSER_GetSharedMem(Handle* outMemHandle)
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0xa0000; //request header code
|
cmdbuf[0]=0xa0000; //request header code
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
|
||||||
if(outMemHandle)*outMemHandle=cmdbuf[3];
|
if(outMemHandle)*outMemHandle=cmdbuf[3];
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HIDUSER_EnableAccelerometer()
|
Result HIDUSER_EnableAccelerometer()
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x110000; //request header code
|
cmdbuf[0]=0x110000; //request header code
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HIDUSER_DisableAccelerometer()
|
Result HIDUSER_DisableAccelerometer()
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x120000; //request header code
|
cmdbuf[0]=0x120000; //request header code
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HIDUSER_EnableGyroscope()
|
Result HIDUSER_EnableGyroscope()
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x130000; //request header code
|
cmdbuf[0]=0x130000; //request header code
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result HIDUSER_DisableGyroscope()
|
Result HIDUSER_DisableGyroscope()
|
||||||
{
|
{
|
||||||
u32* cmdbuf=getThreadCommandBuffer();
|
u32* cmdbuf=getThreadCommandBuffer();
|
||||||
cmdbuf[0]=0x140000; //request header code
|
cmdbuf[0]=0x140000; //request header code
|
||||||
|
|
||||||
Result ret=0;
|
Result ret=0;
|
||||||
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
if((ret=svcSendSyncRequest(hidHandle)))return ret;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
u32 num;
|
u32 num;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
char name[8];
|
char name[8];
|
||||||
Handle handle;
|
Handle handle;
|
||||||
} services[];
|
} services[];
|
||||||
} service_list_t;
|
} service_list_t;
|
||||||
|
|
||||||
extern service_list_t* __service_ptr;
|
extern service_list_t* __service_ptr;
|
||||||
@ -35,86 +35,86 @@ static Handle g_srv_handle = 0;
|
|||||||
|
|
||||||
|
|
||||||
static int __name_cmp(const char* a, const char* b) {
|
static int __name_cmp(const char* a, const char* b) {
|
||||||
u32 i;
|
u32 i;
|
||||||
|
|
||||||
for(i=0; i<8; i++) {
|
for(i=0; i<8; i++) {
|
||||||
if(a[i] != b[i])
|
if(a[i] != b[i])
|
||||||
return 1;
|
return 1;
|
||||||
if(a[i] == '\0')
|
if(a[i] == '\0')
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Handle __get_handle_from_list(char* name) {
|
static Handle __get_handle_from_list(char* name) {
|
||||||
if((u32)__service_ptr == 0)
|
if((u32)__service_ptr == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
u32 i, num = __service_ptr->num;
|
u32 i, num = __service_ptr->num;
|
||||||
|
|
||||||
for(i=0; i<num; i++) {
|
for(i=0; i<num; i++) {
|
||||||
if(__name_cmp(__service_ptr->services[i].name, name) == 0)
|
if(__name_cmp(__service_ptr->services[i].name, name) == 0)
|
||||||
return __service_ptr->services[i].handle;
|
return __service_ptr->services[i].handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result srvInit()
|
Result srvInit()
|
||||||
{
|
{
|
||||||
Result rc = 0;
|
Result rc = 0;
|
||||||
|
|
||||||
if((rc = svcConnectToPort(&g_srv_handle, "srv:")))return rc;
|
if((rc = svcConnectToPort(&g_srv_handle, "srv:")))return rc;
|
||||||
|
|
||||||
if((rc = srvRegisterClient())) {
|
if((rc = srvRegisterClient())) {
|
||||||
svcCloseHandle(g_srv_handle);
|
svcCloseHandle(g_srv_handle);
|
||||||
g_srv_handle = 0;
|
g_srv_handle = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result srvExit()
|
Result srvExit()
|
||||||
{
|
{
|
||||||
if(g_srv_handle != 0)svcCloseHandle(g_srv_handle);
|
if(g_srv_handle != 0)svcCloseHandle(g_srv_handle);
|
||||||
|
|
||||||
g_srv_handle = 0;
|
g_srv_handle = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result srvRegisterClient()
|
Result srvRegisterClient()
|
||||||
{
|
{
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x10002;
|
cmdbuf[0] = 0x10002;
|
||||||
cmdbuf[1] = 0x20;
|
cmdbuf[1] = 0x20;
|
||||||
|
|
||||||
Result rc;
|
Result rc;
|
||||||
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
||||||
|
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Result srvGetServiceHandle(Handle* out, char* name)
|
Result srvGetServiceHandle(Handle* out, char* name)
|
||||||
{
|
{
|
||||||
/* Look in service-list given to us by loader. If we find find a match,
|
/* Look in service-list given to us by loader. If we find find a match,
|
||||||
we return it. */
|
we return it. */
|
||||||
Handle h = __get_handle_from_list(name);
|
Handle h = __get_handle_from_list(name);
|
||||||
|
|
||||||
if(h != 0) {
|
if(h != 0) {
|
||||||
return svcDuplicateHandle(out, h);
|
return svcDuplicateHandle(out, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Normal request to service manager. */
|
/* Normal request to service manager. */
|
||||||
u32* cmdbuf = getThreadCommandBuffer();
|
u32* cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x50100;
|
cmdbuf[0] = 0x50100;
|
||||||
strcpy((char*) &cmdbuf[1], name);
|
strcpy((char*) &cmdbuf[1], name);
|
||||||
cmdbuf[3] = strlen(name);
|
cmdbuf[3] = strlen(name);
|
||||||
cmdbuf[4] = 0x0;
|
cmdbuf[4] = 0x0;
|
||||||
|
|
||||||
Result rc;
|
Result rc;
|
||||||
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
if((rc = svcSendSyncRequest(g_srv_handle)))return rc;
|
||||||
|
|
||||||
*out = cmdbuf[3];
|
*out = cmdbuf[3];
|
||||||
return cmdbuf[1];
|
return cmdbuf[1];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user