Esempio n. 1
0
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;
	}
}
Esempio n. 2
0
int main (int argc, char *argv[])
{
	//write_test ();
	parse_data_file ();
	exit (0);
}
Esempio n. 3
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;
}
Esempio n. 4
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");
}
Esempio n. 5
0
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;

}