diff --git a/src/gui/cam_menu.cpp b/src/gui/cam_menu.cpp index b2188c4a9..0db29fb49 100644 --- a/src/gui/cam_menu.cpp +++ b/src/gui/cam_menu.cpp @@ -163,7 +163,6 @@ int CCAMMenuHandler::doMainMenu() #endif cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_RESET_STANDBY, &g_settings.ci_standby_reset, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); } - cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_SAVE_PINCODE, &g_settings.ci_save_pincode, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this)); #if HAVE_LIBSTB_HAL cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_CHECK_LIVE_SLOT, &g_settings.ci_check_live, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this)); #endif @@ -222,6 +221,7 @@ if (i == 0) { // only for slot 0 valid - fix later #endif cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_RPR, &g_settings.ci_rpr[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this)); cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_IGNORE_MSG, &g_settings.ci_ignore_messages[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true)); + cammenu->addItem(new CMenuOptionChooser(LOCALE_CI_SAVE_PINCODE, &g_settings.ci_save_pincode[i], OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true, this)); } } else { snprintf(str1, sizeof(str1), "%s %d", g_Locale->getText(LOCALE_CI_EMPTY), i); @@ -489,16 +489,16 @@ int CCAMMenuHandler::handleCamMsg(const neutrino_msg_t msg, neutrino_msg_data_t std::string ENQAnswer; - if (/* !from_menu && */ g_settings.ci_save_pincode && pMmiEnquiry->blind != 0 && (int) g_settings.ci_pincode.length() == pMmiEnquiry->answerlen) { + if (/* !from_menu && */ g_settings.ci_save_pincode[curslot] && pMmiEnquiry->blind != 0 && (int) g_settings.ci_pincode[curslot].length() == pMmiEnquiry->answerlen) { static int acount = 0; static time_t last_ask = 0; - ENQAnswer = g_settings.ci_pincode; + ENQAnswer = g_settings.ci_pincode[curslot]; printf("CCAMMenuHandler::handleCamMsg: using saved answer [%s] (#%d, time diff %d)\n", ENQAnswer.c_str(), acount, (int) (time_monotonic() - last_ask)); if ((time_monotonic() - last_ask) < 10) { acount++; if (acount > 4) - g_settings.ci_pincode.clear(); + g_settings.ci_pincode[curslot].clear(); } else { last_ask = time_monotonic(); acount = 0; @@ -507,7 +507,7 @@ int CCAMMenuHandler::handleCamMsg(const neutrino_msg_t msg, neutrino_msg_data_t CEnquiryInput *Inquiry = new CEnquiryInput((char *)convertDVBUTF8(pMmiEnquiry->enquiryText, strlen(pMmiEnquiry->enquiryText), 0).c_str(), &ENQAnswer, pMmiEnquiry->answerlen, pMmiEnquiry->blind != 0, NONEXISTANT_LOCALE); Inquiry->exec(NULL, ""); delete Inquiry; - g_settings.ci_pincode = ENQAnswer; + g_settings.ci_pincode[curslot] = ENQAnswer; } printf("CCAMMenuHandler::handleCamMsg: input=[%s]\n", ENQAnswer.c_str()); @@ -640,7 +640,7 @@ bool CCAMMenuHandler::changeNotify(const neutrino_locale_t OptionName, void * Da int enabled = *(int *) Data; if (!enabled) { printf("CCAMMenuHandler::changeNotify: clear saved pincode\n"); - g_settings.ci_pincode.clear(); + g_settings.ci_pincode[CISlot].clear(); } } #if HAVE_LIBSTB_HAL diff --git a/src/neutrino.cpp b/src/neutrino.cpp index 8774ff299..b91fe1325 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -505,10 +505,12 @@ int CNeutrinoApp::loadSetup(const char * fname) for (int i = 0; i < cCA::GetInstance()->GetNumberCISlots(); i++) { sprintf(cfg_key, "ci_ignore_messages_%d", i); g_settings.ci_ignore_messages[i] = configfile.getInt32(cfg_key, 0); + sprintf(cfg_key, "ci_save_pincode_%d", i); + g_settings.ci_save_pincode[i] = configfile.getInt32(cfg_key, 0); + sprintf(cfg_key, "ci_pincode_%d", i); + g_settings.ci_pincode[i] = configfile.getString(cfg_key, ""); } - g_settings.ci_save_pincode = configfile.getInt32("ci_save_pincode", 0); // TODO: for each slot g_settings.ci_check_live = configfile.getInt32("ci_check_live", 0); - g_settings.ci_pincode = configfile.getString("ci_pincode", ""); // TODO: for each slot g_settings.ci_tuner = configfile.getInt32("ci_tuner", -1); g_settings.ci_rec_zapto = configfile.getInt32("ci_rec_zapto", 0); //NI g_settings.ci_mode = configfile.getInt32("ci_mode", 0); //NI @@ -1508,10 +1510,13 @@ void CNeutrinoApp::saveSetup(const char * fname) for (int i = 0; i < cCA::GetInstance()->GetNumberCISlots(); i++) { sprintf(cfg_key, "ci_ignore_messages_%d", i); configfile.setInt32(cfg_key, g_settings.ci_ignore_messages[i]); + sprintf(cfg_key, "ci_save_pincode_%d", i); + configfile.setInt32(cfg_key, g_settings.ci_save_pincode[i]); + sprintf(cfg_key, "ci_pincode_%d", i); + configfile.setString(cfg_key, g_settings.ci_pincode[i]); } - configfile.setInt32("ci_save_pincode", g_settings.ci_save_pincode); // TODO: for each slot + configfile.setInt32("ci_check_live", g_settings.ci_check_live); - configfile.setString("ci_pincode", g_settings.ci_pincode); // TODO: for each slot configfile.setInt32("ci_tuner", g_settings.ci_tuner); configfile.setInt32("ci_rec_zapto", g_settings.ci_rec_zapto); //NI configfile.setInt32("ci_mode", g_settings.ci_mode); //NI diff --git a/src/system/settings.h b/src/system/settings.h index 4edd09a0b..a07f18679 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -291,12 +291,13 @@ struct SNeutrinoSettings int ci_rpr[4]; #endif int ci_ignore_messages[4]; - int ci_save_pincode; // TODO: for each slot + int ci_save_pincode[4]; + std::string ci_pincode[4]; int ci_check_live; int ci_tuner; int ci_rec_zapto; //NI int ci_mode; //NI - std::string ci_pincode; // TODO: for each slot + int radiotext_enable; int webradio_xml_auto; int webtv_xml_auto;