Exemple #1
0
int PS2MouseSetPosition(int x, int y)

{
  s32* data = (s32 *) buffer;
  
  data[0] = x;
  data[1] = y;

  if (SifCallRpc(&mouseif, PS2MOUSE_SETPOSITION, 0, buffer, 128, buffer, 128, 0, 0) < 0)
    return -1;

  return 1;
}
Exemple #2
0
int sbcall_soundgcoreattr(tge_sbcall_rpc_arg_t *carg)
{
	tge_sbacall_soundgetcoreattr_arg_t *arg = (tge_sbacall_soundgetcoreattr_arg_t *) carg->sbarg;

	if (!soundInitialized) {
		return -1;
	}
	rpcBuffer[1] = arg->index;
	if (SifCallRpc(&sdrsif, SOUND_GCORE_ATTR, SIF_RPC_M_NOWAIT, rpcBuffer, 64, rpcResultBuffer, 16, soundCallback, carg) < 0) {
		return -SIF_RPCE_SENDP;
	}
	return 0;
}
Exemple #3
0
// return buffer:
// Offset 0 = getsockopt return value
// 0ffset 1 = optlen
// Offset 2 = optval (max 128 bytes)
int getsockopt(int s, int level, int optname, void* optval, socklen_t* optlen)
{
	((int*)_rpc_buffer)[0] = s;
	((int*)_rpc_buffer)[1] = level;
	((int*)_rpc_buffer)[2] = optname;

	SifCallRpc(&_ps2ip, ID_GETSOCKOPT, 0, (void*)_rpc_buffer, 12, (void*)_rpc_buffer, 136, 0, 0);

	if(_rpc_buffer[1] < *optlen) *optlen = _rpc_buffer[1];
	memcpy((void*)optval, &_rpc_buffer[2], *optlen);

	return _rpc_buffer[0];
}
Exemple #4
0
int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen)
{
	((int*)_rpc_buffer)[0] = s;
	((int*)_rpc_buffer)[1] = level;
	((int*)_rpc_buffer)[2] = optname;
	((int*)_rpc_buffer)[3] = optlen;

    memcpy(&_rpc_buffer[4], optval, optlen);

	SifCallRpc(&_ps2ip, ID_SETSOCKOPT, 0, (void*)_rpc_buffer, 16 + optlen, (void*)_rpc_buffer, 4, 0, 0);

	return _rpc_buffer[0];
}
Exemple #5
0
// tk
// returns connection state of usb device
int usb_mass_getConnectState( unsigned int slot )
{
	int *ret;
	unsigned int *nums;

	nums	= (unsigned int*) rpcBuffer;
	nums[0] = slot;

	SifCallRpc(&client,6,0,(void*)(&rpcBuffer[0]), 4,(void*)(&rpcBuffer[0]),4,0,0);

	ret = (int*) rpcBuffer;
	return *ret;
}
Exemple #6
0
int sndStreamOpen(char *file, u32 voices, u32 flags, u32 bufaddr, u32 bufsize)
{
	u32 buf[32] ALIGNED(64);
	buf[0] = voices;
	buf[1] = flags;
	buf[2] = bufaddr;
	buf[3] = bufsize;
	strncpy((char*)&buf[4], file, 27*4);
	buf[31] = 0;

	SifCallRpc(&sd_client, PS2SND_StreamOpen, 0, buf, 128, buf, 4, NULL, NULL);
	return(((s32 *)buf)[0]);
}
Exemple #7
0
int PS2CamSetLEDMode(int handle, int mode)
{
	int *ret;

	ret = (int *)&data[0];

	ret[0] = handle;
	ret[1] = mode;

	SifCallRpc(&cdata, PS2CAM_RPC_SETLEDMODE, 0, (void*)(&data[0]),4,(void*)(&data[0]),4,0,0);

	return ret[0];
}
Exemple #8
0
float PS2MouseGetAccel()

