예제 #1
0
파일: ui.c 프로젝트: idaohang/thattaway
//asks the user what slot thay wish to load data from and loads the data into
//the destination portions of a location state
//  loc_state_t* loc - the location state to store data to
void ui_load_screen(loc_state_t* loc){
  char load_from_mem;
  uint16_t slot;

  lcd_clrscr();
  lcd_puts_P("Load how?\n4)TYPE     6)MEM");

  load_from_mem = ui_choice();

  if( load_from_mem ){
    lcd_clrscr();
    lcd_puts_P("Load which slot?");
    slot = prompt_uint16(1); //ROW 1

    lcd_clrscr();
    if( slot < (NUM_SLOTS-1) ){
      read_dest(slot, loc);
      lcd_puts_P("LOADED");
    } else {
      lcd_puts_P("INVALID SLOT!");
    }
    _delay_ms(MSG_WAIT);
  } else {
    ui_enter_dest_screen(loc);
  }
}
예제 #2
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot8(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot7);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot1);
        break;
    case EVT_KEY_FIRST(KEY_MENU):
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
        break;
    }
    initval (0, PACK_MOD, MOD);
    initval (1, PACK_WPC, WPC);
    title ('8');
    lcd_puts_P  (1*FW, 1*FH, PSTR(" ArduPilot Mode"));
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" RTL Distance"));
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}
예제 #3
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot6(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot5);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot7);
        break;
    case EVT_KEY_FIRST(KEY_MENU):
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
        break;
    }
    initval (0, PACK_ATT, ASP);
    initval (1, PACK_ATT, THH);
    title ('6'); 
    lcd_puts_P  (1*FW, 1*FH, PSTR(" Air Speed "));    
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" Climb Rate "));
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}
예제 #4
0
파일: main.c 프로젝트: yath/avr-lm75test
int main(void) {
    uart_init();
    debug_init();
    lcd_init(LCD_DISP_ON);
    lcd_clrscr();
    DEBUG("init");

    msg("begin loop");
    while(1) {
        msg("i2c_start");
        i2c_start();
        msg("i2c_read_byte(1)");
        uint8_t temp = i2c_read_byte(1);
        DEBUG("get_temp(0): %d", temp);
        lcd_gotoxy(0, 0);
        lcd_puts_P(PSTR("Temp: "));
        lcd_puts(itoa(temp));
        lcd_puts_P(PSTR(DEG"C"));
        msg("i2c_read_byte(0)");
        i2c_read_byte(0);
        msg("i2c_stop");
        i2c_stop();
        msg("delay");
        _delay_ms(1000);
    }
}
예제 #5
0
파일: test.c 프로젝트: BrettWTurley/life
int main(void)
{
    /* initialize display, cursor off */
    lcd_init(LCD_DISP_ON);
    lcd_command(LCD_FUNCTION_4BIT_2LINES );
    lcd_clrscr();
    int i = 0;
    lcd_puts_P("   I love you\n");
    lcd_puts_P("     Kelsey");
    char c;
    for(;;++i)
    {
        if(i%2==0) c = 0xDF;
        else c = 0x20;
        lcd_gotoxy(0, 0);
        lcd_putc(c);
        lcd_gotoxy(0, 1);
        lcd_putc(c);
        lcd_gotoxy(15, 0);
        lcd_putc(c);
        lcd_gotoxy(15, 1);
        lcd_putc(c);
        _delay_ms(500);
    }
}
예제 #6
0
파일: ui.c 프로젝트: idaohang/thattaway
//asks the user what slot they wish to save the destination to
//  const loc_state_t* loc - the location data to be read
void ui_save_screen(const loc_state_t* loc){
  uint16_t slot;
  uint8_t save_currloc = 0;
  //char button;
  char success;

  lcd_clrscr();
  lcd_puts_P("Save which?\n4)DEST 6)CURRLOC");
  save_currloc = ui_choice();

  lcd_clrscr();
  lcd_puts_P("Save to where?");
  slot = prompt_uint16(1); //ROW 1

  lcd_clrscr();
  if( slot < (NUM_SLOTS-1) ){
    if( save_currloc ){
      success = store_loc(slot, loc);
    } else {
      success = store_dest(slot, loc);
    }

    if( !success ){
      lcd_puts_P("SAVE FAILED!");
    } else {
      lcd_puts_P("SAVED");
    }
  } else {
    lcd_puts_P("INVALID SLOT!");
  }

  _delay_ms(MSG_WAIT);
}
예제 #7
0
static void rom_menu_browse(uint8_t y) {
  switch (y) {
    case 0: lcd_puts_P(PSTR("Return to main menu\n")); break;
    case 1: lcd_puts_P(PSTR("Change to parent dir\n")); break;
    default: printf("Internal error: rom_menu_browse(%d)\r\n", y);
  }
}
예제 #8
0
void lcd_draw_screen(uint16_t screen) {
  extern const char PROGMEM versionstr[];

  lcd_current_screen = screen;
  lcd_clear();

  switch (screen) {
  case SCRN_SPLASH:
    lcd_puts_P(versionstr);
    lcd_locate(0,3); lcd_puts_P(PSTR(HWNAME));
    // TODO: if available, print serial number here
    break;

  case SCRN_STATUS:
    lcd_locate(16, 0);
    if (active_bus == IEC)     lcd_puts_P(PSTR(" IEC"));
    if (active_bus == IEEE488) lcd_puts_P(PSTR("IEEE"));
    lcd_update_device_addr();
    lcd_update_disk_status();
    break;

  default:
    break;
  }
}
예제 #9
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot7(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot6);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot8);
        break;
    case EVT_KEY_FIRST(KEY_MENU):
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
    break;
    }
    initval (0, PACK_ATT, RLL);
    initval (1, PACK_ATT, PCH);
    title ('7'); 
    lcd_puts_P  (1*FW, 1*FH, PSTR(" Roll Angle"));   
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" Pitch Angle"));
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}
예제 #10
0
static void store_permanent(void){
	int tmp;
	signed char changeflag=1;
	lcd_clrscr();
	if (eeprom_read_byte((uint8_t *)0x0) == 19){
		changeflag=0;
		// ok magic number matches accept values
		tmp=eeprom_read_word((uint16_t *)0x04);
		if (tmp != set_val[1]){
			changeflag=1;
		}
		tmp=eeprom_read_word((uint16_t *)0x02);
		if (tmp != set_val[0]){
			changeflag=1;
		}
	}
	if (changeflag){
		lcd_puts_P("setting stored");
		eeprom_write_byte((uint8_t *)0x0,19); // magic number
		eeprom_write_word((uint16_t *)0x02,set_val[0]);
		eeprom_write_word((uint16_t *)0x04,set_val[1]);
	}else{
		if (bpress> 5){
			// display software version after long press
			lcd_puts_P(SWVERSION);
			lcd_gotoxy(0,1);
			lcd_puts_P("tuxgraphics.org");
		}else{
			lcd_puts_P("already stored");
		}
	}
	delay_ms(200);
}
예제 #11
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot5(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot4);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot6);
        break;
    case EVT_KEY_FIRST(KEY_MENU):
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
    break;
    }
    initval (0, PACK_POS, WPN);
    initval (1, PACK_POS, DST);
    title ('5'); 
    lcd_puts_P  (1*FW, 1*FH, PSTR(" Way Point # "));    
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" Distance "));
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}
예제 #12
0
void main(void)
{
unsigned int range=0;
unsigned char counter1=0, gain=0;

/* Delay is there to ensure that SRF08 is out of reset and operational */
/* 
delay(1000000);
srf08_change_i2c_address(SRF08_UNIT_1); 
delay(100000);
*/

/*
   By default SRF_UNIT_0 is selected so the below command shows that the change of i2c address
   by the above "srf08_change_i2c_address(SRF08_UNIT_1);" command was succesfull.
   All commands after this, refer to that unit only! 
*/
srf08_select_unit(SRF08_UNIT_1);   

srf08_init();                      /* Only the selected SRF08 unit will be initialized!     */  
gain=SRF08_MAX_GAIN;
srf08_set_gain(gain);
srf08_set_range(SRF08_MAX_RANGE);   /* Set range to 11008 mm */ 

lcd_init();
lcd_clrscr();
lcd_gotoxy(0,0); lcd_puts_P("RANGE (E1)  = ");
lcd_gotoxy(0,1); lcd_puts_P("RANGE (E2)  = ");
lcd_gotoxy(0,2); lcd_puts_P("RANGE (E5)  = ");
lcd_gotoxy(0,3); lcd_puts_P("LIGHT sensor= ");

while(1)
    {
       
       /* AVERAGING FILTER */
       for(counter1=0,range=0; counter1<AVG_FLT_SAMPLES; counter1++)
         {
            range+=srf08_ping(SRF08_CENTIMETERS);
         } 
       range /= AVG_FLT_SAMPLES;

       /* AUTOMATIC GAIN CONTROL */
       if(srf08_read_register(SRF08_ECHO_5)!=0 )
        { 
           if(gain>=5) { srf08_set_gain(gain-=5); } else { srf08_set_gain(gain=0); }  
        } 
       else if(srf08_read_register(SRF08_ECHO_2)<=0 && gain!=31) { srf08_set_gain(++gain); } 

       /* DISPLAY TO LCD */
       lcd_gotoxy(14,0); lcd_puti(range,2);
       lcd_gotoxy(14,1); lcd_puti(srf08_read_register(SRF08_ECHO_2), 2);
       lcd_gotoxy(14,2); lcd_puti(srf08_read_register(SRF08_ECHO_5), 2);
       lcd_gotoxy(14,3); lcd_puti(srf08_read_register(SRF08_LIGHT),  2);


    }

return;
}
예제 #13
0
void lcd_print_dir_entry(uint16_t i) {
  char filename[16 + 1];

  if      (ep[i]->flags & E_DIR)   lcd_puts_P(PSTR("DIR "));
  else if (ep[i]->flags & E_IMAGE) lcd_puts_P(PSTR("IMG "));
  else lcd_printf("%3u ", ep[i]->filesize);
  memset (filename, 0, sizeof(filename));
  ustrncpy(filename, ep[i]->filename,
           (LCD_COLS - 4) > 16 ? 16 : LCD_COLS - 4);
  pet2asc((uint8_t *) filename);
  lcd_puts(filename);
}
예제 #14
0
파일: nmea.cpp 프로젝트: RasmusKS/er9x
void menuProcNMEA4(uint8_t event)
{
    switch(event)						// new event received, branch accordingly
    {
    case EVT_KEY_BREAK(KEY_LEFT):
        chainMenu(menuProcNMEA3);
        break;
    case EVT_KEY_BREAK(KEY_RIGHT):
        chainMenu(menuProcNMEA1);
        break;
    case EVT_KEY_LONG(KEY_UP):
        NMEA_DisableRXD();
        chainMenu(menuProcStatistic);
        break;
    case EVT_KEY_LONG(KEY_DOWN):
        NMEA_DisableRXD();
        chainMenu(menuProc0);
        break;
    }
    // expecting LAT value in POS packet to be stored in the first buffer
    initval (LONG_BUF(0), PACK_GGA, LAT);
    initval (SHORT_BUF(0), PACK_GGA, NOS);
    // and LON value in POS packet stored in the second buffer
    initval (LONG_BUF(1), PACK_GGA, LON);
    initval (SHORT_BUF(1), PACK_GGA, EOW);
    initval (SHORT_BUF(2), PACK_GGA, SAT);			// -> sbuf[2]
    // title of the screen
    title ('4');
    lcd_puts_P        (   3*FW,   1*FH, PSTR("Latitude     Sat"));    // line 1 column 3
    // first buffer into line 2 column 2
    if (rbuf[0][0])
    {
        lcd_putcAtt   (  13*FW,   1*FH, sbuf[0], 0);          // N or S
	  lcd_putcAtt   (  19*FW,   1*FH, sbuf[2], 0);				// satellites in view
        lcd_putsnAtt  (   1*FW,   2*FH, rbuf[0], 2, APSIZE);
        lcd_putcAtt   (   5*FW,   2*FH, '@',0);
        lcd_putsAtt   (   6*FW,   2*FH, &rbuf[0][2], APSIZE);	// minutes with small decimal point
    }
    else
        lcd_putsAtt   (   2*FW,   2*FH, val_unknown, APSIZE);
    lcd_puts_P        (   3*FW,   4*FH, PSTR("Longitude"));   // line 4 column 5
    // second buffer into line 5 column 2
    if (rbuf[0][0])
    {
        lcd_putcAtt   (  13*FW,   4*FH, sbuf[1], 0);          // E or W
        lcd_putsnAtt  (   0*FW,   5*FH, rbuf[1], 3, APSIZE);
        lcd_putcAtt   (   6*FW,   5*FH, '@',0);
        lcd_putsAtt   (   7*FW,   5*FH, &rbuf[1][3], APSIZE);	// minutes with small decimal point

    }
    else
        lcd_putsAtt   (   2*FW,   5*FH, val_unknown, APSIZE);
}
예제 #15
0
파일: ui.c 프로젝트: idaohang/thattaway
//draws UI elements to the screen and accepts user input
//  loc_state_t* loc - the location data to use/modify
void ui_update(loc_state_t* loc){
  char curr_button = NO_BUTTON;

  timer++;

  curr_button = keypad_getchar();
  if( curr_button == LEFT_BUTTON ){
    bottom_screen--;
  } else if( curr_button == RIGHT_BUTTON ){
    bottom_screen++;
  }
  //if(bottom_screen > MAX_PAGE){
    //bottom_screen = MIN_PAGE;
  //}
  bottom_screen = bottom_screen % (MAX_PAGE+1);

  lcd_clrscr();
  //draw the destination info on row 0
  ui_draw_dest_info(DEST_ROW, loc);

  if( bottom_screen == SAT_PAGE ){
    ui_draw_sat_info(PAGE_ROW, loc);
  } else if( bottom_screen == DRIVING_PAGE ){
    ui_draw_driving_info(PAGE_ROW, loc);
  } else if( bottom_screen == MEM_PAGE ){
    lcd_gotoxy(0, PAGE_ROW);
    lcd_puts_P("4)LOAD    6)SAVE");
    if( curr_button == '4' ){
      ui_load_screen(loc);
    } else if( curr_button == '6' ){
      ui_save_screen(loc);
    }
  } else if( bottom_screen == DESTLOC_PAGE ){
    lcd_gotoxy(0, PAGE_ROW);
    if( (timer & _BV(2)) == 0 ){
      lcd_puts_P("DLa ");
      print_float(loc->dest_lat);
    } else {
      lcd_puts_P("DLo ");
      print_float(loc->dest_long);
    }
  } else if( bottom_screen == CURRLOC_PAGE ){
    lcd_gotoxy(0, PAGE_ROW);
    if( (timer & _BV(2)) == 0 ){
      lcd_puts_P("CLa ");
      print_float(loc->curr_lat);
    } else {
      lcd_puts_P("CLo ");
      print_float(loc->curr_long);
    }
  }
}
예제 #16
0
파일: ui.c 프로젝트: idaohang/thattaway
//asks the user what latitude and longitude to set the destination to
//  loc_state_t* loc - where to write the destination information to
void ui_enter_dest_screen(loc_state_t* loc){
  lcd_clrscr();

  //get destination information
  lcd_clrscr();
  lcd_puts_P("Enter the goal\nLatitude...");
  _delay_ms(MSG_WAIT);
  (loc->dest_lat) = prompt_float();

  lcd_clrscr();
  lcd_puts_P("Enter the goal\nLongitude...");
  _delay_ms(MSG_WAIT);
  (loc->dest_long) = prompt_float();
}
예제 #17
0
파일: display.c 프로젝트: muccc/matemat
void display_init(void)
{
    lcd_clrscr();
    lcd_puts_P("   Matemat blubb");
    lcd_gotoxy(0,2);
    lcd_puts_P("Middle: ");

    lcd_gotoxy(0,3);
    lcd_puts_P("Bottom: ");

    lcd_gotoxy(17,1);
    lcd_puts_P("PL");
   
}
예제 #18
0
void loc_evt_bl_entered(void *evt)
{
    rvn_loc_cmd_std_t cmd;
    
    SIPC_ACK_PACKET();
    
    switch (avrraven.status.state) {
    case STATE_M1284P_RESTART_WAIT_BOOT_EVENT:
        cmd.id = RVN_LOC_CMD_APP_START;
        sipc_send_frame(sizeof(cmd), (uint8_t *)&cmd);
        lcd_puts_P("WAIT FOR M1284 APP PROG");
        avrraven.status.state = STATE_M1284P_RESTART_WAIT_APP_EVENT;
        break;
    case STATE_M1284P_ENTER_BOOT_WAIT_BOOT_EVENT:
        // ATmega1284 is in boot loader
        led_status_set(LED_FAST_BLINK);
        lcd_puts_P("WRITING M1284 FACTORY DEFAULT FW");
        cmd.id = RVN_LOC_CMD_ENTER_BOOT;
        sipc_send_frame(sizeof(cmd), (uint8_t *)&cmd);
       
        // Set FW image offset to read from factory default location on data flash
        avrraven.status.m1284p_img_offset = M1284P_FLASH_FD_IMG_ADR;
        
        // Set new avrraven.status.state
        avrraven.status.state = STATE_M1284P_UPGRADE_INIT_WAIT_RESPOND;
        break;
    case STATE_M1284P_UPGRADE_INIT_WAIT_RESPOND:
        // ATmega1284 has entered booloader mode
        lcd_symbol_clr(LCD_SYMBOL_ZLINK);
        lcd_symbol_clr(LCD_SYMBOL_ZIGBEE);
        lcd_symbol_clr(LCD_SYMBOL_RX);
        lcd_symbol_clr(LCD_SYMBOL_TX);
        lcd_symbol_antenna_signal(LCD_SYMBOL_ANTENNA_DIS);
        
        // Allocate memory for FW packets
        if ((m1284p_fw_packet = (rvn_loc_cmd_fw_packet_t*)vrt_mem_alloc(sizeof(rvn_loc_cmd_fw_packet_t)+RVN_FW_PACKET_SIZE)) == NULL){
            break;
        }
        
        // Initiate transfer
        avrraven.status.m1284p_address_offset = 0;
        send_m1284p_fw_packet(avrraven.status.m1284p_img_offset, avrraven.status.m1284p_address_offset, m1284p_fw_packet);
        lcd_num_putdec((int)(avrraven.status.m1284p_address_offset/1024), LCD_NUM_PADDING_SPACE);
        avrraven.status.state = STATE_M1284P_UPGRADE_PACKET_WAIT_RESPOND;
        break;
    default:
        // This event is ignored in any other state
        break;
    }
}
예제 #19
0
파일: ui.c 프로젝트: idaohang/thattaway
//prints one of 8 cardinal directions to the LCD
//  int16_t degrees - the input, in degrees
void ui_print_cardinal(const int16_t degrees){

  if( (23 <= degrees) && (degrees <= 67) ){
    lcd_puts_P("NE");
  }
  if( (68 <= degrees) && (degrees <= 112) ){
    lcd_puts_P("E");
  }
  if( (113 <= degrees) && (degrees <= 157) ){
    lcd_puts_P("SE");
  }
  if( (158 <= degrees) && (degrees <= 202) ){
    lcd_puts_P("S");
  }
  if( (203 <= degrees) && (degrees <= 247) ){
    lcd_puts_P("SW");
  }
  if( (248 <= degrees) && (degrees <= 292) ){
    lcd_puts_P("W");
  }
  if( (293 <= degrees) && (degrees <= 337) ){
    lcd_puts_P("NW");
  }
  if( (338 <= degrees) || (degrees <= 21) ){
    lcd_puts_P("N");
  }
}
예제 #20
0
파일: display.c 프로젝트: muccc/matemat
void display_putcoolerstate(void)
{
    lcd_gotoxy(10,1);
    switch(cooler.state){
        case COOLER_IDLE:
            lcd_puts_P("idle   ");
        break;
        case COOLER_COOLING:
            lcd_puts_P("cooling");
        break;
        default:
            lcd_puts_P("?mode? ");
        break;
    }
}
예제 #21
0
파일: main.c 프로젝트: Andy1978/needler
void update_status_lcd(void)
{
  lcd_gotoxy(0,0);
  //_delay_ms(1);
  //_delay_us(30);
  lcd_puts_P("OK:");
  lcd_put_int(grbl_num_ok,4);
  lcd_puts_P(" ERR:");
  lcd_put_int(grbl_num_err,4);
  lcd_gotoxy(0,1);
  //_delay_us(30);
  lcd_puts(grbl_error_msg);
  uint8_t l=16-strlen(grbl_error_msg);
  while(l--) lcd_putc(' ');
}
예제 #22
0
void menu_ask_store_settings(void) {
  lcd_clear();
  lcd_puts_P(PSTR("Save settings?\n\nyes\nno"));
  if (menu_vertical(2,3) == 2) {
    write_configuration();
  }
}
예제 #23
0
int main(void)
{
	DDRB |= (1<<PB0);
	PORTB |= (1<<PB0);

	DDRD &= ~(1<<PD6);
	PORTD &= ~(1<<PD6);

	czujniki_cnt = search_sensors();

	DS18X20_start_meas(DS18X20_POWER_EXTERN, NULL);
	_delay_ms(750);
	if(DS18X20_OK == DS18X20_read_meas_single(0x28, &subzero, &cel, &cel_frac_bits)) display_temp();
	else {
		lcd_puts_P("err");
	}

     lcd_clrscr();   /* clear display home cursor */

 for(;;){


 }


}
예제 #24
0
파일: nmea.cpp 프로젝트: RasmusKS/er9x
void menuProcNMEA3(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_BREAK(KEY_LEFT):
        chainMenu(menuProcNMEA2);
        break;
    case EVT_KEY_BREAK(KEY_RIGHT):
        chainMenu(menuProcNMEA4);
        break;
    case EVT_KEY_LONG(KEY_UP):
        NMEA_DisableRXD();
        chainMenu(menuProcStatistic);
        break;
    case EVT_KEY_LONG(KEY_DOWN):
        NMEA_DisableRXD();
        chainMenu(menuProc0);
        break;
    }
    initval (LONG_BUF(0), PACK_RMC, SOG);
    initval (LONG_BUF(1), PACK_RMC, COG);
    initval (SHORT_BUF(2), PACK_GGA, SAT);			// -> sbuf[2]
    title ('3');
    lcd_puts_P        (   0*FW,   1*FH, PSTR("GrndSpeed[knt]  Sat"));
    if (rbuf[0][0])				// if first position is 00, buffer is empty, taken as false 
    {							// any other value is true
        uint8_t i = 0;
        while (rbuf[0][i])
        {
            if (rbuf[0][i] == '.')		// find decimal point and insert End of String 3 positions higher
            {
                rbuf[0][i+3] = 0;
                break;
            }
            i++;
        }
        lcd_putsAtt   (   2*FW,   2*FH, VALSTR(0), APSIZE);		// speed over ground
    }
    else
        lcd_putsAtt   (   2*FW,   2*FH, val_unknown, APSIZE);

    lcd_putcAtt   (  19*FW,   1*FH, sbuf[2], 0);			// satellites in view

    lcd_puts_P        (   1*FW,   4*FH, PSTR("Course over ground") );
    lcd_putsAtt       (   2*FW,   5*FH, VALSTR(1), APSIZE);		// course over ground
}
예제 #25
0
void menuProcStatistic(uint8_t event)
{
  TITLE("STAT");
  switch(event)
  {
    case EVT_KEY_FIRST(KEY_UP):
      chainMenu(menuProcStatistic2);
      break;
    case EVT_KEY_FIRST(KEY_DOWN):
    case EVT_KEY_FIRST(KEY_EXIT):
      chainMenu(menuMainView);
      break;
  }

  lcd_puts_P(  1*FW, FH*1, PSTR("TME"));
  putsTime(    5*FW, FH*1, s_timeCumAbs, 0, 0);
  lcd_puts_P( 17*FW, FH*1, PSTR("TSW"));
  putsTime(   11*FW, FH*1, s_timeCumSw,      0, 0);

  lcd_puts_P(  1*FW, FH*2, PSTR("STK"));
  putsTime(    5*FW, FH*2, s_timeCumThr, 0, 0);
  lcd_puts_P( 17*FW, FH*2, PSTR("ST%"));
  putsTime(   11*FW, FH*2, s_timeCum16ThrP/16, 0, 0);

  lcd_puts_P( 17*FW, FH*0, PSTR("TOT"));
  putsTime(   11*FW, FH*0, s_timeCumTot, 0, 0);

  uint16_t traceRd = s_traceCnt>MAXTRACE ? s_traceWr : 0;
  uint8_t x=5;
  uint8_t y=60;
  lcd_hline(x-3,y,120+3+3);
  lcd_vline(x,y-32,32+3);

  for(uint8_t i=0; i<120; i+=6)
  {
    lcd_vline(x+i+6,y-1,3);
  }
  for(uint8_t i=1; i<=120; i++)
  {
    lcd_vline(x+i,y-s_traceBuf[traceRd],s_traceBuf[traceRd]);
    traceRd++;
    if(traceRd>=MAXTRACE) traceRd=0;
    if(traceRd==s_traceWr) break;
  }
}
예제 #26
0
파일: tui-temp.c 프로젝트: urjaman/carlcdp
static void tui_show_current_refresh_interval(void) { // This should be genericised when an another place needs to show a constant header + ram string buffer.
	unsigned char buf[16];
	lcd_clear();
	lcd_gotoxy(2,0);
	lcd_puts_P(PSTR("INTERVAL NOW:"));
	tui_print_refresh_interval(buf,tui_update_refresh_interval());
	lcd_gotoxy((16 - strlen((char*)buf))/2,1);
	lcd_puts(buf);
	timer_delay_ms(100);
	tui_waitforkey();
}
예제 #27
0
void display_temp(void){
	char bufCel[3];
	char bufFrac[3];

	itoa(cel,bufCel,10);
	itoa(cel_frac_bits,bufFrac,10);

	lcd_puts(bufCel);
	lcd_puts_P(".");
	lcd_puts(bufFrac);

}
예제 #28
0
void loc_rsp_fail(void* rsp)
{
    rvn_loc_cmd_std_t cmd;
    
    SIPC_ACK_PACKET();
    
    switch (avrraven.status.state) {
    case STATE_OTA_TRANS_WAITING_FOR_RX_ENABLE_RESPONSE:
        lcd_symbol_clr(LCD_SYMBOL_RX); // TIMED_FUNCTION
        lcd_symbol_clr(LCD_SYMBOL_TX); // TIMED_FUNCTION
        avrraven.status.state = STATE_IDLE;
        break;
    case STATE_RADIO_WAIT_FOR_RX_REENABLE_RESPONSE:
        lcd_puts_P("RX ENABLE FAILED");
        led_status_set(LED_FAST_BLINK);
        avrraven.status.state = STATE_DISPLAY_MESSAGE;
        break;
    case STATE_RADIO_WAIT_FOR_RX_ENABLE_RESPONSE:
        cmd.id = RVN_LOC_CMD_RX_ON; // re-try enabling rx
        sipc_send_frame(sizeof(cmd), (uint8_t *)&cmd);
        avrraven.status.state = STATE_RADIO_WAIT_FOR_RX_REENABLE_RESPONSE;
        break;
    case STATE_FW_WRITE:
        lcd_puts_P("PACKET ERROR");
        led_status_set(LED_FAST_BLINK);
        avrraven.status.state = STATE_DISPLAY_MESSAGE;
        break;
    case STATE_RADIO_CONNECTING:
        lcd_puts_P("NO NET");
        led_status_set(LED_FAST_BLINK);
        avrraven.status.state = STATE_DISPLAY_MESSAGE;
        break;
    default:
        lcd_puts_P("ERROR");
        led_status_set(LED_FAST_BLINK);
        avrraven.status.state = STATE_DISPLAY_MESSAGE;
        break;
    }
}
예제 #29
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot3(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot2);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot4);
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
        break;
    }
    initval (0, PACK_POS, ALT);
    initval (1, PACK_POS, ALH);
    title ('3');  
    lcd_puts_P  (1*FW, 1*FH, PSTR(" Altitude"));    
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" Altitude Hold") );
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}
예제 #30
0
파일: ardupilot.cpp 프로젝트: RasmusKS/er9x
void menuProcArduPilot4(uint8_t event)
{
    switch(event)
    {
    case EVT_KEY_FIRST(KEY_UP):
        chainMenu(menuProcArduPilot3);
        break;
    case EVT_KEY_FIRST(KEY_DOWN):
        chainMenu(menuProcArduPilot5);
        break;
    case EVT_KEY_FIRST(KEY_EXIT):
        ARDUPILOT_DisableRXD();
        chainMenu(menuProc0);
    break;
    }
    initval (0, PACK_POS, CRS);
    initval (1, PACK_POS, BER);
    title ('4'); 
    lcd_puts_P  (1*FW, 1*FH, PSTR(" Course"));    
    lcd_putsAtt (2*FW, 2*FH, VALSTR(0), APSIZE);
    lcd_puts_P  (1*FW, 4*FH, PSTR(" Bearing"));
    lcd_putsAtt (2*FW, 5*FH, VALSTR(1), APSIZE);
}