コード例 #1
0
ファイル: hpmud.c プロジェクト: rfabbri/hplip
enum HPMUD_RESULT hpmud_open_device(const char *uri, enum HPMUD_IO_MODE iomode, HPMUD_DEVICE *dd)
{
   HPMUD_DEVICE index=0;
   enum HPMUD_RESULT stat = HPMUD_R_INVALID_URI;
   int result;

   DBG("[%d,%d,%d,%d,%d,%d] hpmud_device_open() uri=%s iomode=%d\n", getpid(), getppid(), getuid(), geteuid(), getgid(), getegid(), uri, iomode);

   if ((index = new_device(uri, iomode, &result)) == 0)
   {   
      stat = result;
      goto bugout;
   }
   else
   {
      if ((stat = (msp->device[index].vf.open)(&msp->device[index])) != HPMUD_R_OK)
      {
         (msp->device[index].vf.close)(&msp->device[index]);  /* Open failed perform device cleanup. */
         del_device(index);
         goto bugout;
      }
   }

   *dd = index;
   stat = HPMUD_R_OK;

bugout:
   return stat;
}
コード例 #2
0
ファイル: hpmud.c プロジェクト: rfabbri/hplip
enum HPMUD_RESULT hpmud_close_device(HPMUD_DEVICE dd)
{
   enum HPMUD_RESULT stat;

   DBG("[%d] hpmud_device_close() dd=%d\n", getpid(), dd);

   if (dd <= 0 || dd > HPMUD_DEVICE_MAX || msp->device[dd].index != dd)
   {
      BUG("invalid device_close state\n");
      stat = HPMUD_R_INVALID_STATE;
   }
   else
   {
      stat = (msp->device[dd].vf.close)(&msp->device[dd]);
      del_device(dd);
   }
   return stat;
}
コード例 #3
0
ファイル: menu_setup_devices.c プロジェクト: sebseb7/dmxbox
void menu_setup_devices()
{

	if(redraw)
	{
		clearDisplay();
		clear_buttons();
		redraw=0;

		draw_filledRect(0,0,LCD_WIDTH,35,155,100,100);

		draw_filledCircle(17,17,15,40,80,40);
		draw_text_8x6(7,10,"Back",255,100,100);

		uint16_t text_width =  get_text_width_16pt("Setup Devices");

		draw_text_16pt((LCD_WIDTH-text_width)>>1,9, "Setup Devices", 200,200,255);


		init_lineitems();
		char buf[30];
		char buf2[30];
		draw_lineitem("","<new>");
		for(int i = 0; i < get_device_count();i++)
		{
			snprintf(buf,30,"%i",get_device(i)->base_address);
		
			char classname[30];
			if(get_device(i)->device_class_uuid == 0)
			{
				strncpy(classname,"<empty>",30);
			}
			else if(get_device_class_by_uuid(get_device(i)->device_class_uuid) == NULL)
			{
				strncpy(classname,"<missing>",30);
			}
			else
			{
				strncpy(classname,get_device_class_by_uuid(get_device(i)->device_class_uuid)->name,30);
			}

			snprintf(buf2,30,"%s - %s",classname,get_device(i)->name);
			draw_lineitem(buf,buf2);
		}

		draw_scrollbar();

		draw_button_h(257,45,52,42,"^",155,0,0,0,255,0);
		if((get_device_count()<10)&&(active_row==0))
		{
			draw_button_h(257,92,52,42,"Add",155,0,0,0,255,0);
		}
		if(active_row>0)
		{
			draw_button_h(257,92,52,42,"Edit",155,0,0,0,255,0);
			draw_button_h(257,139,52,42,"Delete",155,0,0,0,255,0);
		}
		draw_button_h(257,186,52,42,"v",155,0,0,0,255,0);
	}

	uint8_t field=0;
	uint16_t x;
	uint16_t y;
	if(check_button_press(&x,&y)==1)
	{
		if(y > 41)
		{
			field=1;

			if(y > 184)
			{
				field=4;
			}else if(y > 136)
			{
				field=3;
			}else if(y > 89)
			{
				field=2;
			}
		}
		else
		{
			if(x < 40)
			{
				redraw=1;
				set_current_execution(menu_setup);
			}
		}
		
		if(field == 1)
		{
			if(active_row > 0)
			{
				if(active_row==scroll_offset)
				{
					scroll_offset--;
				}

				active_row--;
			}
			redraw=1;
		}
		if(field == 4)
		{
			if(active_row < (get_device_count()))
			{
				active_row++;
				int drawline = active_row-scroll_offset; 
				if(drawline==10)
				{
					scroll_offset++;
				}
			}
			redraw=1;
		}
		if(field == 2)
		{
			redraw=1;
			if(active_row==0)
			{
				if(get_device_count()<50)
				{
					set_current_execution(menu_setup_devices_add);
				}
			}
			else
			{
				set_current_execution(menu_setup_devices_edit);
				set_device_to_edit(active_row-1);
			}
		}
		if(field == 3)
		{
			redraw=1;
			
			if(active_row > 0)
			{
				del_device(active_row-1);
				if(active_row==scroll_offset)
				{
					scroll_offset--;
				}
				active_row--;
			}

		}
	}
}