{
  u32* uncached = (u32 *) UNCACHED_SEG(buffer);
  u32 accel_fixed;

  if (SifCallRpc(&mouseif, PS2MOUSE_GETACCEL, 0, buffer, 128, buffer, 128, 0, 0) < 0)
    return -1;

  accel_fixed = uncached[0];

  return ((float) accel_fixed) / 65536.0 ;
}
Exemple #9
0
int
padGetButtonMask(int port, int slot)
{

    *(u32 *)(&buffer[0])=PAD_RPCCMD_GET_BTNMASK;
    *(u32 *)(&buffer[4])=port;
    *(u32 *)(&buffer[8])=slot;

    if (SifCallRpc(&padsif[0], 1, 0, buffer, 128, buffer, 128, NULL, NULL) < 0)
        return 0;

    return *(int *)(&buffer[12]);
}
Exemple #10
0
int sbcall_soundtransstat(tge_sbcall_rpc_arg_t *carg)
{
	tge_sbcall_soundtransferstat_arg_t *arg = (tge_sbcall_soundtransferstat_arg_t *) carg->sbarg;

	if (!soundInitialized) {
		return -1;
	}
	rpcBuffer[1] = arg->channel;
	rpcBuffer[2] = arg->flag;
	if (SifCallRpc(&sdrsif, SOUND_SCORE_TRANS, SIF_RPC_M_NOWAIT, rpcBuffer, 64, rpcResultBuffer, 16, soundCallback, carg) < 0) {
		return -SIF_RPCE_SENDP;
	}
	return 0;
}
Exemple #11
0
int connect(int s, struct sockaddr *name, int namelen)
{
	cmd_pkt *pkt = (cmd_pkt *)_rpc_buffer;

	if(!_init_check) return -1;

	pkt->socket = s;
	pkt->len = namelen;
	memcpy((void *)&pkt->sockaddr, (void *)name, sizeof(struct sockaddr));

	SifCallRpc(&_ps2ip, ID_CONNECT, 0, (void*)_rpc_buffer, sizeof(cmd_pkt), (void*)_rpc_buffer, 4, 0, 0);

	return _rpc_buffer[0];
}
Exemple #12
0
int NetManSetLinkMode(int mode){
	int result;

	WaitSema(NetManIOSemaID);

	*(int*)TransmitBuffer = mode;
	if((result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_SET_LINK_MODE, 0, TransmitBuffer, sizeof(int), ReceiveBuffer, sizeof(int), NULL, NULL))>=0){
		result=*(int*)ReceiveBuffer;
	}

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #13
0
int NetManSetLinkMode(int mode)
{
	int result;

	WaitSema(NetManIOSemaID);

	TransmitBuffer.mode = mode;
	if((result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_SET_LINK_MODE, 0, &TransmitBuffer, sizeof(s32), &ReceiveBuffer, sizeof(s32), NULL, NULL))>=0)
		result=ReceiveBuffer.result;

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #14
0
int NetManRPCUnregisterNetworkStack(void)
{
	int result;

	WaitSema(NetManIOSemaID);

	result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_UNREG_NETWORK_STACK, 0, NULL, 0, NULL, 0, NULL, NULL);
	IOPFrameBuffer = NULL;
	IOPFrameBufferWrPtr = 0;

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #15
0
int audsrv_load_adpcm(audsrv_adpcm_t *adpcm, void *buffer, int size)
{
	void* iop_addr;
	SifDmaTransfer_t sifdma;
	int id, ret;

	iop_addr = SifAllocIopHeap(size);
	if (iop_addr == 0)
	{
		return -AUDSRV_ERR_OUT_OF_MEMORY;
	}

	sifdma.src = buffer;
	sifdma.dest = iop_addr;
	sifdma.size = size;
	sifdma.attr = 0;

	/* send by dma */
	while((id = SifSetDma(&sifdma, 1)) == 0);
	while(SifDmaStat(id) >= 0);

	WaitSema(completion_sema);

	sbuff[0] = (int)iop_addr;
	sbuff[1] = size;
	sbuff[2] = (int)adpcm; /* use as id */

	SifCallRpc(&cd0, AUDSRV_LOAD_ADPCM, 0, sbuff, 12, sbuff, 16, NULL, NULL);

	if(sbuff[0] != 0)
	{
		adpcm->buffer = 0;
		ret = sbuff[0];
	}
	else
	{
		adpcm->buffer = buffer;
		adpcm->size = size;
		adpcm->pitch = sbuff[1];
		adpcm->loop = sbuff[2];
		adpcm->channels = sbuff[3];
		ret = AUDSRV_ERR_NOERROR;
	}

	SignalSema(completion_sema);

	SifFreeIopHeap(iop_addr);

	return ret;
}
Exemple #16
0
int ps2ip_getconfig(char *netif_name, t_ip_info *ip_info)
{
	if(!_init_check) return -1;
    
    // call with netif name
    memcpy(_rpc_buffer, netif_name, 8);
    
	SifCallRpc(&_ps2ip, ID_GETCONFIG, 0, (void*)_rpc_buffer, 8, (void*)_rpc_buffer, sizeof(t_ip_info), 0, 0);

    // return config    
    memcpy(ip_info, _rpc_buffer, sizeof(t_ip_info));
    
    return 1;
}
Exemple #17
0
void SjPCM_Puts(char *format, ...)
{
	static char buff[4096];
    va_list args;
    int rv;

	if(!sjpcm_inited) return;

    va_start(args, format);
    rv = vsnprintf(buff, 4096, format, args);

	memcpy((char*)(&sbuff[0]),buff,252);
	SifCallRpc(&cd0,SJPCM_PUTS,0,(void*)(&sbuff[0]),252,(void*)(&sbuff[0]),252,0,0);
}
Exemple #18
0
int poweroffInit(void)
{
	ee_thread_t thread;
	ee_sema_t sema;
	int res;
	static int _init_count = -1;

	if(_init_count == _iop_reboot_count)
		return 0;
	_init_count = _iop_reboot_count;

	while(((res = SifBindRpc(&cd0, PWROFF_IRX, 0)) >= 0) && (cd0.server == NULL))
		nopdelay();

	// Terminate and delete any previously created threads
	if (powerOffThreadId >= 0) {
		TerminateThread(powerOffThreadId);
		DeleteThread(powerOffThreadId);
		powerOffThreadId = -1;
	}

	// Delete any previously created semaphores
	if (PowerOffSema >= 0)
	{
		DeleteSema(PowerOffSema);
		PowerOffSema = -1;
	}

	sema.init_count = 0;
	sema.max_count = 1;
	sema.option = 0;
	PowerOffSema = CreateSema(&sema);

	thread.initial_priority = POWEROFF_THREAD_PRIORITY;
	thread.stack_size = sizeof(poffThreadStack);
	thread.gp_reg = &_gp;
	thread.func = PowerOffThread;
	thread.stack = (void *)poffThreadStack;
	powerOffThreadId = CreateThread(&thread);
	StartThread(powerOffThreadId, NULL);

	DI();
	SifAddCmdHandler(POFF_SIF_CMD, _poff_intr_callback, NULL);
	EI();

	int autoShutdown = 0;
	SifCallRpc(&cd0, PWROFF_ENABLE_AUTO_SHUTOFF, 0, NULL, 0, &autoShutdown, sizeof(autoShutdown), NULL, NULL);

	return res;
}
Exemple #19
0
int PS2MouseSetAccel(float accel)

