int snmp_set_flashstatus (int32_t arg, const uint8_t * req, int req_len) { if (req[ req_len - 1] == 2) // least significant byte == 2 { uint32_t chk = get_crc(); if (chk != settings.settings_words[USER_PAGE_CHECKSUM]) { settings.settings_words[USER_PAGE_CHECKSUM] = chk; settings.settings_words[BOOT_LOADER_CONFIGURATION] = 0x929E1424; // boot loader config word flashc_memcpy(AVR32_FLASHC_USER_PAGE, & settings, 512, TRUE); settings_set_home_ref(); } } return 0; }
void a_app_manager_init(void) { app_context_t * a; a = a_new_app( "DSTAR", VDISP_MAIN_LAYER); a_set_button_text(a, "PTT", "MUTE", "R>CS", "MENU"); a_set_key_event_handler(a, main_app_key_event_handler); main_screen = a; a = a_new_app( "RMU SET", VDISP_RMUSET_LAYER); a_set_button_text(a, "", "", "SELECT", "MENU"); a_set_key_event_handler(a, rmuset_app_key_event_handler); a = a_new_app( "DV SET", VDISP_DVSET_LAYER); a_set_button_text(a, "SELECT", "", "", "MENU"); a_set_key_event_handler(a, dvset_app_key_event_handler); a = a_new_app( "GPS", VDISP_GPS_LAYER); a_set_button_text(a, "", "", "", "MENU"); a = a_new_app( "MODE SET", VDISP_REF_LAYER); a_set_button_text(a, "CONNECT", "DISC", "SELECT", "MENU"); a_set_key_event_handler(a, ref_app_key_event_handler); a = a_new_app( "AUDIO", VDISP_AUDIO_LAYER); a_set_button_text(a, "", "", "", "MENU"); // a_set_key_event_handler(a, debug_app_key_event_handler); a = a_new_app( "DEBUG", VDISP_DEBUG_LAYER); a_set_button_text(a, "", "REBOOT", "", "MENU"); a_set_key_event_handler(a, debug_app_key_event_handler); a = a_new_app( "NODE INFO", VDISP_NODEINFO_LAYER); a_set_button_text(a, "GPS", "", "", "MENU"); // a_set_key_event_handler(a, debug_app_key_event_handler); help_layer = vd_new_screen(); if ((SETTING_SHORT(S_REF_SERVER_NUM) > 0) && (SETTING_SHORT(S_REF_SERVER_NUM) < 1000)) { int n = SETTING_SHORT(S_REF_SERVER_NUM); ref_items[4] = n % 10; n /= 10; ref_items[3] = n % 10; n /= 10; ref_items[2] = n % 10; } if ((SETTING_CHAR(C_REF_MODULE_CHAR) >= 'A') && (SETTING_CHAR(C_REF_MODULE_CHAR) <= 'Z')) { ref_items[5] = SETTING_CHAR(C_REF_MODULE_CHAR) - 0x41; } if ((SETTING_CHAR(C_REF_TIMER) >= 0) && (SETTING_CHAR(C_REF_TIMER) <= 7)) { ref_items[6] = SETTING_CHAR(C_REF_TIMER); } if ((SETTING_CHAR(C_DCS_MODE) >= 0) && (SETTING_CHAR(C_DCS_MODE) <= 5)) { ref_items[0] = SETTING_CHAR(C_DCS_MODE); } if ((SETTING_CHAR(C_REF_TYPE) >= 0) && (SETTING_CHAR(C_REF_TYPE) <= 2)) { ref_items[1] = SETTING_CHAR(C_REF_TYPE); } set_mode_vars(); int n = ref_items[2] * 100 + ref_items[3] * 10 + ref_items[4]; dcs_select_reflector( n, ref_items[5] + 0x41, ref_items[1]); if ((dcs_mode != 0) && (SETTING_CHAR(C_DCS_CONNECT_AFTER_BOOT) == 1)) { ref_selected_item = REF_SELECTION_SPECIAL; dcs_on(); } settings_set_home_ref(); // TODO error handling // vd_clear_rect(help_layer, 0, 0, 128, 64); int i; for (i=0; i < 128; i++) { vd_set_pixel(help_layer, i, 56, 0, 1, 1); } #define SIDEBOX_WIDTH 41 // #define SIDEBOX_HEIGHT 12 #define BOX1_YPOS 10 #define BOX2_YPOS 34 for (i=0; i < 7; i++) { vd_set_pixel(help_layer, 32, 57+i, 0, 1, 1); vd_set_pixel(help_layer, 64, 57+i, 0, 1, 1); vd_set_pixel(help_layer, 96, 57+i, 0, 1, 1); vd_set_pixel(help_layer, SIDEBOX_WIDTH - 1, i, 0, 1, 1); } for (i=0; i < SIDEBOX_WIDTH; i++) { vd_set_pixel(help_layer, i, 7, 0, 1, 1); } /* for (i=0; i <= SIDEBOX_HEIGHT; i++) { vd_set_pixel(help_layer, 127-SIDEBOX_WIDTH, BOX1_YPOS+i, 0, 1, 1); vd_set_pixel(help_layer, 127-SIDEBOX_WIDTH, BOX2_YPOS+i, 0, 1, 1); } */ // vd_prints_xy(help_layer, 4, 58, VDISP_FONT_4x6, 0,"TEST"); vd_prints_xy(VDISP_REF_LAYER, 0, 12, VDISP_FONT_6x8, 0, "Mode:"); vd_printc_xy(VDISP_REF_LAYER, 120, 13, VDISP_FONT_8x12, 0, 0x1e); // arrow up vd_printc_xy(VDISP_REF_LAYER, 120, 39, VDISP_FONT_8x12, 0, 0x1f); // arrow up vd_printc_xy(VDISP_DVSET_LAYER, 120, 13, VDISP_FONT_8x12, 0, 0x1e); // arrow up vd_printc_xy(VDISP_DVSET_LAYER, 120, 39, VDISP_FONT_8x12, 0, 0x1f); // arrow up vd_printc_xy(VDISP_RMUSET_LAYER, 120, 13, VDISP_FONT_8x12, 0, 0x1e); // arrow up vd_printc_xy(VDISP_RMUSET_LAYER, 120, 39, VDISP_FONT_8x12, 0, 0x1f); // arrow up set_help_text(); }