// credit: Travis Downs
bool validate_utf8_double(const char *c, size_t len) {
  size_t half = len / 2;
  while((unsigned char )c[half] <= 0xBF && (unsigned char ) c[half] > 0x80 && half > 0 ) {
    half --;
  }
  uint32_t s1 = 0, s2 = 0;
  for (size_t i = 0, j = half; i < half; i++, j++) {
    updatestate(&s1, (unsigned char )c[i]);
    updatestate(&s2, (unsigned char )c[j]);
  }
  for (int j = half * 2; j < len; j++) {
    updatestate(&s2, (unsigned char )c[j]);
  }
  return (s1 != UTF8_REJECT) && (s2 != UTF8_REJECT);
}
Exemplo n.º 2
0
static void load()
{

    view.onload();

    if (view.app->state == 3)
    {

        menu_enable(&view.menu, 0);
        menu_disable(&view.menu, 1);
        menu_enable(&view.menu, 2);
        menu_setrow(&view.menu, 0);

    }

    else
    {

        menu_disable(&view.menu, 0);
        menu_enable(&view.menu, 1);
        menu_disable(&view.menu, 2);
        menu_setrow(&view.menu, 1);

    }

    updatestate();

}
bool validate_utf8_branchless(const char *c, size_t len) {
  const unsigned char *cu = (const unsigned char *)c;
  uint32_t state = 0;
  for (size_t i = 0; i < len; i++) {
    uint32_t byteval = (uint32_t)cu[i];
    updatestate(&state, byteval);
  }
  return state != UTF8_REJECT;
}
bool validate_utf8(const char *c, size_t len) {
  const unsigned char *cu = (const unsigned char *)c;
  uint32_t state = 0;
  for (size_t i = 0; i < len; i++) {
    uint32_t byteval = (uint32_t)cu[i];
    if (updatestate(&state, byteval) == UTF8_REJECT)
      return false;
  }
  return true;
}
Exemplo n.º 5
0
void main(void)
{                            
   
    u16 i;                                      
    u8 shortcut = KEY_INVALID;  
    // RS485 Node    
    init_var();	//init data structure 
    // System Initialization
    Init_Port();
//    Init_Timers();
//    Init_Ex_Interrupt();
    Init_UART();  
    Enable_XMEM();
    Init_554();                
    InitLED();    
    Key_Init();    
    // Global enable interrupts
    WDTCR = 0x00; //disable dog watch
    #asm("sei")                 
    /*********************************************************************/
    // System hardware dection
    /*********************************************************************/
    // intialize LED. 
    nextwin = 0; 
    
    sleepms(20*ONEMS);
    LCD_Init();
    wnd_msgbox(&bootup);
    //init the DMM
    nav_command(NAV_INIT);              
    sleepms(200*ONEMS);                                
    navto1v();
    nav_command(NAV_SLOWMODE);
    sleepms(200*ONEMS);
    nav_command(NAV_AFLTON);
    sleepms(200*ONEMS);
                     
    sleepms(2*ONEMS); //wait until all the node is ready after power up        
    State_Init();	
    
    SET_BORE_MODE;
    
	 nextwin = PG_BOOTTYPE;
	 key = KEY_INVALID;

	 curr_ch = 1; //channel for display
	 curr_dispch = 1;
	 while(1)
	 {
 	 	if(nextwin != 0)
		{
			SwitchWindow(nextwin);
			(*curr_window)(MSG_INIT);
			nextwin = 0;
		}
		if(key != KEY_INVALID)
		{
			if((key == KEY_BTN1)||(key == KEY_BTN2)||(key == KEY_BTN3)||(key == KEY_BTN4))
			{                      
			        shortcut = key;          
                                //processing shortcut key
				if(curr_window == pgmain_handler)
				{
					LCD_Cls();
					wnd_msgbox(&modify);
				}
				if(shortcut == KEY_BTN1) //mode switch
				{
               			        SET_TOP1MA;
	                	        SET_TOPT1000;                				
					if(IS_BORE_MODE){
						SET_THERM_MODE;
					}else{
						SET_BORE_MODE;
					}
					dlg_cnt = 0;					
					onesec_cnt = 0;
					phase = 0;      //reset the state machine
				}
				if(shortcut == KEY_BTN2) //auto ktt or not
				{
					if(IS_BORE_MODE)
					{
                      			        SET_TOP1MA;
	                        	        SET_TOPT1000;                				
						if((IS_MODE_KTT)){
							CLR_MODE_KTT;
							SET_PKTT;
						}else{
							SET_MODE_KTT;
							SET_PKTT;
						}
        					dlg_cnt = 0;					
	        				onesec_cnt = 0;
		        			phase = 0;      //reset the state machine
					}
				}
				if(shortcut == KEY_BTN3) //thermal probe type
				{                            
					display_buttons(KEY_BTN3,1);
					if(IS_THERM_MODE)
					{                        
					        i = sysdata.tid[curr_dispch-1];
					        if(i != INVALID_PROBE)
					        {
                					if((tprbdata.type[i] >= PRBTYPE_K) &&\
	                				   (tprbdata.type[i] <= PRBTYPE_R))
		                			{
			                			if(tprbdata.type[i] == PRBTYPE_R)
				                			tprbdata.type[i] = PRBTYPE_K;
					                	else
						                	tprbdata.type[i] +=1;
        					        }                                                                                 
        					        if(rundata.reading[curr_dispch-1] > -9000)
                                                       		rundata.temperature[curr_dispch-1] = MValueToTValue(rundata.reading[curr_dispch-1], tprbdata.type[i]);
        					}
                                        }
					display_buttons(KEY_BTN3,0);
					
				}
				if(shortcut == KEY_BTN4) //remove zero
				{
					display_buttons(KEY_BTN4,1);
					if(IS_BORE_MODE){
					        sysdata.R0 = rundata.Rx;
					}else{             
					        //sysdata.V0 = nav_read();
					        nav_command(NAV_ZEROON);
					        sleepms(1000*ONEMS);
					}
					display_buttons(KEY_BTN4,0);
				}
				if(curr_window == pgmain_handler)       //redraw the running window
				{
					pgmain_handler(MSG_INIT);      
				}
			        shortcut = KEY_INVALID;
			        			        
			}else{
				(*curr_window)(key);
			}
			key = KEY_INVALID;
	  	}else{
			if(curr_window != pgmain_handler)
				continue;                               
			if(dlg_cnt > 1)
			{         
			        onesec_cnt++;
			        if(onesec_cnt == (ONESEC-10))
			        {       
        			        updatestate();
        			}
        			if(onesec_cnt == ONESEC)
        			        onesec_cnt = 0 ;
				dlg_cnt--;
				continue;
			}    
			updatestate();
			if((IS_THERM_MODE))			
			{
				if(therm_state() == 0)
				        continue;
			}else{
				if(bore_state() == 0)
				        continue;
			}     
			
                        //shift to next channel 
                       
                        while(true)
                        {
                                ch_to_search += 1;
        			if(ch_to_search >= MAX_CH_NUM)
        			{
	        			ch_to_search = 0;
	        			break;
	        		}           
	        		if(IS_THERM_MODE)
	        		{
	        		        i = sysdata.tid[ch_to_search];
	        		}else{
	        		        i = sysdata.rid[ch_to_search];
	        		}
	        		if(i == INVALID_PROBE)
	        		        continue;
	        		if(IS_THERM_MODE)
	        		{   
       					if((tprbdata.type[i] >= PRBTYPE_K) && (tprbdata.type[i] <= PRBTYPE_R))
       					        break;
	        		}else{
       		                        if((rprbdata.type[i] <= PRBTYPE_MAX) && (rprbdata.type[i] >= PRBTYPE_MIN))
       		        		        break;
	        		}
	                }
		}
	}	
}      
Exemplo n.º 6
0
int main()
{
    init();
    setupmap();
    bool quit = false;
    bool paused = true;
    SDL_Event userinput;

    while( !quit )
    {
        while( SDL_PollEvent( &userinput ) != 0 )
        {
            switch( userinput.type )
            {
            case SDL_QUIT:
                quit = true;
                break;
            case SDL_MOUSEBUTTONDOWN:
                click(userinput.button.x, userinput.button.y, userinput.button.button);
                break;
            case SDL_MOUSEBUTTONUP:
                if (userinput.button.button == SDL_BUTTON_RIGHT )
                {
                    drag = false;
                }
                break;

            case SDL_MOUSEMOTION:
                if (drag)
                {
                    worldshiftx += userinput.motion.xrel;
                    worldshifty += userinput.motion.yrel;
                }
                break;

            case SDL_MOUSEWHEEL:
                wheelcontrol(userinput.button.x);
                break;

            case SDL_KEYDOWN:
                switch(userinput.key.keysym.sym)
                {
                case SDLK_SPACE:
                    paused = !paused;
                    break;
                case SDLK_l:
                    loadmap();
                    break;
                }
                break;

            }

        }
        if(!paused)
        {
            logic();
            updatestate();
        }

        draw();
        SDL_Delay(500);
    }

    close();

}