{
  u32 accel_fixed;

  if(accel < 0) return -1;

  accel_fixed = (u32) (accel * 65536.0);
  *((u32 *) buffer) = accel_fixed;
  if (SifCallRpc(&mouseif, PS2MOUSE_SETACCEL, 0, buffer, 128, buffer, 128, 0, 0) < 0)
    return -1;

  return 1;
}
Exemple #20
0
int PS2CamSetDeviceConfig(int handle, PS2CAM_DEVICE_CONFIG *cfg)
{
	int *ret;

	ret = (int *)&data[0];

	ret[0] = handle;

	memcpy(&ret[1], cfg, cfg->ssize);

	SifCallRpc(&cdata, PS2CAM_RPC_SETDEVCONFIG, 0, (void*)(&data[0]), 4+cfg->ssize,(void*)(&data[0]),4+cfg->ssize,0,0);

	return ret[0];
}
Exemple #21
0
static void TxThread(void *arg){
	struct TxFIFOData *TxFIFODataToTransmit;
	SifDmaTransfer_t dmat;
	int dmat_id, ThreadToWakeUp;

	while(1){
		SleepThread();

		WaitSema(TxBankAccessSema);

		if(CurrentTxFIFOData->PacketReqs.NumPackets>0){
			// Switch banks
			TxFIFODataToTransmit=CurrentTxFIFOData;
			if(TxActiveBankID==0){
				CurrentTxFIFOData=&TxFIFOData2;
				TxActiveBankID=1;
			}
			else{
				CurrentTxFIFOData=&TxFIFOData1;
				TxActiveBankID=0;
			}

			SignalSema(TxBankAccessSema);

			SifWriteBackDCache(&TxFIFODataToTransmit->PacketReqs, sizeof(TxFIFODataToTransmit->PacketReqs));

			dmat.src=&TxFIFODataToTransmit->PacketReqs;
			dmat.dest=TxFrameTagBuffer;
			dmat.size=8+sizeof(struct PacketTag)*TxFIFODataToTransmit->PacketReqs.NumPackets;
			dmat.attr=0;

			while((dmat_id=SifSetDma(&dmat, 1))==0){};

			WaitSema(NetManIOSemaID);
			SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_SEND_PACKETS, 0, TxFIFODataToTransmit->FrameBuffer, TxFIFODataToTransmit->PacketReqs.TotalLength, NULL, 0, NULL, NULL);
			SignalSema(NetManIOSemaID);

			TxFIFODataToTransmit->PacketReqs.NumPackets=0;
			TxFIFODataToTransmit->PacketReqs.TotalLength=0;
		}
		else SignalSema(TxBankAccessSema);

		if(NetmanTxWaitingThread>=0){
			ThreadToWakeUp=NetmanTxWaitingThread;
			NetmanTxWaitingThread=-1;	//To prevent a race condition from occurring, invalidate NetmanTxWaitingThread before invoking WakeupThread.
			WakeupThread(ThreadToWakeUp);
		}
	}
}
Exemple #22
0
int getpeername(int s, struct sockaddr *name, int *namelen)
{
	cmd_pkt *pkt = (cmd_pkt *)_rpc_buffer;

	if(!_init_check) return -1;

	pkt->socket = s;

	SifCallRpc(&_ps2ip, ID_GETPEERNAME, 0, (void*)_rpc_buffer, 4, (void*)_rpc_buffer, sizeof(cmd_pkt), 0, 0);

	if(pkt->len < *namelen) *namelen = pkt->len;
	memcpy((void *)name, (void *)&pkt->sockaddr, *namelen);

	return pkt->socket;
}
Exemple #23
0
int PS2MouseGetBoundary(int *minx, int *maxx, int *miny, int *maxy)

