xmlrpc_value *set_speaker_volume_RP(xmlrpc_env * const env, xmlrpc_value * const param_array, void *const server_context) { LOG_DEBUG(VOLUME_REMOTE_MSG_PREFIX "entering setSpeakerVolume..."); xmlrpc_double level; int result; xmlrpc_decompose_value(env, param_array, "(d)", &level); if (env->fault_occurred) { return NULL; } result = set_speaker_volume(level); LOG_DEBUG(VOLUME_REMOTE_MSG_PREFIX "leaving setSpeakerVolume"); return xmlrpc_build_value(env, "b", result); }
void a_dispatch_key_event( int layer_num, int key_num, int key_event ) { if ((key_lock) && (key_num != A_KEY_BUTTON_2)) return; if (key_num == A_KEY_BUTTON_APP_MANAGER) { if (key_event == A_KEY_PRESSED) { if (dvset_isedit()) { dvset_cursor(1); dvset_print(); return; } else if (dvset_isselected()) { a_set_button_text_pos(main_screen, "SELECT", 0); vd_clear_rect(help_layer, 0, 58, 24, 6); // button 1 vd_prints_xy(help_layer, 0, 58, VDISP_FONT_4x6, 0, main_screen->button_text[0]); a_set_button_text_pos(main_screen, "", 1); vd_clear_rect(help_layer, 34, 58, 24, 6); // button 2 vd_prints_xy(help_layer, 34, 58, VDISP_FONT_4x6, 0, main_screen->button_text[1]); a_set_button_text_pos(main_screen, "", 2); vd_clear_rect(help_layer, 66, 58, 24, 6); // button 3 vd_prints_xy(help_layer, 66, 58, VDISP_FONT_4x6, 0, main_screen->button_text[2]); a_set_button_text_pos(main_screen, "MENU", 3); vd_clear_rect(help_layer, 98, 58, 24, 6); // button 4 vd_prints_xy(help_layer, 98, 58, VDISP_FONT_4x6, 0, main_screen->button_text[3]); settings_init(); dvset_cancel(); dvset_print(); refresh_main_menu = true; return; } else if (r2cs_flag) { r2cs_flag = false; lcd_show_menu_layer(help_layer); help_layer_timer = 3; // approx 2 seconds a_set_button_text_pos(main_screen, "R>CS", 2); vd_clear_rect(help_layer, 66, 58, 24, 6); // button 3 vd_prints_xy(help_layer, 66, 58, VDISP_FONT_4x6, 0, main_screen->button_text[2]); return; } if (refresh_main_menu) { a_set_button_text_pos(main_screen, "PTT", 0); vd_clear_rect(help_layer, 0, 58, 24, 6); // button 1 vd_prints_xy(help_layer, 0, 58, VDISP_FONT_4x6, 0, main_screen->button_text[0]); a_set_button_text_pos(main_screen, "MUTE", 1); vd_clear_rect(help_layer, 34, 58, 24, 6); // button 2 vd_prints_xy(help_layer, 34, 58, VDISP_FONT_4x6, 0, main_screen->button_text[1]); a_set_button_text_pos(main_screen, "R>CS", 2); vd_clear_rect(help_layer, 66, 58, 24, 6); // button 3 vd_prints_xy(help_layer, 66, 58, VDISP_FONT_4x6, 0, main_screen->button_text[2]); a_set_button_text_pos(main_screen, "MENU", 3); vd_clear_rect(help_layer, 98, 58, 24, 6); // button 4 vd_prints_xy(help_layer, 98, 58, VDISP_FONT_4x6, 0, main_screen->button_text[3]); refresh_main_menu = false; } snmp_reset_cmnty = 0; software_ptt = 0; // prevent TXing forever... app_manager_select_next(); lcd_show_help_layer(help_layer); if ((current_app->screen_num == VDISP_REF_LAYER) || (current_app->screen_num == VDISP_DVSET_LAYER) || (current_app->screen_num == VDISP_MAIN_LAYER && r2csURCALL())) { help_layer_timer = 0; // show help forever.. } else if (current_app->screen_num == VDISP_RMUSET_LAYER) { help_layer_timer = 0; // show help forever.. rmuset_print(); } else { help_layer_timer = 5; // approx 2 seconds } } if (key_event == A_KEY_HOLD_5S) { if (SETTING_CHAR(C_DISABLE_UDP_BEACON) != 0) // toggle UDP beacon { SETTING_CHAR(C_DISABLE_UDP_BEACON) = 0; // beacon is now on dhcp_init(0); // switch on DHCP wm8510_beep(50, 1200, 100); snmp_reset_cmnty = 1; } else { SETTING_CHAR(C_DISABLE_UDP_BEACON) = 1; // // beacon is now off wm8510_beep(800, 300, 100); } } if (key_event == A_KEY_HOLD_10S) { if ((snmp_reset_cmnty == 2) && (SETTING_CHAR(C_DISABLE_UDP_BEACON) == 0)) { settings.s.snmp_cmnty[0] = 0; // erase first byte, new string will then // be generated automatically wm8510_beep(500, 1200, 100); snmp_reset_cmnty = 0; } } } else { if (snmp_reset_cmnty == 1) { if ((key_num == A_KEY_BUTTON_UP) && (key_event == A_KEY_HOLD_2S)) { snmp_reset_cmnty = 2; } } int res = 0; if (layer_num == VDISP_CURRENT_LAYER) { if (current_app->key_event_handler != NULL) { res = current_app->key_event_handler(current_app, key_num, key_event); } } else { app_context_t * tmp_app = app_list_head; while (tmp_app != NULL) { if ((tmp_app->screen_num == layer_num) && (tmp_app->key_event_handler != NULL)) { res = tmp_app->key_event_handler(tmp_app, key_num, key_event); break; } tmp_app = tmp_app->next; } } if (res == 0) // handler didn't use this event { if (((key_event == A_KEY_PRESSED) || (key_event == A_KEY_REPEAT)) && (!r2cs_flag)) { switch (key_num) { case A_KEY_BUTTON_UP: set_speaker_volume(1); break; case A_KEY_BUTTON_DOWN: set_speaker_volume(0); break; } } } } }