| 1 | /* | 
 
 
 
 
 | 2 | _____     ___ ____ | 
 
 
 
 
 | 3 | ____|   |    ____|      PS2 Open Source Project | 
 
 
 
 
 | 4 | |     ___|   |____ | 
 
 
 
 
 | 5 |  | 
 
 
 
 
 | 6 | --------------------------------------------------------------------------- | 
 
 
 
 
 | 7 |  | 
 
 
 
 
 | 8 | Copyright (C) 2008 - Neme & jimmikaelkael (www.psx-scene.com) | 
 
 
 
 
 | 9 |  | 
 
 
 
 
 | 10 | This program is free software; you can redistribute it and/or modify | 
 
 
 
 
 | 11 | it under the terms of the Free McBoot License. | 
 
 
 
 
 | 12 |  | 
 
 
 
 
 | 13 | This program and any related documentation is provided "as is" | 
 
 
 
 
 | 14 | WITHOUT ANY WARRANTIES, either express or implied, including, but not | 
 
 
 
 
 | 15 | limited to, implied warranties of fitness for a particular purpose. The | 
 
 
 
 
 | 16 | entire risk arising out of use or performance of the software remains | 
 
 
 
 
 | 17 | with you. | 
 
 
 
 
 | 18 | In no event shall the author be liable for any damages whatsoever | 
 
 
 
 
 | 19 | (including, without limitation, damages to your hardware or equipment, | 
 
 
 
 
 | 20 | environmental damage, loss of health, or any kind of pecuniary loss) | 
 
 
 
 
 | 21 | arising out of the use of or inability to use this software or | 
 
 
 
 
 | 22 | documentation, even if the author has been advised of the possibility of | 
 
 
 
 
 | 23 | such damages. | 
 
 
 
 
 | 24 |  | 
 
 
 
 
 | 25 | You should have received a copy of the Free McBoot License along with | 
 
 
 
 
 | 26 | this program; if not, please report at psx-scene : | 
 
 
 
 
 | 27 | http://psx-scene.com/forums/freevast/ | 
 
 
 
 
 | 28 |  | 
 
 
 
 
 | 29 | --------------------------------------------------------------------------- | 
 
 
 
 
 | 30 | */ | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | #include <tamtypes.h> | 
 
 
 
 
 | 33 | #include <kernel.h> | 
 
 
 
 
 | 34 | #include <sifrpc.h> | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | // External functions | 
 
 
 
 
 | 37 | int chkesr_rpc_Init(void); | 
 
 
 
 
 | 38 | int Check_ESR_Disc(void); | 
 
 
 
 
 | 39 |  | 
 
 
 
 
 | 40 | #define CHKESR_IRX 0x0E0E0E0 | 
 
 
 
 
 | 41 |  | 
 
 
 
 
 | 42 | static SifRpcClientData_t chkesr    __attribute__((aligned(64))); | 
 
 
 
 
 | 43 | static int Rpc_Buffer[1024] __attribute__((aligned(64))); | 
 
 
 
 
 | 44 |  | 
 
 
 
 
 | 45 | typedef struct { | 
 
 
 
 
 | 46 | u32 ret; | 
 
 
 
 
 | 47 | } Rpc_Packet_Send_Check_ESR_Disc; | 
 
 
 
 
 | 48 |  | 
 
 
 
 
 | 49 | int chkesr_Inited  = 0; | 
 
 
 
 
 | 50 |  | 
 
 
 
 
 | 51 | //-------------------------------------------------------------- | 
 
 
 
 
 | 52 | int chkesrBindRpc(void) { | 
 
 
 
 
 | 53 | int ret; | 
 
 
 
 
 | 54 | int retryCount = 0x1000; | 
 
 
 
 
 | 55 |  | 
 
 
 
 
 | 56 | while(retryCount--) { | 
 
 
 
 
 | 57 | ret = SifBindRpc( &chkesr, CHKESR_IRX, 0); | 
 
 
 
 
 | 58 | if ( ret  < 0) return -1; | 
 
 
 
 
 | 59 | if (chkesr.server != 0) break; | 
 
 
 
 
 | 60 | // short delay | 
 
 
 
 
 | 61 | ret = 0x10000; | 
 
 
 
 
 | 62 | while(ret--) asm("nop\nnop\nnop\nnop"); | 
 
 
 
 
 | 63 | } | 
 
 
 
 
 | 64 | chkesr_Inited = 1; | 
 
 
 
 
 | 65 | return retryCount; | 
 
 
 
 
 | 66 | } | 
 
 
 
 
 | 67 | //-------------------------------------------------------------- | 
 
 
 
 
 | 68 | int chkesr_rpc_Init(void) | 
 
 
 
 
 | 69 | { | 
 
 
 
 
 | 70 | chkesrBindRpc(); | 
 
 
 
 
 | 71 | if(!chkesr_Inited) return -1; | 
 
 
 
 
 | 72 | return 1; | 
 
 
 
 
 | 73 | } | 
 
 
 
 
 | 74 | //-------------------------------------------------------------- | 
 
 
 
 
 | 75 | int Check_ESR_Disc(void) | 
 
 
 
 
 | 76 | { | 
 
 
 
 
 | 77 | Rpc_Packet_Send_Check_ESR_Disc *Packet = (Rpc_Packet_Send_Check_ESR_Disc *)Rpc_Buffer; | 
 
 
 
 
 | 78 |  | 
 
 
 
 
 | 79 | if(!chkesr_Inited) chkesr_rpc_Init(); | 
 
 
 
 
 | 80 | if ((SifCallRpc(&chkesr, 1, 0, (void*)Rpc_Buffer, sizeof(Rpc_Packet_Send_Check_ESR_Disc), (void*)Rpc_Buffer, sizeof(int),0,0)) < 0) return -1; | 
 
 
 
 
 | 81 | return Packet->ret; | 
 
 
 
 
 | 82 | } | 
 
 
 
 
 | 83 | //-------------------------------------------------------------- |