{
  u32* uncached = (u32 *) UNCACHED_SEG(buffer);

  if (SifCallRpc(&mouseif, PS2MOUSE_GETBOUNDARY, 0, buffer, 128, buffer, 128, 0, 0) < 0)
    return -1;

  *minx = uncached[0];
  *maxx = uncached[1];
  *miny = uncached[2];
  *maxy = uncached[3];

  return 1;
}
Exemple #24
0
int PS2MouseSetBoundary(int minx, int maxx, int miny, int maxy)

{
  s32* data = (s32 *) buffer;

  data[0] = minx;
  data[1] = maxx;
  data[2] = miny;
  data[3] = maxy;

  if (SifCallRpc(&mouseif, PS2MOUSE_SETBOUNDARY, 0, buffer, 128, buffer, 128, 0, 0) < 0)
    return -1;

  return 1;
}
Exemple #25
0
int audsrv_quit()
{
	WaitSema(completion_sema);

	SifCallRpc(&cd0, AUDSRV_QUIT, 0, sbuff, 1*4, sbuff, 4, NULL, NULL);
	set_error(AUDSRV_ERR_NOERROR);

	SifRemoveRpc(&cb_srv, &cb_queue);
	SifRemoveRpcQueue(&cb_queue);
	TerminateThread(rpc_server_thread_id);
	DeleteThread(rpc_server_thread_id);

	DeleteSema(completion_sema);
	return 0;
}
Exemple #26
0
int NetManSetMainIF(const char *name)
{
	int result;

	WaitSema(NetManIOSemaID);

	strncpy(TransmitBuffer.netifName, name, NETMAN_NETIF_NAME_MAX_LEN);
	TransmitBuffer.netifName[NETMAN_NETIF_NAME_MAX_LEN-1] = '\0';
	if((result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_SET_MAIN_NETIF, 0, &TransmitBuffer, NETMAN_NETIF_NAME_MAX_LEN, &ReceiveBuffer, sizeof(s32), NULL, NULL))>=0)
		result=ReceiveBuffer.result;

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #27
0
int PS2CamGetDeviceStatus(int handle)
{
	int *ret;


	ret = (int *)&data[0];

	ret[0] = handle;


	SifCallRpc(&cdata, PS2CAM_RPC_GETDEVSTATUS, 0, (void*)(&data[0]),4,(void*)(&data[0]),4,0,0);
	nopdelay();

	return ret[0];
}
Exemple #28
0
int NetManRPCRegisterNetworkStack(void){
	int result;

	WaitSema(NetManIOSemaID);

	if((result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_REG_NETWORK_STACK, 0, NULL, 0, ReceiveBuffer, sizeof(struct NetManRegNetworkStackResult), NULL, NULL))>=0){
		if((result=((struct NetManRegNetworkStackResult*)ReceiveBuffer)->result) == 0){
			IOPFrameBuffer=((struct NetManRegNetworkStackResult*)ReceiveBuffer)->FrameBuffer;
		}
	}

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #29
0
int NetManSetMainIF(const char *name){
	int result;

	WaitSema(NetManIOSemaID);

	strncpy(TransmitBuffer, name, NETMAN_NETIF_NAME_MAX_LEN);
	TransmitBuffer[NETMAN_NETIF_NAME_MAX_LEN-1] = '\0';
	if((result=SifCallRpc(&NETMAN_rpc_cd, NETMAN_IOP_RPC_FUNC_SET_MAIN_NETIF, 0, TransmitBuffer, NETMAN_NETIF_NAME_MAX_LEN, ReceiveBuffer, sizeof(int), NULL, NULL))>=0){
		result=*(int*)ReceiveBuffer;
	}

	SignalSema(NetManIOSemaID);

	return result;
}
Exemple #30
0
int accept(int s, struct sockaddr *addr, int *addrlen)
{
	cmd_pkt *pkt = (cmd_pkt *)_rpc_buffer;

	if(!_init_check) return -1;

	pkt->socket = s;

	SifCallRpc(&_ps2ip, ID_ACCEPT, 0, (void*)_rpc_buffer, 4, (void*)_rpc_buffer, sizeof(cmd_pkt), 0, 0);

	if(pkt->len < *addrlen) *addrlen = pkt->len;
	memcpy((void *)addr, (void *)&pkt->sockaddr, *addrlen);

	return pkt->socket;
}