亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hello.c.bak

?? port of ARM to NOkia 3310 display
?? BAK
字號:
/***************************************************************************************************************
*
*                           NOKIA Lcd, ARM7, SD/MMC PROJECT
*
*
***************************************************************************************************************/
#include "globals.h"
#include "globals.c"
#include "Lcd.c"
#include "windows.c"
#include "win_resources.c"
#include "gps.c"

/* INTERRUPTS */
static cyg_interrupt      			int1;
static cyg_handle_t     			int1_handle;

/* SEMAPHORES */
static cyg_sem_t        			gps_data_validity;

/* DEFINES */
#define NTHREADS  				5
#define STACKSIZE  				(CYGNUM_HAL_STACK_SIZE_TYPICAL)

/* STATIC */
static cyg_handle_t     			thread[NTHREADS];
static cyg_thread        			thread_obj[NTHREADS];
static char stack[NTHREADS][STACKSIZE];

// Interrupt service routine for int1
cyg_uint32   interrupt_1_ISR(cyg_vector_t vector, cyg_addrword_t data)
{
    cyg_interrupt_mask(vector);
    cyg_interrupt_acknowledge(vector);
    return(CYG_ISR_HANDLED | CYG_ISR_CALL_DSR);
    
}

// deferred service routine for int1
void interrupt_1_dsr(cyg_vector_t vector,  cyg_ucount32 count,  cyg_addrword_t data )
{
    //cyg_semaphore_post(& );
    cyg_interrupt_unmask(vector);
}


// exception handler
void system_call_exception_handler( cyg_addrword_t data,
                                                      cyg_code_t number,
                                                      cyg_addrword_t info)
{
    cls();
    nokia_printmessage("System Halted",1);
    diag_printf("\n ERROR: System Call Exception \n");
}


// CYG_STAFF
cyg_mutex_t                			cliblock;        /* and now a mutex to protect calls to the C library */
cyg_alarm_t                			test_alarm_func;
cyg_handle_t               			mbox_handle;




/* CYG USER START */
void cyg_user_start(void)
{
    //exception
    cyg_exception_handler_t *old_handler;
    cyg_addrword_t old_data;
  
    //Init LCD, eCos logo
    EcosLogo();
    
    //Init Led, Buttton
    LedButInit();
   
    //Clear lcd
    cls(); 
 
    cyg_vector_t  				int1_vector = CYGNUM_HAL_INTERRUPT_UART0;
    cyg_priority_t 				int1_priority = 0 ;
    
    //SEMAPHORES     
    //cyg_semaphore_init(&gps_data_validity,0);
    
    //MUTEX  
    cyg_mutex_init(&cliblock);
    
    // CREATE THREADS
    // ATENTION! BITMAP SHEDULER!!!
    cyg_thread_create(5,        SER1_program,       (cyg_addrword_t) 0,  "ser1",         (void *) stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
    cyg_thread_create(13,       LCD_program,        (cyg_addrword_t) 1,  "lcd",          (void *) stack[1], STACKSIZE, &thread[1], &thread_obj[1]);
    cyg_thread_create(11,       BTN_program,        (cyg_addrword_t) 2,  "btn",          (void *) stack[2], CYGNUM_HAL_STACK_SIZE_MINIMUM, &thread[2], &thread_obj[2]);
    cyg_thread_create(12,       ALARM_program,      (cyg_addrword_t) 3,  "alarm",        (void *) stack[3], CYGNUM_HAL_STACK_SIZE_MINIMUM, &thread[3], &thread_obj[3]);
    cyg_thread_create(6,        SER0_program,       (cyg_addrword_t) 4,  "ser0",         (void *) stack[4], STACKSIZE, &thread[4], &thread_obj[4]);
      
    //INIT INTERRUPT
    cyg_interrupt_create(int1_vector,  int1_priority,  0, &interrupt_1_ISR, &interrupt_1_dsr, &int1_handle,  &int1);
    
    //THREADS RESUME  
    //SER1
    cyg_thread_resume(thread[0]);
    //LCD
    cyg_thread_resume(thread[1]);
    //BUTTON
    cyg_thread_resume(thread[2]);
    //ALARM
    cyg_thread_resume(thread[3]);
    //SER0
    cyg_thread_resume(thread[4]);
    //Atach
    cyg_interrupt_attach(int1_handle);
    //Unmask
    cyg_interrupt_unmask(int1_vector);
      
    /*
     //install the exception handler for error output:
     cyg_exception_set_handler( CYGNUM_HAL_EXCEPTION_ILLEGAL_INSTRUCTION ,
                                            &system_call_exception_handler,
                                            0,
                                            &old_handler,
                                            &old_data);
    */
            
    return;
}




void BTN_program(cyg_addrword_t index)
{
      //button control  
      for(;;)
      {   
           //Icone select by Button press
           if(IOPIN>>SWPIN==0)
           {
                 beep(5,2);
                 // 4 icons counter
                 if(menu_counter < ICON_COUNTER)   menu_counter +=1;
                 else menu_counter =0x00;
				 
		 // Close/Suspend windows with button press
                 gps_latitude_flag = 0x00;
                 gps_status_flag = 0x00;
                 draw_window=0x00;
                 console_msg_flag=0x00;
                 LED_OFF;
                      
                 cyg_thread_delay(50);
           }
	   cyg_thread_delay(10);//don't pip!
      }
}




void LCD_program(cyg_addrword_t data)
{
     // show on lcd. Graphic mode
     lcd_key=0x00; 
     
     for(;;)
     {  
        // show Datum on if lcd is not busy      
        if(!lcd_key)
        {
        	//DRAW MAIN WINDOW
                draw_picture(mainwin);
                  
                //LATITUDE /NORD/
                if(gps_latitude_flag) gps_latitude();
                                                        
                //GPS STATUS WINDOW /system control/
                if(gps_status_flag) gps_status();
                   
                //ABOUT
                if(draw_window)  Draw_Window(2,10,60,25,"About","GPS VER.1.0");
                    
		//CONSOLE MSG
                if(console_msg_flag)  {Draw_Window(2,10,79,25,"Console",&console_buff[2]);}

                //SHOW THE LCD BUFF !!!!!
	        LcdUpdate();
         }
         else  lcd(&console_buff[0]);
         cyg_thread_delay(10); //don't pip!   
     }
}

   


void SER1_program(cyg_addrword_t data)
{
  FILE * pSER1;
  cyg_uint32 len = 128;         /* data length */
  //cyg_serial_info_t info;	/* serial port config info */
  //Cyg_ErrNo error;		/* error output*/
  //cyg_io_handle_t handle;	/* mouse device handle */
     
 
  /* eCos com0 open */
  //error=cyg_io_lookup("dev/ser0", &handle);
  //len=sizeof(info);
  pSER1=fopen("/dev/ser1","r");    

  for(;;)
  {
    fgets (&ser1_buff[0], len, pSER1);

        
    //$GPRMC
    if(ser1_buff[0]=='$')
    {
       if(ser1_buff[1]=='G')
       {
          if(ser1_buff[2]=='P')
          {
	     if(ser1_buff[3]=='R')
             {
                if(ser1_buff[4]=='M')
                {
		     //Read buff
                     strcpy(&GPRMC[0], &ser1_buff[0] );GPRMC[127]='\0';
                     //CALL GPS SUB
                     GPS();
                }
             }
          }
       }
    }

    //$GPGGA
    if(ser1_buff[0]=='$')
    {
       if(ser1_buff[1]=='G')
       {
          if(ser1_buff[2]=='P')
          {
	     if(ser1_buff[3]=='G')
             {
                if(ser1_buff[4]=='G')
                {
		     //Read buff
                     strcpy(&GPGGA[0], &ser1_buff[0] );GPGGA[127]='\0';
                     //CALL GPS SUB
                     GPS();
                }
             }
          }
       }
    }

            
    free(ser1_buff); 
    //fclose(pSER1);
  }
}





void SER0_program(cyg_addrword_t data)
{
  FILE * pSER0;
  cyg_uint32 len = 127;         /* data length */
  //cyg_serial_info_t info;	/* serial port config info */
  //Cyg_ErrNo error;		/* error output*/
  //cyg_io_handle_t handle;	/* mouse device handle */
     
 
  /* eCos com0 open */
  //error=cyg_io_lookup("dev/ser0", &handle);
  //len=sizeof(info);
  pSER0 = fopen("/dev/ser0","r");    

  for(;;)
  {
    fgets (&ser0_buff[0], len, pSER0);

    //@CONSOLE
     if(ser0_buff[0]=='@')
     {	
        if(ser0_buff[1]=='c')
        {	
           if(ser0_buff[2]=='o')
           {
              if(ser0_buff[3]=='n')
              {
                  //turn_0ff gps recaiving
                  mode = 0x02;
                  //IMPORTANT : The console message must be terminated by #013#010(dec)! 
                  strncpy(&console_buff[0], &ser0_buff[4],15); console_buff[15]='\0';
		  console();
              }
           }
        }
     }
    free(ser0_buff); 
    //fclose(pSER1);
  }
} 
 
 
 
 
 
 
    
 // alarm_prog() is a thread which sets up an alarm which is then   handled by test_alarm_func() 
 void ALARM_program(cyg_addrword_t data)
{
  cyg_handle_t test_counterH, system_clockH, test_alarmH;
  cyg_tick_count_t ticks;
  cyg_alarm test_alarm;
  unsigned how_many_alarms = 0, prev_alarms = 0, tmp_how_many;

  system_clockH = cyg_real_time_clock();
  cyg_clock_to_counter(system_clockH, &test_counterH);
  cyg_alarm_create(test_counterH, test_alarm_func, (cyg_addrword_t) &how_many_alarms, &test_alarmH, &test_alarm);
  
  //init alarm trig.= 200, interval =2000
  cyg_alarm_initialize(test_alarmH, cyg_current_time() + 200, 2000);

  // get in a loop in which we read the current time and  print it out
  for (;;) 
  {
  
    ticks = cyg_current_time();
   
    cyg_scheduler_lock();
        tmp_how_many = how_many_alarms;
    cyg_scheduler_unlock();
    
    if (prev_alarms != tmp_how_many) 
    {
      // Code for Alarm Event
      // Close/Suspend windows
      if( !gps_latitude_flag )  gps_latitude_flag=0x01;
      else gps_latitude_flag = 0x00;
      cyg_thread_delay(500);
      if( !gps_status_flag )  gps_status_flag=0x01;
      else  gps_status_flag = 0x00;
      cyg_thread_delay(200);
      if(!draw_window) draw_window=0x01;
      else draw_window=0x00;
      cyg_thread_delay(500);
      if(console_msg_flag)  console_msg_flag=0x00;
      LED_OFF;
      prev_alarms = tmp_how_many;
    }
     
    cyg_thread_delay(300);
  }
}

/*
   test_alarm_func() is invoked as an alarm handler, so
   it should be quick and simple.  in this case it increments
   the data that is passed to it. 
*/
void test_alarm_func(cyg_handle_t alarmH, cyg_addrword_t data)
{
    ++*((unsigned *) data);
}




void console(void)
{
   unsigned char Cmd   = 0x00;
   unsigned char Frame = 0x00;

   //led blink
   LED_ON;     

   Frame = console_buff[0];
   Cmd = console_buff[1]; 

   // SEND CMD
   cyg_mutex_lock(&cliblock); 
   {
        printf("<console> Frame<%d>, Cmd <%d> \n", Frame, Cmd);
   }
   cyg_mutex_unlock(&cliblock);
   
   switch(Cmd)
   {
       case '?':
       {
          //Console message
          if(console_buff[2]!=0x00) console_msg_flag = 0x01;
          else console_msg_flag = 0x00;
          break;
       }
       case 1:
       {
          //Increment menu counter
          beep(5,3);
          // 4 icons counter
          if(menu_counter < ICON_COUNTER)   menu_counter +=1;
          else menu_counter = 0x00;
          cyg_thread_delay(40);
          break;
       }
       case 2:
       {
          //Decrement menu counter
          beep(5,3);
          // 4 icons counter
          if(menu_counter > 0)   menu_counter -=1;
          else menu_counter = ICON_COUNTER;
          cyg_thread_delay(40);
          break;
       }
       case 3:
       {
          break;
       }
       case 4:
       {
          break;
       }
       case 5:
       {
          break;
       }
       case 6:
       {
          break;
       }
       case 7:
       {
          break;
       }
       case 8:
       {
          break;
       }
       case 9:
       {
          cls();
          lcd_key=0x01;
          break;
       }
   }
   
   return;

}



//eof

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波波电影院一区二区三区| 免费高清成人在线| 粉嫩aⅴ一区二区三区四区五区| 在线播放91灌醉迷j高跟美女| 亚洲国产裸拍裸体视频在线观看乱了| 91色视频在线| 亚洲午夜私人影院| 欧美一级专区免费大片| 狠狠色丁香久久婷婷综| 欧美激情综合五月色丁香| aaa国产一区| 亚洲大片在线观看| 精品成人免费观看| 成人国产电影网| 亚洲国产乱码最新视频| 日韩精品一区二区三区视频| 国产成人99久久亚洲综合精品| 中文字幕一区二区日韩精品绯色| 色婷婷激情久久| 免费成人在线观看视频| 国产日韩欧美激情| 欧美影视一区二区三区| 免费观看日韩电影| 亚洲国产精品传媒在线观看| 欧美在线视频不卡| 久久99国产精品久久| 国产精品盗摄一区二区三区| 欧美视频在线播放| 国产在线一区二区| 亚洲黄色性网站| 欧美成人精品二区三区99精品| 成人国产在线观看| 爽好久久久欧美精品| 国产香蕉久久精品综合网| 色婷婷亚洲一区二区三区| 久久99国内精品| 亚洲尤物视频在线| 中文字幕精品三区| 欧美丰满一区二区免费视频| 成人爽a毛片一区二区免费| 亚洲h精品动漫在线观看| 中文字幕不卡在线播放| 日韩亚洲欧美一区| 色系网站成人免费| 国产精品99久| 日韩精品乱码免费| 亚洲免费观看高清完整| 久久婷婷综合激情| 欧美电影在线免费观看| 91在线视频观看| 精品在线免费观看| 亚洲va国产va欧美va观看| 亚洲欧美综合网| 久久天堂av综合合色蜜桃网| 在线成人av影院| 欧美专区在线观看一区| 成人网在线播放| 国产伦精一区二区三区| 日韩vs国产vs欧美| 一区二区免费看| 国产精品久久久一本精品| 精品福利一区二区三区| 欧美一区中文字幕| 欧美色爱综合网| 色综合咪咪久久| www.在线成人| 国产高清精品在线| 经典一区二区三区| 另类人妖一区二区av| 日韩电影在线看| 亚洲大片精品永久免费| 亚洲综合在线视频| 亚洲制服丝袜在线| 一区二区成人在线| 一级女性全黄久久生活片免费| 国产精品色一区二区三区| 国产午夜精品久久久久久免费视 | 亚洲精品国产品国语在线app| 久久久久久亚洲综合影院红桃| 精品入口麻豆88视频| 欧美不卡在线视频| 久久综合狠狠综合久久激情| 欧美精品一区二区蜜臀亚洲| 精品国精品自拍自在线| 精品福利在线导航| 国产蜜臀av在线一区二区三区| 久久精品亚洲一区二区三区浴池| 久久久久一区二区三区四区| 久久久久高清精品| 国产精品久久网站| 亚洲精品国产一区二区三区四区在线 | 亚洲精品视频在线观看网站| 亚洲三级理论片| 一区二区三区日韩精品视频| 一区二区三区欧美| 久久99精品一区二区三区| 国产激情精品久久久第一区二区| 国产一区二区导航在线播放| 风间由美中文字幕在线看视频国产欧美 | 免费视频最近日韩| 九一九一国产精品| 国产a级毛片一区| 91麻豆视频网站| 7777精品久久久大香线蕉| 欧美成人video| 国产视频一区二区在线| 亚洲图片激情小说| 午夜视频在线观看一区二区 | 欧美色爱综合网| 欧美v亚洲v综合ⅴ国产v| 国产欧美一二三区| 亚洲老司机在线| 婷婷丁香久久五月婷婷| 国产激情一区二区三区| 91免费在线视频观看| 欧美美女bb生活片| 日本一区二区视频在线观看| 一区二区三区四区亚洲| 久久草av在线| 99精品欧美一区二区三区小说| 欧美日韩国产色站一区二区三区| 欧美精品一区男女天堂| 亚洲男人的天堂av| 久久99久久久久久久久久久| 成人白浆超碰人人人人| 欧美日韩1区2区| 国产亚洲人成网站| 婷婷亚洲久悠悠色悠在线播放| 国产精品一二三四区| 欧美日韩视频专区在线播放| 国产日产精品一区| 日韩精品一区第一页| 91在线视频观看| 国产亚洲精品福利| 青青青伊人色综合久久| 91看片淫黄大片一级在线观看| 精品少妇一区二区三区在线视频| 一区二区三区蜜桃网| 国产伦精品一区二区三区免费迷 | 51精品秘密在线观看| 国产精品护士白丝一区av| 蜜臂av日日欢夜夜爽一区| 色婷婷亚洲综合| 欧美激情一区在线观看| 激情五月婷婷综合网| 欧美日韩一区成人| 亚洲欧美激情视频在线观看一区二区三区| 麻豆国产精品777777在线| 欧美专区日韩专区| 国产精品久久久久久久久免费樱桃 | 久久草av在线| 欧美一级久久久久久久大片| 一区二区三区欧美日| 成人av网在线| 国产片一区二区三区| 精品一区二区三区免费观看| 欧美日韩电影在线| 亚洲一区二区av在线| 99热这里都是精品| 中文无字幕一区二区三区| 国产一区二区三区免费在线观看| 欧美高清视频在线高清观看mv色露露十八| 玉足女爽爽91| 色婷婷国产精品综合在线观看| 中文字幕亚洲电影| 成人免费va视频| 欧美国产精品一区| 国产白丝网站精品污在线入口| 久久久www免费人成精品| 激情五月婷婷综合网| 久久久久久99精品| 国产精一区二区三区| 久久久久免费观看| 国产精品一级片| 国产日产亚洲精品系列| 国产99久久久国产精品免费看 | 亚洲天堂福利av| 99久久综合色| 亚洲激情中文1区| 在线视频综合导航| 亚洲不卡在线观看| 日韩欧美在线观看一区二区三区| 日韩av中文字幕一区二区三区| 日韩一级免费一区| 国产一区二区三区四区在线观看 | 中文字幕欧美一| 91美女片黄在线观看| 亚洲国产精品麻豆| 亚洲裸体在线观看| 欧美在线观看视频一区二区三区 | 中国色在线观看另类| 99久久伊人久久99| 亚洲电影第三页| 日韩欧美一区二区视频| 国产精品影视在线| 亚洲视频 欧洲视频| 在线播放91灌醉迷j高跟美女| 国产综合久久久久影院| 国产精品网站导航| 欧美日韩一区二区三区不卡|