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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hello.c

?? port of ARM to NOkia 3310 display
?? C
字號:
/***************************************************************************************************************
*
*                           NOKIA Lcd, ARM7, SD/MMC PROJECT
*
*
***************************************************************************************************************/
#include "globals.h"
#include "includes.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,   GPS_program,    (cyg_addrword_t) 0,  "gps",      (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], STACKSIZE, &thread[2], &thread_obj[2]);
    cyg_thread_create(12,  ALARM_program,  (cyg_addrword_t) 3,  "alarm",    (void *) stack[3], STACKSIZE, &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  
    //GPS
    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(&current_latitude[0]);lcd(&current_longitude[0]);}
         cyg_thread_delay(10); //don't pip!   
     }
}

   


void GPS_program(cyg_addrword_t data)
{
      
   FILE * pSER1;
   cyg_uint32 len = 126;        /* 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 (&Gps_buff[0], len, pSER1);

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

}


/* CONSOLE */
void SER0_program(cyg_addrword_t data)
{
  FILE * pSER0;
  cyg_uint32 len = 126;         /* 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[127]='\0';
		  console();
              }
           }
        }
     }
    free(ser0_buff); 
    //fclose(pSER1);
    cyg_thread_delay(10);
  }
} 
 
 
 
 
 
 
    
 // 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.= 500, interval = 4000
  cyg_alarm_initialize(test_alarmH, cyg_current_time() + 500, 4000);

  // 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) 
    {
       LED_OFF;

      // Code for Alarm Event
      // Close/Suspend windows
      //LATITUDE
      if( !gps_latitude_flag )  gps_latitude_flag=0x01;
      else gps_latitude_flag = 0x00;
      cyg_thread_delay(500);
      
      //SYSTEN STATUS
      if( !gps_status_flag )  gps_status_flag=0x01;
      else  gps_status_flag = 0x00;
      cyg_thread_delay(500);
      
      //DRAW WINDOW
      if(!draw_window) draw_window=0x01;
      else draw_window=0x00;
      cyg_thread_delay(500);

      //CONSOLE MESSAGES
      if(console_msg_flag)  console_msg_flag=0x00;
      cyg_thread_delay(500);

      //Prevent Alarm
      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);
}

//eof
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四区五区入口| 中文字幕精品一区二区精品绿巨人 | 免费成人美女在线观看.| 国产精品高潮呻吟久久| 久久亚洲精品国产精品紫薇| 精品欧美一区二区久久| 欧美一区二区三区不卡| 91精品国模一区二区三区| 欧美一区二区三区视频免费| 555www色欧美视频| 亚洲精品一区二区三区福利| 久久综合狠狠综合久久综合88| 日韩一区二区电影在线| 精品人在线二区三区| 2022国产精品视频| 日本一区二区三区高清不卡| 国产精品二区一区二区aⅴ污介绍| 亚洲国产高清aⅴ视频| 亚洲欧洲综合另类| 日韩精品高清不卡| 国产精品一区2区| 91麻豆.com| 欧美日韩国产a| 久久久精品天堂| 亚洲人成人一区二区在线观看| 亚洲影院理伦片| 蜜桃一区二区三区在线| 国产激情一区二区三区桃花岛亚洲| 狠狠色丁香婷婷综合久久片| jlzzjlzz亚洲日本少妇| 欧美日韩精品一区视频| 久久综合九色欧美综合狠狠| 亚洲欧美日韩电影| 青娱乐精品在线视频| 成人一级片在线观看| 欧美无砖专区一中文字| 精品粉嫩超白一线天av| 亚洲欧美日韩一区二区 | 成人精品在线视频观看| 欧美三级韩国三级日本三斤| 精品国产伦一区二区三区免费 | 亚洲一卡二卡三卡四卡| 美国精品在线观看| 色久综合一二码| 精品国产欧美一区二区| 一区二区三区日本| 国产成人小视频| 欧美一区二区视频在线观看 | 精品久久久久久无| 亚洲精品成人天堂一二三| 久久国产尿小便嘘嘘尿| 91小宝寻花一区二区三区| 欧美大片顶级少妇| 亚洲国产一区二区三区青草影视| 国产综合成人久久大片91| 欧美性大战久久| 亚洲图片你懂的| 另类的小说在线视频另类成人小视频在线| 成人亚洲精品久久久久软件| 91精品在线免费观看| 一区二区成人在线观看| 国产成人免费视频网站| 精品久久久影院| 日韩av电影免费观看高清完整版| www.亚洲在线| 国产精品丝袜一区| 国产精品一区免费视频| 欧美α欧美αv大片| 图片区日韩欧美亚洲| 欧洲人成人精品| 一区二区三区日韩欧美| jizzjizzjizz欧美| 国产精品动漫网站| 99在线精品免费| 自拍偷拍亚洲欧美日韩| 国产91精品久久久久久久网曝门| 欧美草草影院在线视频| 久久99精品国产.久久久久| 欧美一卡2卡3卡4卡| 日韩国产精品91| 制服丝袜av成人在线看| 青椒成人免费视频| 精品伦理精品一区| 紧缚捆绑精品一区二区| 精品日韩成人av| 国产成人自拍网| 中文字幕一区二区三区视频| 色又黄又爽网站www久久| 中文字幕字幕中文在线中不卡视频| jvid福利写真一区二区三区| 亚洲欧美另类小说视频| 91国在线观看| 亚洲一二三区在线观看| 91.com在线观看| 久久av资源网| 国产亚洲一区字幕| 不卡的av网站| 亚洲国产精品自拍| 日韩欧美美女一区二区三区| 国产麻豆一精品一av一免费| 国产精品久久夜| 欧美亚洲综合久久| 久久国产精品区| 国产精品国产三级国产三级人妇| 91影视在线播放| 日本91福利区| 中文字幕高清不卡| 欧美在线免费观看视频| 日本伊人午夜精品| 国产精品无遮挡| 欧美精品自拍偷拍| 国产黄色精品网站| 亚洲国产视频一区二区| 欧美精品一区二区三区视频| 成人动漫视频在线| 日韩av中文字幕一区二区| 国产欧美视频在线观看| 欧美综合久久久| 国产麻豆9l精品三级站| 亚洲在线成人精品| 国产色一区二区| 欧美人伦禁忌dvd放荡欲情| 国产精品夜夜嗨| 亚洲二区在线观看| 国产人久久人人人人爽| 制服.丝袜.亚洲.另类.中文| 成人美女视频在线观看18| 免费观看在线综合| 一区二区三区四区av| 国产亚洲欧美日韩在线一区| 欧美日韩小视频| av亚洲精华国产精华精华| 久久精品国产秦先生| 亚洲成人一区二区在线观看| 欧美高清一级片在线观看| 欧美不卡激情三级在线观看| 欧美日韩国产另类一区| 91视频你懂的| 成人精品小蝌蚪| 国产精品夜夜嗨| 国产在线乱码一区二区三区| 视频一区在线视频| 亚洲成av人片一区二区三区| 国产精品久久久久影视| 久久精品无码一区二区三区| 欧美一区二视频| 欧美一区二区日韩| 欧美日韩1234| 欧美日韩精品一区二区在线播放| 色哟哟国产精品| 色婷婷av一区二区三区软件 | 日韩欧美123| 欧美精品亚洲一区二区在线播放| 色综合久久精品| 色偷偷久久一区二区三区| 国产成人亚洲精品青草天美| 国产经典欧美精品| 国产mv日韩mv欧美| 国产一区 二区| 成人午夜短视频| 国产iv一区二区三区| 国产凹凸在线观看一区二区| 国产精品自拍网站| 成人午夜激情在线| 91首页免费视频| 色婷婷激情一区二区三区| 99久久精品99国产精品| 99久久精品国产网站| 99久久婷婷国产精品综合| 成人app下载| 色八戒一区二区三区| 欧美日韩国产系列| 欧美成人乱码一区二区三区| 2017欧美狠狠色| 国产精品久久久一本精品 | 国产高清亚洲一区| 成人激情小说网站| 欧美午夜精品免费| 日韩欧美123| 亚洲欧洲三级电影| 亚洲成人动漫在线观看| 久久国产人妖系列| 色综合天天狠狠| 精品国产欧美一区二区| 亚洲视频一区二区在线观看| 亚洲电影一级黄| 国产乱码精品一品二品| 色网综合在线观看| 精品国产电影一区二区| 最好看的中文字幕久久| 美女视频黄免费的久久| 成人激情图片网| 91精品婷婷国产综合久久| 国产精品毛片大码女人| 日本色综合中文字幕| 成人app在线| 久久蜜桃av一区精品变态类天堂 | 精品美女被调教视频大全网站| 国产精品免费免费| 日产欧产美韩系列久久99|