示例#1
0
void alarm_update(void)
{
	unsigned char val = 23;
	if (al_cursor_pos)
		val = 59;

	if (keyboard_Up(KEY1) || keyboard_TimePressed(KEY1,KEYBOARD_TIMEPRESSED))
	{
		if (alarm_time_toSet[al_cursor_pos]<val)
			alarm_time_toSet[al_cursor_pos]++;
		else
			alarm_time_toSet[al_cursor_pos]=0;
	}
	else if (keyboard_Up(KEY2) || keyboard_TimePressed(KEY2,KEYBOARD_TIMEPRESSED))
	{
		if (alarm_time_toSet[al_cursor_pos])
			alarm_time_toSet[al_cursor_pos]--;
		else
			alarm_time_toSet[al_cursor_pos] = val;
	}
	else if (keyboard_TimeUp(KEY4,KEYBOARD_TIMEOUT))
	{
		Display_mode = MODE_PARAMS;
		keyboard_Reset();
	}
	else if (keyboard_Up(KEY4))
		al_cursor_pos++;
	else if (keyboard_Up(KEY3))
	{
		alarm_time[0] = alarm_time_toSet[0];
		alarm_time[1] = alarm_time_toSet[1];
		alarm_enabled = 1;
		mem_Write(0x0009,&alarm_enabled,1);			
		mem_Write(0x000A,alarm_time,2);
		Display_mode = MODE_PARAMS;
		keyboard_Reset();
	}

	if (al_cursor_pos==2)
		al_cursor_pos = 0;


	al_time--;
	if (!al_time)
	{
		al_time = AL_TIME;
		al_flush = ~al_flush;
	}
	
}
示例#2
0
文件: srv.c 项目: stergios7/3dmoo
u32 services_SyncRequest(handleinfo* h, bool *locked)
{
    u32 i;

    // Lookup which requested service in table.
    for(i=0; i<ARRAY_SIZE(services); i++) {
        if(services[i].subtype == h->subtype)
            return services[i].fnSyncRequest();
    }

    if (h->subtype == SERVICE_DIRECT) {
        if (h->misc[0] & HANDLE_SERV_STAT_ACKING) {
            mem_Write(h->misc_ptr[0], arm11_ServiceBufferAddress() + 0x80, 0x200);
            h->misc[0] &= ~(HANDLE_SERV_STAT_ACKING | HANDLE_SERV_STAT_SYNCING);
            *locked = false;
            return 0;
        } else {
            if (!(h->misc[0] & HANDLE_SERV_STAT_SYNCING)) mem_Read(h->misc_ptr[0], arm11_ServiceBufferAddress() + 0x80, 0x200);
            h->misc[0] |= HANDLE_SERV_STAT_SYNCING;
            *locked = true;
            return 0;
        }
    }

    ERROR("invalid handle.\n");
    arm11_Dump();
    PAUSE();
    return 0;
}
示例#3
0
文件: srv.c 项目: stergios7/3dmoo
u32 services_WaitSynchronization(handleinfo* h, bool *locked)
{
    if (h->misc[0] & HANDLE_SERV_STAT_SYNCING) {
        mem_Write(h->misc_ptr[0], arm11_ServiceBufferAddress() + 0x80, 0x200);
        *locked = false;
    } else*locked = true;
    return 0;
}
示例#4
0
文件: srv.c 项目: 20150/3dmoo
u32 svc_serverWaitSynchronization(handleinfo* h, bool *locked)
{
    handleinfo* hi = handle_Get(h->misc[0]);
    if (hi == NULL) {
        *locked = 1;
        return 0;
    }
    if (hi->misc[0] & HANDLE_SERV_STAT_SYNCING) {
        mem_Write(hi->misc_ptr[0], arm11_ServiceBufferAddress() + 0x80, 0x80); //todo 
        *locked = 0;
        return 0;
    }
    else {
        *locked = 1;
        return 0;
    }
}
示例#5
0
文件: romfs.c 项目: 20150/3dmoo
static u32 rawromfs_Read(file_type* self, u32 ptr, u32 sz, u64 off, u32* read_out)
{
    *read_out = 0;

    if((off >> 32) || (off >= romfs_sz) || ((off+sz) >= romfs_sz)) {
        ERROR("Invalid read params.\n");
        return -1;
    }

    if(fseek64(in_fd, romfs_off + off, SEEK_SET) == -1) {
        ERROR("fseek failed.\n");
        return -1;
    }

    u8* b = malloc(sz);
    if(b == NULL) {
        ERROR("Not enough mem.\n");
        return -1;
    }

    u32 read = fread(b, 1, sz, in_fd);

    ctr_aes_context ctx;

    if (loader_encrypted) {
        u8* temp = calloc(sz + (off & 0xF) + (sz & 0xF), sizeof(u8));
        memcpy(temp + (off & 0xF), b, sz);
        ncch_extract_prepare(&ctx, &loader_h, NCCHTYPE_ROMFS, loader_key);
        ctr_add_counter(&ctx, (u32)((0x1000 + off) / 0x10)); //this is from loader
        ctr_crypt_counter(&ctx, temp, temp, sz + (off & 0xF));
        memcpy(b, temp + (off & 0xF), sz);
        free(temp);
    }

    if(mem_Write(b, ptr, read) != 0) {
        ERROR("mem_Write failed.\n");
        free(b);
        return -1;
    }

    *read_out = read;
    free(b);

    return 0; // Result
}
示例#6
0
static u32 sharedextdfile_Read(file_type* self, u32 ptr, u32 sz, u64 off, u32* read_out)
{
    FILE* fd = self->type_specific.sharedextd.fd;
    *read_out = 0;

    if(off >> 32) {
        ERROR("64-bit offset not supported.\n");
        return -1;
    }

    if(fseek(fd, off, SEEK_SET) == -1) {
        ERROR("fseek failed.\n");
        return -1;
    }

    u8* b = malloc(sz);
    if(b == NULL) {
        ERROR("Not enough mem.\n");
        return -1;
    }

    u32 read = fread(b, 1, sz, fd);
    if(read == 0) {
        ERROR("fread failed\n");
        free(b);
        return -1;
    }

    if(mem_Write(b, ptr, read) != 0) {
        ERROR("mem_Write failed.\n");
        free(b);
        return -1;
    }

    *read_out = read;
    free(b);

    return 0; // Result
}