📄 eibdrv_admin.c
字号:
for (i=1;i<5;i++) fl_ext_formobjects_add_box2(&fdui->WBox[i%4],FL_FLAT_BOX,41,356,0,18,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_color(fdui->WBox[1],EIBDRV_ADMIN_W1_COL,BOX_COL2); fl_set_object_color(fdui->WBox[2],EIBDRV_ADMIN_W2_COL,BOX_COL2); fl_set_object_color(fdui->WBox[3],EIBDRV_ADMIN_W3_COL,BOX_COL2); fl_set_object_color(fdui->WBox[0],EIBDRV_ADMIN_WFAILED_COL,BOX_COL2); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,40,335,165,20,"1 - 2 - 3 attempts - failed", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lcolor(obj,FL_RIGHT_BCOL); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&fdui->TotWText,FL_FLAT_BOX,40,375,205,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(fdui->TotWText,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,260,375,60,20,"total writes", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&fdui->SecWText,FL_FLAT_BOX,40,390,205,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(fdui->SecWText,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,260,390,60,20,"writes / sec", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,415,140,15,"Average total time for write", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,430,170,15,"with success in first attempt (ms):", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&fdui->AvgWText,FL_BORDER_BOX,205,425,110,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_ext_formobjects_add_labelframe(FL_ENGRAVED_FRAME,355,325,315,130,"Read (Messages from EIB system)", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_ext_formobjects_add_box2(&fdui->RGroundBox,FL_BORDER_BOX,375,355,275,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); for (i=0;i<3;i++) fl_ext_formobjects_add_box2(&fdui->RBox[i],FL_FLAT_BOX,376,356,0,18,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_color(fdui->RBox[0],EIBDRV_ADMIN_W1_COL,BOX_COL2); fl_set_object_color(fdui->RBox[1],EIBDRV_ADMIN_W2_COL,BOX_COL2); fl_set_object_color(fdui->RBox[2],EIBDRV_ADMIN_W3_COL,BOX_COL2); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,375,335,130,20,"0 - 1 - 2 retranmissions", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lcolor(obj,FL_RIGHT_BCOL); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&fdui->TotRText,FL_FLAT_BOX,375,375,205,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(fdui->TotRText,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,595,375,60,20,"total reads", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&fdui->SecRText,FL_FLAT_BOX,375,390,205,20,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(fdui->SecRText,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,595,390,60,20,"reads / sec", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_RIGHT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_btn(&fdui->ResetStatBtn,FL_NORMAL_BUTTON,690,120,90,25,"Reset Statist.", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->ResetStatBtn,TimesTimer_cb,1); fl_ext_formobjects_add_btn(&fdui->ActStatBtn,FL_NORMAL_BUTTON,690,155,90,25,"Actualize Statist.", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->ActStatBtn,TimesTimer_cb,2); fl_ext_formobjects_add_btn(&fdui->ResizeBtn,FL_NORMAL_BUTTON,690,280,90,25,"Resize Buffers", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->ResizeBtn,ResizeBtn_cb,0); fl_ext_formobjects_add_btn(&fdui->ResetProtBtn,FL_NORMAL_BUTTON,690,360,90,25,"Reset Protocol", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->ResetProtBtn,ResetProtBtn_cb,0); fl_ext_formobjects_add_btn(&fdui->StatusBtn,FL_NORMAL_BUTTON,690,395,90,25,"Request Status", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->StatusBtn,StatusBtn_cb,0); fl_ext_formobjects_add_btn(&fdui->ExitBtn,FL_NORMAL_BUTTON,690,430,90,25,"Exit", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->ExitBtn,ExitBtn_cb,0); fdui->TimesTimer=fl_add_timer(FL_HIDDEN_TIMER,1,1,0,0,""); fl_set_object_callback(fdui->TimesTimer,TimesTimer_cb,0); fl_end_form(); fdui->VisForm->fdui = fdui; return fdui;}FD_ResizeBufferForm *create_form_ResizeBufferForm(void){ FL_OBJECT *obj; FD_ResizeBufferForm *fdui = (FD_ResizeBufferForm *) fl_calloc(1, sizeof(*fdui)); fdui->VisForm = fl_bgn_form(FL_NO_BOX, 340, 190); fl_ext_formobjects_add_box(FL_UP_BOX,0,0,340,190,"", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_ext_formobjects_add_labelframe(FL_ENGRAVED_FRAME,20,20,190,65,"Process Buffer Size", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,30,55,20,"WRITE:", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,55,55,20,"READ:", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_inp(&fdui->WProcBufSizeEditfield,FL_NORMAL_INPUT, 115,30,80,20,"Size:",0,FL_RETURN_END_CHANGED, FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->WProcBufSizeEditfield,Null_cb,0); fl_set_input_filter(fdui->WProcBufSizeEditfield,dec_input_filter); fl_ext_formobjects_add_inp(&fdui->RProcBufSizeEditfield,FL_NORMAL_INPUT, 115,55,80,20,"Size:",0,FL_RETURN_END_CHANGED, FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->RProcBufSizeEditfield,Null_cb,0); fl_set_input_filter(fdui->RProcBufSizeEditfield,dec_input_filter); fl_ext_formobjects_add_labelframe(FL_ENGRAVED_FRAME,20,105,190,65,"Message Buffer Size", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,115,55,20,"WRITE:", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_text(&obj,FL_NO_BOX,35,140,55,20,"READ:", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_lalign(obj,FL_ALIGN_LEFT|FL_ALIGN_INSIDE); fl_ext_formobjects_add_inp(&fdui->WMsgBufSizeEditfield,FL_NORMAL_INPUT, 115,115,80,20,"Size:",0,FL_RETURN_END_CHANGED, FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->WMsgBufSizeEditfield,Null_cb,0); fl_set_input_filter(fdui->WMsgBufSizeEditfield,dec_input_filter); fl_ext_formobjects_add_inp(&fdui->RMsgBufSizeEditfield,FL_NORMAL_INPUT, 115,140,80,20,"Size:",0,FL_RETURN_END_CHANGED, FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->RMsgBufSizeEditfield,Null_cb,0); fl_set_input_filter(fdui->RMsgBufSizeEditfield,dec_input_filter); fl_ext_formobjects_add_btn(&fdui->OkBtn,FL_NORMAL_BUTTON,230,110,90,25,"OK", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->OkBtn,OkBtn_cb,0); fl_ext_formobjects_add_btn(&fdui->CancelBtn,FL_NORMAL_BUTTON,230,145,90,25,"Cancel", FL_RESIZE_NONE,FL_NorthWest,FL_NorthWest); fl_set_object_callback(fdui->CancelBtn,CancelBtn_cb,0); fl_end_form(); fdui->VisForm->fdui = fdui; return fdui;}/* --------------------------------------------------------------------------- --------------------------------------------------------------------------- */void cleanup(void *arg,int btn){ /* Schliessen offener Dateien und Beenden der visuellen Forms, Rueckgabe der zentralen administrator Struktur. */ Eib_bcu2_admin *admin=(Eib_bcu2_admin *)arg; switch(admin->cleanup_code) { case 3: fl_hide_form(admin->MainForm->VisForm); fl_free_form(admin->MainForm->VisForm); fl_free_form(admin->ResizeBufferForm->VisForm); case 2: close(admin->eib_fd); case 1: returnEib_bcu2_admin(admin); fl_finish(); exit(3); }}int main(int argc,char *argv[]){ int len,i,result; char BaudrateText[10]; Eib_bcu2_admin *admin; admin=getEib_bcu2_admin(); if (read_PanelContentA(EIBDRV_ADMIN_PANELFILE,&admin->Panels)!=EIBDRV_ADMIN_PANELFILESIZE) { printf("eibdrv_admin: Panelfile %s not found!\n",EIBDRV_ADMIN_PANELFILE); exit(2); } if (argc!=2) { printf("usage: eibdrv_admin device\n"); exit(1); } fl_set_icm_color(FL_INACTIVE_COL,200,200,200); fl_initialize(&argc,argv,"eibdrv_admin",0,0); fl_set_border_width(2); admin->cleanup_code=1; if ((admin->eib_fd=open(argv[1],O_RDWR|O_NONBLOCK))<0) { switch(result=errno) { case ENOENT: fl_ext_panel1(admin->Panels,admin,cleanup); break; case EBUSY: fl_ext_panel1(admin->Panels+1,admin,cleanup); break; case ENOBUFS: fl_ext_panel1(admin->Panels+2,admin,cleanup); break; default: fl_ext_panel1(admin->Panels+3,admin,cleanup); break; } fl_do_forms(); } admin->cleanup_code=2; if (((admin->ftstation_settings->mode=ioctl(admin->eib_fd,FT_GET_MODE))<0) || ((admin->ftstation_settings->symb_baudrate=ioctl(admin->eib_fd,FT_GET_BAUDRATE))<0) || ((len=ioctl(admin->eib_fd,FT_GET_PORT_LENGTH))<0) || (ioctl(admin->eib_fd,FT_GET_OUTBUF_SIZE,&(admin->ftstation_settings->outbuf_size))<0) || (ioctl(admin->eib_fd,FT_GET_WPBUF_SIZE,&(admin->ftstation_settings->wpbuf_size))<0) || (ioctl(admin->eib_fd,FT_GET_RPBUF_SIZE,&(admin->ftstation_settings->rpbuf_size))<0) || (ioctl(admin->eib_fd,FT_GET_RPBUF_MSGSIZE,&(admin->ftstation_settings->rpbuf_msgbuf_size))<0)) { switch(result=errno) { case EBUSY: fl_ext_panel1(admin->Panels+4,admin,cleanup); break; case EFAULT: fl_ext_panel1(admin->Panels+5,admin,cleanup); break; case EACCES: printf("no access rights\n"); break; } fl_do_forms(); } admin->ftstation_settings->port=(char *)malloc((len+1)*sizeof(char)); if ((ioctl(admin->eib_fd,FT_GET_PORT,admin->ftstation_settings->port)<0) || (ioctl(admin->eib_fd,FT_RESET_STAT)<0)) { switch(result=errno) { case EFAULT: fl_ext_panel1(admin->Panels+5,admin,cleanup); break; } fl_do_forms(); } time(&admin->stat_reset_time); admin->stat_get_time=admin->stat_reset_time; admin->act_interval=60; admin->stat_plan_time=admin->stat_get_time+admin->act_interval; admin->MainForm=create_form_MainForm(); admin->ResizeBufferForm=create_form_ResizeBufferForm(); admin->MainForm->VisForm->u_vdata=admin; admin->ResizeBufferForm->VisForm->u_vdata=admin; fl_show_form(admin->MainForm->VisForm,FL_PLACE_CENTER,FL_TRANSIENT,"eibdrv_admin"); admin->cleanup_code=3; fl_set_object_label(admin->MainForm->DeviceText,argv[1]); switch(admin->ftstation_settings->mode) { case FT_STANDARDMODE: fl_set_object_label(admin->MainForm->ModeText,"Standard Mode"); break; case FT_SERVERMODE: fl_set_object_label(admin->MainForm->ModeText,"Server Mode"); break; } i=0; while(i<=17) { if (baudrates[i][0]==admin->ftstation_settings->symb_baudrate) { sprintf(&BaudrateText[0],"%i",baudrates[i][1]); fl_set_object_label(admin->MainForm->BaudrateText,&BaudrateText[0]); break; } i++; } fl_set_object_label(admin->MainForm->PortText,admin->ftstation_settings->port); fl_freeze_form(admin->MainForm->VisForm); admin->ftstation_stat->overflow=1; actualize_MainForm_BufSiz(admin); actualize_MainForm_Stat(admin); actualize_MainForm_Status(admin,EIBDRV_ADMIN_STATUS_NOTSET); fl_unfreeze_form(admin->MainForm->VisForm); fl_set_timer(admin->MainForm->TimesTimer,1); fl_do_forms(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -