Exemplo n.º 1
0
void show_args_for_debug()
{
    int i, max_pnl;

    if(ttm.set_pnl_num)
        max_pnl = ttm.pnl_num;
    else
        max_pnl = PNL_NUM; 

    for(i=0;i<max_pnl;i++)
    {
        printf("ap %d (on pnl %d), ",get_ap(i), i);
        printf("ap_read_evt: %d, ",get_evt(i));
        printf("ap_display_fb: %d, ",get_fb(i));
        printf("pnl_%d_read_evt: %d\n",i, get_pnl_evt(i));
    }

    printf("master panel : %d\n",ttm.pnl_arg);
    printf("calibrate    : %s\n",(ttm.calibrate)?"yes":"no");
    printf("split mode   : %s\n",(ttm.split)?"yes":"no");

    if(ttm.arg.bind.set)
    {
        int j;
        for (i = 0; i < ttm.bind_data.pnl_num; i++) 
        {
            printf("bind panel %d : ", i);
            for (j = 0; j < ttm.bind_data.pnl[i].ap_num; j++) 
            {
                printf("%d ",ttm.bind_data.pnl[i].group[j]);
            }
            printf("\n");
        }
    }
}
Exemplo n.º 2
0
void tm_calibrate()
{
    int fd, i, max_pnl=PNL_NUM;
    fb_data_t fb;
    evt_data_t evt;
    
    if(ttm.set_pnl_num)
        max_pnl = ttm.pnl_num;

    memset(&fb, 0, sizeof(fb_data_t));
    memset(&evt, 0, sizeof(evt_data_t));

    memcpy(fb.dev, default_fb, sizeof(default_fb));
    memcpy(fb.pan, default_pan, sizeof(default_pan));
    memcpy(evt.dev, default_evt, sizeof(default_evt));

    if(system("mount -o remount -w /"))
        fprintf(stderr, "file system may be readonly!!\n");

    for (i = 0; i < max_pnl; i++) 
    {
        fb.fb_id = get_fb(i);
        fb.dev[FB_NUM_POS]= '0' + fb.fb_id;
        fb.pan[PAN_NUM_POS]= '0' + fb.fb_id;
        evt.num = get_pnl_evt(i);

        if((evt.dev[EVT_NUM_POS] = evt.num/10))
        {
            evt.dev[EVT_NUM_POS] += '0';
            evt.dev[EVT_NUM_POS+1] = '0' + evt.num%10;
        }
        else
            evt.dev[EVT_NUM_POS] = '0' + evt.num;
    
        printf("calibrate %d pan : %s\n",i,fb.pan);
        printf("calibrate %d fb  : %s\n",i,fb.dev);
        printf("calibrate %d evt : %s\n",i,evt.dev);
        
        if((fd=open(fb.pan, O_RDWR))>=0)
        {
            if (write(fd, "0,0", 3)<0) {
                dbg_log("write pan error, pan : %s",fb.pan);
            }
            close(fd);
        }
        else
        {
            printf("open pan error\n");
        }
        ts_cal(&fb, evt.dev);
    }

    update_calibrate();
    refresh_tm_test(&fb);

    system("mount -o remount -r /");
}
Exemplo n.º 3
0
int main(int argc, char **argv)
{
  int nr_opts;


  nr_opts = process_args(argc, argv);

  if (argc - nr_opts == 0) {
    /* no filename given -> invent one */
    char my_hostname[100];
    gethostname(my_hostname, 100);
    if (strlen(file_ext) == 0)
      strcpy(file_ext, STD_EXT);
    sprintf(filename, "%s.%s.%d%s",
	    PROGNAME, my_hostname, (int)time(NULL), file_ext);
  } else {
    if (strlen(argv[nr_opts]) > FILENAME_LEN - strlen(RAW_EXT)
	                        - strlen(file_ext)) {
      fprintf(stderr, "Error: given filename too long\n");
      exit(1);
    }
    strcpy(filename, argv[nr_opts]);
    strcat(filename, file_ext);
  }
  strcpy(raw_filename, filename);
  strcat(raw_filename, RAW_EXT);
  strcpy(fb_filename, filename);
  strcat(fb_filename, FB_EXT);

  if (!opt_process_raw_input_only) {
    get_fb();

    if (opt_write_fb)
      write_fb(fb_mem, fb_size);

    convert_fb_to_raw();

    INFO("Writing raw picture data to %s\n", raw_filename);
    write_raw(raw_pic_mem, raw_pic_size);
  }

  if (opt_convert)
    convert_raw_to_pic(filename, raw_filename, xres, yres);

  if (opt_delete_raw)
    if (unlink(raw_filename) == -1)
      perror(raw_filename);
  
  return 0;
}
Exemplo n.º 4
0
Arquivo: core.c Projeto: antrik/kgi
void draw_crap(void)
{
	const kgi_mmio_region_t *fb = get_fb(display->mode, NULL);
	char *ptr;

	const int offs = time(NULL);
	const int width = display->mode->img[0].virt.x;

	assert(fb);

	/* assuming the whole framebuffer is mapped in the aperture */
	for(ptr = (char *)fb->win.virt; ptr < (char *)fb->win.virt + fb->win.size; ++ptr)
		*ptr = ((int)ptr + offs) % (width - 1) & 0xff;
}
Exemplo n.º 5
0
void init_fb(fb_data_t* fb, int pnl)
{
    int i;

    memcpy(fb->dev, default_fb, sizeof(default_fb));
    memcpy(fb->pan, default_pan, sizeof(default_pan));

    for (i = 0; i < STR_NUM; i++)
        memset(fb->str[i], 0, MAX_STR_LEN);

    fb->fb_id = get_fb(pnl);
    fb->dev[FB_NUM_POS]= '0' + fb->fb_id;
    fb->pan[PAN_NUM_POS]= '0' + fb->fb_id;
}
Exemplo n.º 6
0
int select_fb(int ap)
{
    int fb = -1;

    if(ttm.arg.bind.set)
    {
        fb = get_fb(select_bind_pnl(ap));
    }
    
    if(fb < 0)
    {
        if (ap == 6)
            fb = PNL2_FB_NUM;
        else if(ap == 4)
            fb = PNL1_FB_NUM;
        else
            fb = PNL0_FB_NUM;
    }

    return fb;
}
Exemplo n.º 7
0
Arquivo: core.c Projeto: antrik/kgi
kern_return_t kgi_get_fb_resource(trivfs_protid_t io_object, kgic_mapper_resource_info_result_t *fb)
{
	if (!io_object)
		return EOPNOTSUPP;
	if (!(io_object->po->openmodes & O_READ))
		return EBADF;

	fprintf(stderr, "kgi_get_fb_resource()\n");

	{
		struct po_state *const state = io_object->po->hook;

		/* first things first... */
		if (state->status != KGI_STATUS_SET && state->status != KGI_STATUS_CHECKED)
			return EPROTO;

		{
			int res_index;
			const kgi_mmio_region_t *fb_res = get_fb(&state->mode, &res_index);

			if (!fb_res)
				return ENXIO;

			memset(fb, 0, sizeof (*fb));

			strncpy(fb->name, fb_res->name, sizeof (fb->name)); fb->name[sizeof (fb->name)-1] = 0;
			fb->resource = res_index;
			fb->image = -1;
			fb->type = fb_res->type;
			fb->protection = fb_res->prot;

			fb->info.mmio.access = fb_res->access;
			fb->info.mmio.align  = fb_res->align;
			fb->info.mmio.size   = fb_res->size;
			fb->info.mmio.window = fb_res->win.size;
		}
	}

	return 0;
}
Exemplo n.º 8
0
Arquivo: core.c Projeto: antrik/kgi
kern_return_t trivfs_S_io_map(
	trivfs_protid_t io_object,
	mach_port_t reply, mach_msg_type_name_t reply_type,
	memory_object_t *rd_obj, mach_msg_type_name_t *rd_type,
	memory_object_t *wr_obj, mach_msg_type_name_t *wr_type)
{
	if (!io_object)
		return EOPNOTSUPP;

	fprintf(stderr, "trivfs_S_io_map()\n");

	{
		const int rd = io_object->po->openmodes | O_READ;
		const int wr = io_object->po->openmodes | O_WRITE;
		const vm_prot_t prot = (rd ? VM_PROT_READ : 0) | (wr ? VM_PROT_WRITE : 0);

		struct po_state *const state = io_object->po->hook;

		if(!prot)
			return EBADF;

		/* first things first... */
		if (state->status != KGI_STATUS_SET)
			return EPROTO;

		/*
		 * Note: The requirement to have a mode set before calling this
		 * RPC, means that we can't actually get here without
		 * openmodes|O_WRITE; so strictly the handling of O_WRITE is
		 * not necessary. It *is* however theoretically possible --
		 * though strange -- to get here without O_READ; so we *do*
		 * need the handling of this.
		 *
		 * To keep things simple, we just use the standard openmodes
		 * handling (i.e. both O_READ and O_WRITE), even if strictly
		 * speaking it's overkill.
		 */

		switch (state->mmap_mode) {
			case KGI_MMAP_NONE:
				return EPROTO;

			case KGI_MMAP_FB: {
				const kgi_mmio_region_t *fb_res = get_fb(&state->mode, NULL);

				if(!fb_res)
					return ENXIO;

				{
					const memory_object_t fb_obj = get_fb_object(fb_res->win.phys, fb_res->win.size, prot);

					*rd_obj = rd ? fb_obj : MACH_PORT_NULL;
					*wr_obj = wr ? fb_obj : MACH_PORT_NULL;

					/* if the port is used twice, make sure we have a second reference */
					if (rd && wr)
						mach_port_mod_refs(mach_task_self(), fb_obj, MACH_PORT_RIGHT_SEND, 1);

					*rd_type = *wr_type = MACH_MSG_TYPE_MOVE_SEND;
				}
			}    /* case KGI_MMAP_FB */
		}
	}

	return 0;
}