//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); } }
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); }
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); }
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); } }
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); } }
//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); }
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); } }
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; } }
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); }
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); }
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); }
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; }
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); }
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); }
//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); } } }
//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(); }
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"); }
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; } }
//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"); } }
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; } }
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(' '); }
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(); } }
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(;;){ } }
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 }
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; } }
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(); }
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); }
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; } }
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); }
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); }