void upsdrv_updateinfo(void) { upsdebugx(1, "upsdrv_updateinfo..."); sleep(1); switch (mode) { case MODE_DUMMY: /* Now get user's defined variables */ if (parse_data_file(upsfd) >= 0) dstate_dataok(); break; case MODE_META: case MODE_REPEATER: if (upsclient_update_vars() > 0) { dstate_dataok(); } else { /* try to reconnect */ upscli_disconnect(ups); if (upscli_connect(ups, hostname, port, UPSCLI_CONN_TRYSSL) < 0) { upsdebugx(1, "Error reconnecting: %s", upscli_strerror(ups)); } else { upsdebugx(1, "Reconnected"); } } break; case MODE_NONE: default: break; } }
int main (int argc, char *argv[]) { //write_test (); parse_data_file (); exit (0); }
int main(int argc, char **argv) { struct level2_data *data; vmwSVMWGraphState *graph_state; vmwVisual *virtual_1; int ch,i,j,y_offset=0; int x=0,y=0; char tempst[10]; int sprite_array[16]; int sprite_offset=0; int doublesize=1,fullscreen=0; int argsfound=0; char filename[255],spritefile[255]; /* Parse command line arguments */ i=1; while(i<argc) { if (argv[i][0]=='-') { if (argv[i][1]=='d') doublesize=2; if (argv[i][1]=='f') fullscreen=1; } else { argsfound++; if (argsfound==1) strncpy(filename,argv[i],254); if (argsfound==2) strncpy(spritefile,argv[i],254); } i++; } if (argsfound<2) { printf("\nUSAGE: %s [-f] [-d] data_file sprite_file\n\n",argv[0]); return -1; } printf("Editing datafile=%s spritefile=%s\n",filename,spritefile); data=parse_data_file(filename); graph_state=vmwSetupSVMWGraph(VMW_SDLTARGET,doublesize*320,doublesize*200,0,doublesize,fullscreen,1); graph_state->default_font=vmwLoadFont("../data/tbfont.tb1",8,16,256); virtual_1=vmwSetupVisual(320,200); if (vmwLoadPicPacked(0,0,virtual_1,1,1,spritefile,graph_state)!=0) { printf("ERROR LOADING %s\n",spritefile); return -1; } for(j=0;j<data->rows;j++) for(i=0;i<data->cols;i++) data->sprites[j*10+i]->data=vmwGetSprite(1+i*21,1+j*11,20,10,virtual_1); vmwDrawBox(0,0,319,199,0,virtual_1); draw_all_sprites(0,data,virtual_1); vmwBlitMemToDisplay(graph_state,virtual_1); ch=' '; while(1) { switch(ch) { case 'A'...'P' : if (sprite_array[ch-0x41]!=-1) modify_level(data,x,y+y_offset,CHANGE_SPRITE, sprite_array[ch-0x41]); break; case 'a'...'p' : if (sprite_array[ch-0x61]!=-1) modify_level(data,x,y+y_offset,CHANGE_SPRITE, sprite_array[ch-0x61]); break; case 's': case 'S': save_data(filename,data); modified_since_save=0; break; case 'u': case 'U': undo(data); break; case 'q': case 'Q': if (modified_since_save) { if (vmwAreYouSure(graph_state, graph_state->default_font, virtual_1, "FILE HAS CHANGED", "QUIT W/O SAVING?", "YES-QUIT ANYWAY", "NO!-LET ME SAVE")) return 0; } else return 0; break; case '>': case '.': i=0; j=sprite_offset; while ( (i<16) && (j<data->numsprites)) { if ((data->sprites[j]->initialized) && (belongs_on_map(data->sprites[j]->type))) { i++; } j++; } if (j<data->numsprites) sprite_offset=j; break; case '<': case ',': i=0; j=sprite_offset; while ( (i<16) && (j>0)) { if ((data->sprites[j]->initialized) && (belongs_on_map(data->sprites[j]->type))) { i++; } j--; } if (j>=0) sprite_offset=j; break; case VMW_UP: if (y>0) y--; else if (y_offset>0) y_offset--; break; case VMW_DOWN: if (y>=19) { if (y_offset<data->level_length-21) y_offset++; } else y++; break; case VMW_RIGHT: if (x<11) x++; break; case VMW_LEFT: if (x>0) x--; break; case VMW_PGUP: if (y_offset>20) y_offset-=20; else (y_offset=0); break; case VMW_PGDN: if (y_offset<data->level_length-41) y_offset+=20; else y_offset=data->level_length-20; break; case VMW_HOME: y_offset=0; break; case VMW_END: y_offset=data->level_length-20; break; case VMW_INS: modify_level(data,0,y+y_offset,INSERT_LINE,0); break; case VMW_DEL: modify_level(data,0,y+y_offset,DELETE_LINE,0); break; } /* Make sure if we delete a line it doesn't make us */ /* try to display off the end of the screen */ if (y_offset>=data->level_length-20) y_offset=data->level_length-20; draw_all_sprites(y_offset,data,virtual_1); /* Draw cursor box */ vmwDrawHLine(x*20,y*10,20,15,virtual_1); vmwDrawHLine(x*20,(y*10)+9,20,15,virtual_1); vmwDrawVLine(x*20,y*10,10,15,virtual_1); vmwDrawVLine((x*20)+19,y*10,10,15,virtual_1); vmwDrawBox(240,0,79,199,0,virtual_1); sprintf(tempst,"X: %4d",x); vmwTextXY(tempst,245,5,9,0,0,graph_state->default_font,virtual_1); sprintf(tempst,"Y: %4d",y+y_offset); vmwTextXY(tempst,245,15,9,0,0,graph_state->default_font,virtual_1); sprintf(tempst,"L: %4d",data->level_length); vmwTextXY(tempst,245,25,9,0,0,graph_state->default_font,virtual_1); vmwDrawHLine(243,38,74,12,virtual_1); vmwDrawHLine(243,150,74,12,virtual_1); sprintf(tempst,"%c",'<'); vmwTextXY(tempst,275,40,11,0,0,graph_state->default_font,virtual_1); sprintf(tempst,"%c",'>'); vmwTextXY(tempst,275,140,11,0,0,graph_state->default_font,virtual_1); if (sprite_offset>=data->numsprites) sprite_offset=0; if (sprite_offset<0) sprite_offset=0; j=sprite_offset; for(i=0;i<16;i++) { sprintf(tempst,"%c",0x41+i); while ((j<data->numsprites) && ((!data->sprites[j]->initialized) || (!belongs_on_map(data->sprites[j]->type)))) { j++; } if (j<data->numsprites) { sprite_array[i]=j; vmwTextXY(tempst,((i/8)*61)+245,((i%8)*11)+50,11,0,0,graph_state->default_font,virtual_1); vmwPutSpriteNonTransparent(data->sprites[j]->data, ((i/8)*21)+260, ((i%8)*11)+50,virtual_1); j++; } else sprite_array[i]=-1; } vmwTextXY("INS DEL",245,155,11,0,0,graph_state->default_font,virtual_1); vmwTextXY(" , ",245,155,9,0,0,graph_state->default_font,virtual_1); vmwTextXY(" ndo",245,165,9,0,0,graph_state->default_font,virtual_1); vmwTextXY("U",245,165,11,0,0,graph_state->default_font,virtual_1); vmwTextXY(" ave",245,175,9,0,0,graph_state->default_font,virtual_1); vmwTextXY("S",245,175,11,0,0,graph_state->default_font,virtual_1); if (modified_since_save) vmwTextXY(" *",245,175,12,0,0,graph_state->default_font,virtual_1); vmwTextXY(" uit",245,185,9,0,0,graph_state->default_font,virtual_1); vmwTextXY("Q",245,185,11,0,0,graph_state->default_font,virtual_1); vmwBlitMemToDisplay(graph_state,virtual_1); while( ((ch=vmwGetInput())==0)) { usleep(30); } } return 0; }
void upsdrv_initinfo(void) { dummy_info_t *item; switch (mode) { case MODE_DUMMY: /* Initialise basic essential variables */ for ( item = nut_data ; item->info_type != NULL ; item++ ) { if (item->drv_flags & DU_FLAG_INIT) { dstate_setinfo(item->info_type, "%s", item->default_value); dstate_setflags(item->info_type, item->info_flags); /* Set max length for strings, if needed */ if (item->info_flags & ST_FLAG_STRING) dstate_setaux(item->info_type, item->info_len); } } /* Now get user's defined variables */ if (parse_data_file(upsfd) < 0) upslogx(LOG_NOTICE, "Unable to parse the definition file %s", device_path); /* Initialize handler */ upsh.setvar = setvar; dstate_dataok(); break; case MODE_META: case MODE_REPEATER: /* Obtain the target name */ if (upscli_splitname(device_path, &client_upsname, &hostname, &port) != 0) { fatalx(EXIT_FAILURE, "Error: invalid UPS definition.\nRequired format: upsname[@hostname[:port]]"); } /* Connect to the target */ ups = xmalloc(sizeof(*ups)); if (upscli_connect(ups, hostname, port, UPSCLI_CONN_TRYSSL) < 0) { fatalx(EXIT_FAILURE, "Error: %s", upscli_strerror(ups)); } else { upsdebugx(1, "Connected to %s@%s", client_upsname, hostname); } if (upsclient_update_vars() < 0) { /* check for an old upsd */ if (upscli_upserror(ups) == UPSCLI_ERR_UNKCOMMAND) { fatalx(EXIT_FAILURE, "Error: upsd is too old to support this query"); } fatalx(EXIT_FAILURE, "Error: %s", upscli_strerror(ups)); } /* FIXME: commands and settable variable! */ break; default: case MODE_NONE: fatalx(EXIT_FAILURE, "no suitable definition found!"); break; } upsh.instcmd = instcmd; dstate_addcmd("load.off"); }
int main() { std::cout << "Testing parse_data_line 1 "; { const EventSequence seq = parse_data_line("53[141, seq 47681, 3991.3455],1: 5, 6, 11"); assert(seq.size() == 3); std::list<int> cmp; cmp.push_back(5); cmp.push_back(6); cmp.push_back(11); std::list<int> values; for(EventSequence::const_iterator iter = seq.begin(); iter != seq.end(); iter++) { values.push_back(static_cast<int>((*iter)->predicate)); assert((*iter)->occurence.start == 53); } assert(cmp == values); } std::cout << "[PASSED]" << std::endl; std::cout << "Testing parse_data_line 2 "; { const EventSequence seq = parse_data_line("53[141, seq 47681, 31.094000],1:5"); assert(seq.size() == 1); assert(static_cast<int>(seq.front()->predicate) == 5 ); } std::cout << "[PASSED]" << std::endl; std::cout << "Testing parse_data_file 1 "; { const EventSequence seq = parse_data_file("parse.dat"); assert(seq.size() == 10); std::list<int> cmp; cmp.push_back(4); cmp.push_back(4); cmp.push_back(4); cmp.push_back(6); cmp.push_back(1); cmp.push_back(5); cmp.push_back(1); cmp.push_back(5); cmp.push_back(5); cmp.push_back(1); std::list<int> values; for(EventSequence::const_iterator iter = seq.begin(); iter != seq.end(); iter++) { values.push_back(static_cast<int>((*iter)->predicate)); } assert(cmp == values); } std::cout << "[PASSED]" << std::endl; std::cout << " *** ALL TESTS PASSED! *** " << std::endl; }