From ba1f0ceb83c98816a4f13e20f174bd0c31f2e79b Mon Sep 17 00:00:00 2001 From: focus Date: Mon, 15 Mar 2010 20:49:03 +0000 Subject: [PATCH] - network menu (#264) - tune timeout (#266) - satfinder (#269) - tuxtxt: new monospace font to support more languages option to select teletext font charset selection from pmt more menu languages from tuxbox cvs cleanup sutitiles start screen needs testing. git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@486 e54a6e83-5905-42d5-8d5c-058d10e6a962 --- data/fonts/DejaVuLGCSansMono-Bold.LICENSE | 98 ++++ data/fonts/DejaVuLGCSansMono-Bold.ttf | Bin 0 -> 229384 bytes data/locale/english.locale | 3 +- lib/libtuxtxt/teletext.h | 2 +- lib/libtuxtxt/tuxtxt.cpp | 363 +++++++------- lib/libtuxtxt/tuxtxt.h | 552 ++++++++++++---------- lib/libtuxtxt/tuxtxt2.conf | 2 +- lib/libtuxtxt/tuxtxt_common.h | 6 +- src/gui/audio_select.cpp | 2 +- src/gui/motorcontrol.cpp | 24 +- src/neutrino.cpp | 23 +- src/neutrino_menue.cpp | 8 +- src/system/configure_network.cpp | 21 + src/system/configure_network.h | 1 + src/system/locals.h | 1 + src/system/locals_intern.h | 1 + src/system/setting_helpers.cpp | 9 +- src/system/settings.h | 1 + src/zapit/include/zapit/channel.h | 3 + src/zapit/src/channel.cpp | 1 + src/zapit/src/pmt.cpp | 9 +- src/zapit/src/zapit.cpp | 16 +- 22 files changed, 715 insertions(+), 431 deletions(-) create mode 100644 data/fonts/DejaVuLGCSansMono-Bold.LICENSE create mode 100644 data/fonts/DejaVuLGCSansMono-Bold.ttf diff --git a/data/fonts/DejaVuLGCSansMono-Bold.LICENSE b/data/fonts/DejaVuLGCSansMono-Bold.LICENSE new file mode 100644 index 000000000..635e609c8 --- /dev/null +++ b/data/fonts/DejaVuLGCSansMono-Bold.LICENSE @@ -0,0 +1,98 @@ +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. Glyphs imported from Arev fonts are (c) Tavmjung Bah (see below) + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. + +Arev Fonts Copyright +------------------------------ + +Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and +associated documentation files (the "Font Software"), to reproduce +and distribute the modifications to the Bitstream Vera Font Software, +including without limitation the rights to use, copy, merge, publish, +distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to +the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Tavmjong Bah" or the word "Arev". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Tavmjong Bah Arev" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the name of Tavmjong Bah shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Font Software without prior written authorization +from Tavmjong Bah. For further information, contact: tavmjong @ free +. fr. + +$Id: LICENSE 778 2006-04-20 18:14:24Z moyogo $ diff --git a/data/fonts/DejaVuLGCSansMono-Bold.ttf b/data/fonts/DejaVuLGCSansMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b55beca476eced84389645bf45a5ac84815556b7 GIT binary patch literal 229384 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­2U;6SBl*kD>_YJ zH73|}tRkV)NmCEn{D{;Gn-&l6ChqgFM)@mtQ}eT;Mye&tnAMcaa}@OZdSZ5rg%cQ#uJ~=IGHZ^eem#M1yKzR zjke@#MtwafBSmj^dyK|x=je(gvsIr^f1JJi+}2{?wK)r5pUuZejOiW7qS`dE03v#fHrkSps0L|;MoErVma(((Y_ed#K zwK;{w#htGSJrFC+l15d=B&M0aDABLc)|NX+kM0K>3I@FuPKh-qL`*fM^wIYqw?;}U zQtEm{CYM_?`ms|tcBgmx+mJ+{4D(=P5{OmV&=oz-#Vz2do*_X~s$g*zxlcGF{GOj1fv4gs= z>g#t!^{B7!)JRBUjr0V+oDfMdzp{-I^^GKCr1xWMPqs3%dky9Ke22C$iO|cf`C#xc z^jj_59+O2Zoca4NsTMxLp^y*1V3DgzHic+H+<{_D)6f(oIm<-X_3rIkuO}(Jdta#~ zh|&`5h)A#HE#aFM?_vM^lP#gNMaxCB#p^0PVOb^ zXa`;9@85iy&_4T6D;vr+LxqUNgx@WSLy;8g%^G2XviEZYM zK#J%Ietlf(%P#`-sW8}8-jH6ws-{KIq}B=d3%j6!zbO1e_y`)+m%?%3l<>W9PWVZ< zAp9;cLNOPbNUX$8GGLm@BRnvS-*}9XTqf81qHQE>pNG)2+!(QZIn$U)s zEr?_`Hy;3$B`G%0DW5sSoR-@OI|TRx!M~ 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

ZVfZAaz?VpcoL4V2)N5aS#CQzw-EFQ1Pt2mk;8 literal 0 HcmV?d00001 diff --git a/data/locale/english.locale b/data/locale/english.locale index 211254d73..08141e6bb 100644 --- a/data/locale/english.locale +++ b/data/locale/english.locale @@ -222,6 +222,7 @@ colorchooser.red red colormenu.background Background colormenu.fade Fade menus colormenu.font Font size +colormenu.font_ttx Teletext font colormenu.gtx_alpha Transparency (GTX) colormenu.head Color Settings colormenu.menucolors Menucolor @@ -981,7 +982,7 @@ extra.zapit_menu Zapit options extra.zapit_make_bouquet Make Remaining Channels list extra.zapit_save_last_chan Save last channel extra.zapit_motor_speed Motor moving speed (10 = 1deg/sec) -extra.zapit_fe_timeout Tune timeout +extra.zapit_fe_timeout Tune timeout (1 = 10 msec) extra.add_to_bouquet Add to bouquet extra.key_list_start home extra.key_list_end end diff --git a/lib/libtuxtxt/teletext.h b/lib/libtuxtxt/teletext.h index 1fafd7a5c..6bc317171 100644 --- a/lib/libtuxtxt/teletext.h +++ b/lib/libtuxtxt/teletext.h @@ -9,6 +9,6 @@ extern int tuxtx_main(int _rc, int pid, int page = 0); void tuxtx_stop_subtitle(); int tuxtx_subtitle_running(int *pid, int *page, int *running); void tuxtx_pause_subtitle(bool pause = 1); -void tuxtx_set_pid(int pid, int page); +void tuxtx_set_pid(int pid, int page, char * cc); #endif diff --git a/lib/libtuxtxt/tuxtxt.cpp b/lib/libtuxtxt/tuxtxt.cpp index 2653ede78..b36cf8ef2 100644 --- a/lib/libtuxtxt/tuxtxt.cpp +++ b/lib/libtuxtxt/tuxtxt.cpp @@ -21,10 +21,19 @@ extern cVideo * videoDecoder; +static pthread_t ttx_sub_thread; +static int reader_running; +static int ttx_paused; +static int ttx_req_pause; +static int sub_pid, sub_page; +static bool use_gui; +static int cfg_national_subset; + +#define USE_FBPAN // FBIOPAN_DISPLAY seems to be working in current driver + void FillRect(int x, int y, int w, int h, int color) { unsigned char *p = lfb + x*4 + y * fix_screeninfo.line_length; -#if 1 unsigned int col = bgra[color][3] << 24 | bgra[color][2] << 16 | bgra[color][1] << 8 | bgra[color][0]; if (w > 0) for (int count = 0; count < h; count++) { @@ -33,18 +42,6 @@ void FillRect(int x, int y, int w, int h, int color) *(dest0++) = col; p += fix_screeninfo.line_length; } -#else - int xtmp; - if (w > 0) - for ( ; h > 0 ; h--) - { - for (xtmp=0; xtmp<=w; xtmp++) - { - memcpy(p+xtmp*4,bgra[color],4); - } - p += fix_screeninfo.line_length; - } -#endif } void FillBorder(int color) @@ -222,14 +219,13 @@ void RenderClearMenuLineBB(char *p, tstPageAttr *attrcol, tstPageAttr *attr) void ClearBB(int color) { - FillRect(0,(var_screeninfo.yres-var_screeninfo.yoffset),var_screeninfo.xres,var_screeninfo.yres, color); - //FillRect(0,(var_screeninfo.yres-var_screeninfo.yoffset),fix_screeninfo.line_length,var_screeninfo.yres, color); + FillRect(0, (var_screeninfo.yres - var_screeninfo.yoffset), var_screeninfo.xres, var_screeninfo.yres, color); } void ClearFB(int /*color*/) { - memset(lfb,0, var_screeninfo.yres*fix_screeninfo.line_length); - //FillRect(0,var_screeninfo.yoffset,fix_screeninfo.line_length,var_screeninfo.yres,color); + //memset(lfb,0, var_screeninfo.yres*fix_screeninfo.line_length); + CFrameBuffer::getInstance()->paintBackground(); } void ClearB(int color) @@ -237,7 +233,6 @@ void ClearB(int color) FillRect(0,0,var_screeninfo.xres,var_screeninfo.yres*2,color); } - int GetCurFontWidth() { int mx = (displaywidth)%(40-nofirst); // # of unused pixels @@ -277,7 +272,6 @@ void setfontwidth(int newwidth) } } - void setcolors(unsigned short *pcolormap, int offset, int number) { int i,trans_tmp; @@ -305,7 +299,6 @@ void setcolors(unsigned short *pcolormap, int offset, int number) } } - /* hexdump of page contents to stdout for debugging */ void dump_page() { @@ -329,7 +322,6 @@ void dump_page() } } - /* get object data */ /* in: absolute triplet number (0..506, start at packet 3 byte 1) */ /* in: pointer to cache struct of page data */ @@ -1467,27 +1459,30 @@ void eval_l25() } } - if (boxed || transpmode) -// FullScrColor = transp; + if (boxed || transpmode) { FillBorder(transp); - else + } else if(use_gui) { FillBorder(FullScrColor); + } if (colortable) /* as late as possible to shorten the time the old page is displayed with the new colors */ setcolors(colortable, 16, 16); /* set colors for CLUTs 2+3 */ } /* is_dec(page) */ - } /****************************************************************************** * main loop * ******************************************************************************/ - -static pthread_t ttx_sub_thread; -static int reader_running; -static int ttx_paused; -static int ttx_req_pause; -static int sub_pid, sub_page; -static bool use_gui; +static void cleanup_fb_pan() +{ +#ifdef USE_FBPAN + if (var_screeninfo.yoffset) + { + var_screeninfo.yoffset = 0; + if (ioctl(fb, FBIOPAN_DISPLAY, &var_screeninfo) == -1) + perror("TuxTxt "); + } +#endif +} static void* reader_thread(void * /*arg*/) { @@ -1506,6 +1501,7 @@ static void* reader_thread(void * /*arg*/) } if(!ttx_paused) CleanUp(); + cleanup_fb_pan(); tuxtxt_close(); printf("TuxTxt subtitle thread stopped\n"); pthread_exit(NULL); @@ -1527,6 +1523,7 @@ void tuxtx_pause_subtitle(bool pause) while(!ttx_paused) usleep(10); printf("TuxTxt subtitle paused\n"); + cleanup_fb_pan(); } } @@ -1541,14 +1538,16 @@ void tuxtx_stop_subtitle() ttx_paused = 0; } -void tuxtx_set_pid(int pid, int page) +void tuxtx_set_pid(int pid, int page, char * cc) { if(reader_running) tuxtx_stop_subtitle(); sub_pid = pid; sub_page = page; - printf("TuxTxt subtitle set pid %d page %d\n", sub_pid, sub_page); + + cfg_national_subset = GetNationalSubset(cc); + printf("TuxTxt subtitle set pid %d page %d lang %s (%d)\n", sub_pid, sub_page, cc, cfg_national_subset); #if 0 ttx_paused = 1; if(sub_pid && sub_page) @@ -1578,6 +1577,7 @@ int tuxtx_main(int _rc, int pid, int page) char cvs_revision[] = "$Revision: 1.95 $"; use_gui = 1; + boxed = 0; //printf("to init tuxtxt\n");fflush(stdout); #if !TUXTXT_CFG_STANDALONE int initialized = tuxtxt_init(); @@ -1587,6 +1587,7 @@ int tuxtx_main(int _rc, int pid, int page) sub_page = tuxtxt_cache.page = page; sub_pid = pid; use_gui = 0; + boxed = 1; } #endif @@ -1645,7 +1646,8 @@ int tuxtx_main(int _rc, int pid, int page) ex = x + w - tx; sy = y; ey = y + h; -printf("[tuxtxt] screen is %dx%d at %dx%d border %d\n", ex-sx, ey-sy, sx, sy, tx); + + printf("[tuxtxt] screen is %dx%d at %dx%d border %d\n", ex-sx, ey-sy, sx, sy, tx); /* initialisations */ transpmode = 0; @@ -1796,10 +1798,6 @@ printf("[tuxtxt] screen is %dx%d at %dx%d border %d\n", ex-sx, ey-sy, sx, sy, tx /* exit */ CleanUp(); -#if 0 - close(rc); - close(lcd); -#endif close(fb); #if 1 @@ -1834,16 +1832,17 @@ FT_Error MyFaceRequester(FTC_FaceID face_id, FT_Library plibrary, FT_Pointer /*r /****************************************************************************** * Init * ******************************************************************************/ - +extern std::string ttx_font_file; +static bool ft_init_done = false; int Init() { int error, i; unsigned char magazine; + static std::string font_file; /* init data */ - - //page_atrb[32] = transp<<4 | transp; + //page_atrb[32] = transp<<4 | transp; inputcounter = 2; for (magazine = 1; magazine < 9; magazine++) @@ -1852,7 +1851,7 @@ int Init() tuxtxt_cache.current_subpage [magazine] = -1; } #if TUXTXT_CFG_STANDALONE -/* init data */ + /* init data */ memset(&tuxtxt_cache.astCachetable, 0, sizeof(tuxtxt_cache.astCachetable)); memset(&tuxtxt_cache.subpagetable, 0xFF, sizeof(tuxtxt_cache.subpagetable)); memset(&tuxtxt_cache.astP29, 0, sizeof(tuxtxt_cache.astP29)); @@ -1878,7 +1877,7 @@ int Init() next_10 = 0x100; tuxtxt_cache.subpage = tuxtxt_cache.subpagetable[tuxtxt_cache.page]; if (tuxtxt_cache.subpage == 0xff) - tuxtxt_cache.subpage = 0; + tuxtxt_cache.subpage = 0; tuxtxt_cache.pageupdate = 0; @@ -1896,8 +1895,8 @@ int Init() screen_mode2 = 0; color_mode = 10; trans_mode = 10; - menulanguage = 0; /* german */ - national_subset = 0;/* default */ + menulanguage = 1; /* english */ + /*national_subset = 0;*//* default */ auto_national = 1; swapupdown = 0; showhex = 0; @@ -1905,7 +1904,7 @@ int Init() show39 = 1; showl25 = 1; dumpl25 = 0; - usettf = 0; + usettf = 1; TTFWidthFactor16 = 28; TTFHeightFactor16 = 16; TTFShiftX = 0; @@ -1987,32 +1986,8 @@ int Init() savedscreenmode = screenmode; national_subset_secondary = NAT_DEFAULT; - - /* init fontlibrary */ - if ((error = FT_Init_FreeType(&library))) - { - printf("TuxTxt ", error); - return 0; - } - - if ((error = FTC_Manager_New(library, 7, 2, 0, &MyFaceRequester, NULL, &manager))) - { - FT_Done_FreeType(library); - printf("TuxTxt \n", error); - return 0; - } - - if ((error = FTC_SBitCache_New(manager, &cache))) - { - FTC_Manager_Done(manager); - FT_Done_FreeType(library); - printf("TuxTxt \n", error); - return 0; - } - fontwidth = 0; /* initialize at first setting */ - /* calculate font dimensions */ displaywidth = (ex-sx); fontheight = (ey-sy) / 25; //21; @@ -2037,6 +2012,7 @@ int Init() StartX = sx; //+ (((ex-sx) - 40*fontwidth) / 2); StartY = sy + (((ey-sy) - 25*fontheight) / 2); +#if 0 if (usettf) { typettf.face_id = (FTC_FaceID) TUXTXTTTFVAR; @@ -2062,67 +2038,76 @@ int Init() return 0; } } - ascender = (usettf ? fontheight * face->ascender / face->units_per_EM : 16); +#endif + if(!ft_init_done || font_file != ttx_font_file) { + printf("TuxTxt: init fontlibrary\n"); + if(ft_init_done) { + FTC_Manager_Done(manager); + FT_Done_FreeType(library); + ft_init_done = false; + } + /* init fontlibrary */ + if ((error = FT_Init_FreeType(&library))) + { + printf("TuxTxt ", error); + return 0; + } + + if ((error = FTC_Manager_New(library, 7, 2, 1024*1024, &MyFaceRequester, NULL, &manager))) + { + FT_Done_FreeType(library); + printf("TuxTxt \n", error); + return 0; + } + + if ((error = FTC_SBitCache_New(manager, &cache))) + { + FTC_Manager_Done(manager); + FT_Done_FreeType(library); + printf("TuxTxt \n", error); + return 0; + } + + if (usettf) { + printf("TuxTxt: using font %s\n", ttx_font_file.c_str()); + typettf.face_id = (FTC_FaceID) ttx_font_file.c_str(); + typettf.height = (FT_UShort) fontheight * TTFHeightFactor16 / 16; + } else { + typettf.face_id = (FTC_FaceID) TUXTXTOTB; + typettf.width = (FT_UShort) 23; + typettf.height = (FT_UShort) 23; + } + + typettf.flags = FT_LOAD_MONOCHROME; + + if ((error = FTC_Manager_LookupFace(manager, typettf.face_id, &face))) + { + printf("TuxTxt \n", error); + FTC_Manager_Done(manager); + FT_Done_FreeType(library); + return 0; + } + font_file = ttx_font_file; + ft_init_done = true; + + ascender = (usettf ? fontheight * face->ascender / face->units_per_EM : 16); + } #if TUXTXT_DEBUG printf("TuxTxt \n", - fontheight, fontwidth, fontwidth_small, fontwidth_topmenumain, fontwidth_topmenusmall, - ymosaic[0], ymosaic[1], ymosaic[2], StartX, StartY, ascender); + fontheight, fontwidth, fontwidth_small, fontwidth_topmenumain, fontwidth_topmenusmall, + ymosaic[0], ymosaic[1], ymosaic[2], StartX, StartY, ascender); #endif -#if 0 - /* get fixed screeninfo */ - if (ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) - { - perror("TuxTxt "); - return 0; - } - - /* get variable screeninfo */ - if (ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("TuxTxt "); - return 0; - } - - /* set variable screeninfo for double buffering */ - var_screeninfo.yoffset = 0; -#endif -#if 0 - var_screeninfo.yres_virtual = 2*var_screeninfo.yres; - var_screeninfo.xres_virtual = var_screeninfo.xres; - - if (ioctl(fb, FBIOPUT_VSCREENINFO, &var_screeninfo) == -1) - { - perror("TuxTxt "); - return 0; - } - - if (ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) - { - perror("TuxTxt "); - return 0; - } -#endif #if TUXTXT_DEBUG printf("TuxTxt \n", - var_screeninfo.xres, var_screeninfo.yres, - var_screeninfo.xres_virtual, var_screeninfo.yres_virtual, - var_screeninfo.yoffset); + var_screeninfo.xres, var_screeninfo.yres, + var_screeninfo.xres_virtual, var_screeninfo.yres_virtual, + var_screeninfo.yoffset); #endif - /* set new colormap */ setcolors((unsigned short *)defaultcolors, 0, SIZECOLTABLE); -#if 0 - /* map framebuffer into memory */ - lfb = (unsigned char*)mmap(0, fix_screeninfo.smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fb, 0); - if (!lfb) - { - perror("TuxTxt "); - return 0; - } -#endif ClearBB(transp); /* initialize backbuffer */ for (i = 0; i < 40 * 25; i++) { @@ -2143,7 +2128,6 @@ int Init() { FTC_Manager_Done(manager); FT_Done_FreeType(library); - //munmap(lfb, fix_screeninfo.smem_len); return 0; } @@ -2162,7 +2146,11 @@ int Init() { SDT_ready = 0; getpidsdone = 0; -// tuxtxt_cache.pageupdate = 1; /* force display of message page not found (but not twice) */ + //getpidsdone = GetTeletextPIDs(false); + if(auto_national && cfg_national_subset) + national_subset = cfg_national_subset; + printf("Tuxtxt: national_subset %d (cfg %d)\n", national_subset, cfg_national_subset); + // tuxtxt_cache.pageupdate = 1; /* force display of message page not found (but not twice) */ } #if TUXTXT_CFG_STANDALONE @@ -2173,7 +2161,12 @@ int Init() #endif fcntl(rc, F_SETFL, O_NONBLOCK); gethotlist(); - SwitchScreenMode(screenmode); + + if(use_gui) + SwitchScreenMode(screenmode); + else + SwitchScreenMode(0); + prevscreenmode = screenmode; printf("TuxTxt: init ok\n"); @@ -2205,12 +2198,17 @@ void CleanUp() //tuxtxt_stop(); #endif - memset(lfb,0, var_screeninfo.yres*fix_screeninfo.line_length); +#ifdef USE_FBPAN + cleanup_fb_pan(); +#endif + //memset(lfb,0, var_screeninfo.yres*fix_screeninfo.line_length); + CFrameBuffer::getInstance()->paintBackground(); +#if 0 /* close freetype */ FTC_Manager_Done(manager); FT_Done_FreeType(library); - +#endif if (hotlistchanged) savehotlist(); @@ -2348,13 +2346,15 @@ int GetTeletextPIDs() pid_table[pids_found].national_subset = NAT_DEFAULT; /* use default charset */ } -#if TUXTXT_DEBUG - printf("TuxTxt \n", - pid_table[pids_found].service_id, - country_code, - pid_table[pids_found].national_subset, - (pid_table[pids_found].vtxt_pid == tuxtxt_cache.vtxtpid) ? " * " : "" - ); +#if 1 // TUXTXT_DEBUG + printf("TuxTxt \n", + pids_found, + pid_table[pids_found].service_id, + pid_table[pids_found].vtxt_pid, + country_code, + pid_table[pids_found].national_subset, + (pid_table[pids_found].vtxt_pid == tuxtxt_cache.vtxtpid) ? " * " : "" + ); #endif pids_found++; @@ -2412,6 +2412,7 @@ skip_pid: diff = 0; pid_table[pid_test].service_name_len = bufSDT[sdt_scan+9 + bufSDT[sdt_scan+8]]; + //FIXME ?? for (byte = 0; byte < pid_table[pid_test].service_name_len; byte++) { if (bufSDT[sdt_scan+10 + bufSDT[sdt_scan + 8] + byte] == (unsigned char)'ִ') @@ -2447,11 +2448,15 @@ skip_pid: if (tuxtxt_cache.vtxtpid != 0) { - while (pid_table[current_service].vtxt_pid != tuxtxt_cache.vtxtpid && current_service < pids_found) + while (pid_table[current_service].vtxt_pid != tuxtxt_cache.vtxtpid && current_service < pids_found) { current_service++; + } - if (auto_national && current_service < pids_found) + if (auto_national && current_service < pids_found) { national_subset = pid_table[current_service].national_subset; + printf("Tuxtxt: GetTeletextPIDs set national_subset -> %d\n", national_subset); + } + printf("Tuxtxt: GetTeletextPIDs national_subset %d\n", national_subset); RenderMessage(ShowServiceName); } @@ -2470,43 +2475,43 @@ int GetNationalSubset(char *cc) { if (memcmp(cc, "cze", 3) == 0 || memcmp(cc, "ces", 3) == 0 || memcmp(cc, "slo", 3) == 0 || memcmp(cc, "slk", 3) == 0) - return 0; + return NAT_CZ; if (memcmp(cc, "eng", 3) == 0) - return 1; + return NAT_UK; if (memcmp(cc, "est", 3) == 0) - return 2; + return NAT_ET; if (memcmp(cc, "fre", 3) == 0 || memcmp(cc, "fra", 3) == 0) - return 3; + return NAT_FR; if (memcmp(cc, "ger", 3) == 0 || memcmp(cc, "deu", 3) == 0) - return 4; + return NAT_DE; if (memcmp(cc, "ita", 3) == 0) - return 5; + return NAT_IT; if (memcmp(cc, "lav", 3) == 0 || memcmp(cc, "lit", 3) == 0) - return 6; + return NAT_LV; if (memcmp(cc, "pol", 3) == 0) - return 7; + return NAT_PL; if (memcmp(cc, "spa", 3) == 0 || memcmp(cc, "por", 3) == 0) - return 8; + return NAT_SP; if (memcmp(cc, "rum", 3) == 0 || memcmp(cc, "ron", 3) == 0) - return 9; + return NAT_RO; if (memcmp(cc, "scc", 3) == 0 || memcmp(cc, "srp", 3) == 0 || memcmp(cc, "scr", 3) == 0 || memcmp(cc, "hrv", 3) == 0 || memcmp(cc, "slv", 3) == 0) - return 10; + return NAT_SR; if (memcmp(cc, "swe", 3) == 0 || memcmp(cc, "dan", 3) == 0 || memcmp(cc, "nor", 3) == 0 || memcmp(cc, "fin", 3) == 0 || memcmp(cc, "hun", 3) == 0) - return 11; + return NAT_SW; if (memcmp(cc, "tur", 3) == 0) - return 12; + return NAT_TR; if (memcmp(cc, "rus", 3) == 0 || memcmp(cc, "bul", 3) == 0) - return NAT_RB; + return NAT_RB; if (memcmp(cc, "ser", 3) == 0 || memcmp(cc, "cro", 3) == 0) - return NAT_SC; + return NAT_SC; if (memcmp(cc, "ukr", 3) == 0) - return NAT_UA; + return NAT_UA; if (memcmp(cc, "gre", 3) == 0) return NAT_GR; if (memcmp(cc, "heb", 3) == 0) @@ -2716,7 +2721,7 @@ void Menu_Init(char *menu, int current_pid, int menuitem, int hotindex) memset(&menu[Menu_Width*MenuLine[M_TRA] + 3+trans_mode ], 0x20,24-trans_mode); memcpy(&menu[Menu_Width*MenuLine[M_AUN] + Menu_Width - 5], &configonoff[menulanguage][auto_national ? 3 : 0], 3); - if (national_subset != NAT_DE) + /*if (national_subset != NAT_DE)*/ memcpy(&menu[Menu_Width*MenuLine[M_NAT] + 2], &countrystring[national_subset*COUNTRYSTRING_WIDTH], COUNTRYSTRING_WIDTH); if (national_subset == 0 || auto_national) menu[MenuLine[M_NAT]*Menu_Width + 1] = ' '; @@ -2749,7 +2754,6 @@ void Menu_Init(char *menu, int current_pid, int menuitem, int hotindex) void ConfigMenu(int Init) { -printf("[tuxtxt] Menu\n"); int val, menuitem = M_Start; int current_pid = 0; int hotindex; @@ -2759,8 +2763,9 @@ printf("[tuxtxt] Menu\n"); char menu[Menu_Height*Menu_Width]; if (auto_national && tuxtxt_cache.astCachetable[tuxtxt_cache.page][tuxtxt_cache.subpage] && - tuxtxt_cache.astCachetable[tuxtxt_cache.page][tuxtxt_cache.subpage]->pageinfo.nationalvalid) + tuxtxt_cache.astCachetable[tuxtxt_cache.page][tuxtxt_cache.subpage]->pageinfo.nationalvalid) { national_subset = countryconversiontable[tuxtxt_cache.astCachetable[tuxtxt_cache.page][tuxtxt_cache.subpage]->pageinfo.national]; + } if (getpidsdone) { @@ -2791,6 +2796,15 @@ printf("[tuxtxt] Menu\n"); /* clear framebuffer */ ClearFB(transp); + + //FIXME this is hack. sometimes menu appear over txt page -> FB pan problem ? + int old_pagecatching = pagecatching; + pagecatching = 1; + ClearBB(transp); + CopyBB2FB(); + pagecatching = old_pagecatching; + // hack end + clearbbcolor = black; Menu_Init(menu, current_pid, menuitem, hotindex); @@ -3277,7 +3291,6 @@ printf("[tuxtxt] Menu\n"); RCCode = -1; if (oldscreenmode) SwitchScreenMode(oldscreenmode); /* restore divided screen */ -printf("[tuxtxt] Menu return from M_PID\n"); transpmode = oldtrans; return; } @@ -3343,6 +3356,8 @@ printf("[tuxtxt] Menu return from M_PID\n"); UpdateLCD(); /* update number of cached pages */ } while ((RCCode != RC_HOME) && (RCCode != RC_DBOX) && (RCCode != RC_MUTE)); + ClearBB(transp); + CopyBB2FB(); /* reset to nonblocking mode */ fcntl(rc, F_SETFL, O_NONBLOCK); tuxtxt_cache.pageupdate = 1; @@ -3350,7 +3365,6 @@ printf("[tuxtxt] Menu return from M_PID\n"); if (oldscreenmode) SwitchScreenMode(oldscreenmode); /* restore divided screen */ transpmode = oldtrans; -printf("[tuxtxt] Menu return\n"); } /****************************************************************************** @@ -3864,13 +3878,12 @@ void SwitchScreenMode(int newscreenmode) /* reset transparency mode */ if (transpmode) transpmode = 0; - //transpmode = 1; //NEW if (newscreenmode < 0) /* toggle mode */ screenmode++; else /* set directly */ screenmode = newscreenmode; -// if ((screenmode > (screen_mode2 ? 2 : 1)) || (screenmode < 0)) + if ((screenmode > 2) || (screenmode < 0)) screenmode = 0; @@ -3883,7 +3896,9 @@ void SwitchScreenMode(int newscreenmode) /* clear back buffer */ clearbbcolor = screenmode?transp:static_cast(FullScrColor); - ClearBB(clearbbcolor); + + if(use_gui) + ClearBB(clearbbcolor); /* set mode */ if (screenmode) /* split */ @@ -3940,7 +3955,6 @@ void SwitchScreenMode(int newscreenmode) videoDecoder->Pig(-1, -1, -1, -1); int x = CFrameBuffer::getInstance()->getScreenX(); - int y = CFrameBuffer::getInstance()->getScreenY(); int w = CFrameBuffer::getInstance()->getScreenWidth(); int h = CFrameBuffer::getInstance()->getScreenHeight(); @@ -4861,7 +4875,8 @@ void RenderMessage(int Message) int fbcolor, timecolor, imenuatr; int pagecolumn; const char *msg; - + int national_subset_back = national_subset; + national_subset = menusubset[menulanguage]; /* 00000000001111111111222222222233333333334 */ /* 01234567890123456789012345678901234567890 */ @@ -4955,6 +4970,7 @@ void RenderMessage(int Message) PosY = StartY + fontheight*21; for (byte = 0; byte < 38; byte++) RenderCharFB(message_6[byte], &atrtable[imenuatr + 2]); + national_subset = national_subset_back; } /****************************************************************************** @@ -5155,10 +5171,10 @@ void RenderPage() national_subset <= NAT_MAX_FROM_HEADER && /* not for GR/RU as long as line28 is not evaluated */ pageinfo && pageinfo->nationalvalid) /* individual subset according to page header */ { - national_subset = countryconversiontable[pageinfo->national]; #if TUXTXT_DEBUG - printf("p%03x b%d n%d v%d i%d\n", tuxtxt_cache.page,national_subset_bak, national_subset, pageinfo->nationalvalid, pageinfo->national); + printf("p%03x bak %d nat %d valid %d info nat %d\n", tuxtxt_cache.page,national_subset_bak, national_subset, pageinfo->nationalvalid, pageinfo->national); #endif + national_subset = countryconversiontable[pageinfo->national]; } /* render page */ PosY = StartY + startrow*fontheight; @@ -5285,13 +5301,14 @@ void showlink(int column, int linkpage) int oldfontwidth = fontwidth; int yoffset; -#if 0 +#ifdef USE_FBPAN if (var_screeninfo.yoffset) yoffset = 0; else yoffset = var_screeninfo.yres; -#endif +#else yoffset = var_screeninfo.yres; //NEW +#endif int abx = ((displaywidth)%(40-nofirst) == 0 ? displaywidth+1 : (displaywidth)/(((displaywidth)%(40-nofirst)))+1);// distance between 'inserted' pixels int width = displaywidth /4; @@ -5321,7 +5338,8 @@ void showlink(int column, int linkpage) else /* display number */ { PosX = StartX + column*width; - FillRect(PosX, PosY+yoffset, displaywidth+sx-PosX, fontheight, atrtable[ATR_L250 + column].bg); + //FillRect(PosX, PosY+yoffset, displaywidth+sx-PosX, fontheight, atrtable[ATR_L250 + column].bg); + FillRect(PosX, PosY+yoffset, width, fontheight, atrtable[ATR_L250 + column].bg); if (linkpage < tuxtxt_cache.page) { line[6] = '<'; @@ -5493,16 +5511,14 @@ void CopyBB2FB() unsigned char *src, *dst, *topsrc; int fillcolor, i, screenwidth, swtmp; -//printf("[tuxtxt] CopyBB2FB: zoommode %d\n", zoommode); - /* line 25 */ - if (!pagecatching) + if (!pagecatching && use_gui) CreateLine25(); + /* copy backbuffer to framebuffer */ if (!zoommode) { - memcpy(lfb, lfb+fix_screeninfo.line_length * var_screeninfo.yres, fix_screeninfo.line_length*var_screeninfo.yres); -#if 0 +#ifdef USE_FBPAN /* if yoffset != 0, we had active page 1, and activate 0 */ /* else active was page 0, activate page 1 */ if (var_screeninfo.yoffset) @@ -5512,12 +5528,15 @@ void CopyBB2FB() if (ioctl(fb, FBIOPAN_DISPLAY, &var_screeninfo) == -1) perror("TuxTxt "); +#else + memcpy(lfb, lfb+fix_screeninfo.line_length * var_screeninfo.yres, fix_screeninfo.line_length*var_screeninfo.yres); #endif /* adapt background of backbuffer if changed */ - if (StartX > 0 && *lfb != *(lfb + fix_screeninfo.line_length * var_screeninfo.yres)) + if (StartX > 0 && *lfb != *(lfb + fix_screeninfo.line_length * var_screeninfo.yres)) { FillBorder(*(lfb + fix_screeninfo.line_length * var_screeninfo.yoffset)); // ClearBB(*(lfb + var_screeninfo.xres * var_screeninfo.yoffset)); + } if (clearbbcolor >= 0) { diff --git a/lib/libtuxtxt/tuxtxt.h b/lib/libtuxtxt/tuxtxt.h index b61468b8e..acc43e402 100644 --- a/lib/libtuxtxt/tuxtxt.h +++ b/lib/libtuxtxt/tuxtxt.h @@ -595,9 +595,8 @@ unsigned char restoreaudio = 0; /* typ_vcr/dvb: v1 a1 v2 a2 v3 a3 (vcr_only: fblk) */ /* language dependent texts */ -#define MAXMENULANGUAGE 8 /* 0 deutsch, 1 englisch, 2 franzצsisch, 3 niederlהndisch, 4 griechisch, 5 italienisch, 6 polnisch, 7 schwedisch, 8 suomi */ -const int menusubset[] = { NAT_DE , NAT_UK , NAT_FR , NAT_UK , NAT_GR , NAT_IT , NAT_PL , NAT_SW, NAT_SW }; -//const int menusubset[] = { NAT_DE , NAT_UK , NAT_FR , NAT_UK , NAT_GR , NAT_IT , NAT_PL , NAT_SW , NAT_SW , NAT_SP, NAT_RB};//FIXME +#define MAXMENULANGUAGE 10 /* 0 deutsch, 1 englisch, 2 franzצsisch, 3 niederlהndisch, 4 griechisch, 5 italienisch, 6 polnisch, 7 schwedisch, 8 suomi, 9 portuguesa, 10 russian */ +const int menusubset[] = { NAT_DE , NAT_UK , NAT_FR , NAT_UK , NAT_GR , NAT_IT , NAT_PL , NAT_SW , NAT_SW , NAT_SP, NAT_RB};//FIXME #define Menu_StartX (StartX + fontwidth*9/2) #define Menu_StartY (StartY + fontheight) @@ -628,11 +627,11 @@ enum const char hotlistpagecolumn[] = /* last(!) column of page to show in each language */ { - 22, 26, 28, 27, 28, 27, 28, 21, 20 + 22, 26, 28, 27, 28, 27, 28, 21, 20, 26, 26 }; const char hotlisttextcolumn[] = { - 24, 14, 14, 15, 14, 15, 14, 23, 22 + 24, 14, 14, 15, 14, 15, 14, 23, 22, 14, 14 }; const char hotlisttext[][2*6] = { @@ -645,6 +644,8 @@ const char hotlisttext[][2*6] = { "dodajkasuj" }, { "ny bort " }, { "lis{{pois " }, + { " adi rem. " }, + { "Dob. Udal." } }; const char configonoff[][2*4] = @@ -658,6 +659,8 @@ const char configonoff[][2*4] = { "wy}w} " }, { "p} av " }, { "EI ON " }, + { "offon " }, + { "w&kwkl" } }; const char menuatr[Menu_Height*(Menu_Width+1)] = { @@ -689,257 +692,312 @@ const char menuatr[Menu_Height*(Menu_Width+1)] = const char configmenu[][Menu_Height*(Menu_Width+1)] = { { +/* 0123456789012345678901234567890 */ + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Konfigurationsmen} הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favoriten: Seite 111 dazu הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Teletext-Auswahl הי" + "דם suchen מהי" + "ד הי" + "ד Bildschirmformat הי" + "ד3 Standard-Modus 16:9 הי" + "ד4 TextBild-Modus 16:9 הי" + "ד הי" + "ד5 Helligkeit הי" + "דם מהי" + "ד6 Transparenz הי" + "דם מהי" + "ד7 nationaler Zeichensatz הי" + "דautomatische Erkennung הי" + "דם מהי" + "דם Sprache/Language deutsch מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Konfigurationsmen} הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Favoriten: Seite 111 dazu הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Teletext-Auswahl הי" - "דם suchen מהי" - "ד הי" - "ד Bildschirmformat הי" - "ד3 Standard-Modus 16:9 הי" - "ד4 TextBild-Modus 16:9 הי" - "ד הי" - "ד5 Helligkeit הי" - "דם מהי" - "ד6 Transparenz הי" - "דם מהי" - "ד7 nationaler Zeichensatz הי" - "דautomatische Erkennung הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Sprache/Language deutsch מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Configuration menu הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favorites: add page 111 הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Teletext selection הי" + "דם search מהי" + "ד הי" + "ד Screen format הי" + "ד3 Standard mode 16:9 הי" + "ד4 Text/TV mode 16:9 הי" + "ד הי" + "ד5 Brightness הי" + "דם מהי" + "ד6 Transparency הי" + "דם מהי" + "ד7 national characterset הי" + "ד automatic recognition הי" + "דם מהי" + "דם Sprache/language english מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Configuration menu הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Favorites: add page 111 הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Teletext selection הי" - "דם search מהי" - "ד הי" - "ד Screen format הי" - "ד3 Standard mode 16:9 הי" - "ד4 Text/TV mode 16:9 הי" - "ד הי" - "ד5 Brightness הי" - "דם מהי" - "ד6 Transparency הי" - "דם מהי" - "ד7 national characterset הי" - "ד automatic recognition הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Sprache/language english מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Menu de configuration הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favorites: ajout. page 111הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Selection de teletext הי" + "דם recherche מהי" + "ד הי" + "ד Format de l'#cran הי" + "ד3 Mode standard 16:9 הי" + "ד4 Texte/TV 16:9 הי" + "ד הי" + "ד5 Clarte הי" + "דם מהי" + "ד6 Transparence הי" + "דם מהי" + "ד7 police nationale הי" + "דreconn. automatique הי" + "דם מהי" + "דם Sprache/language francaisמהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Menu de configuration הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Favorites: ajout. page 111הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Selection de teletext הי" - "דם recherche מהי" - "ד הי" - "ד Format de l'#cran הי" - "ד3 Mode standard 16:9 הי" - "ד4 Texte/TV 16:9 הי" - "ד הי" - "ד5 Clarte הי" - "דם מהי" - "ד6 Transparence הי" - "דם מהי" - "ד7 police nationale הי" - "דreconn. automatique הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Sprache/language francaisמהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Configuratiemenu הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favorieten: toev. pag 111 הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Teletekst-selectie הי" + "דם zoeken מהי" + "ד הי" + "ד Beeldschermformaat הי" + "ד3 Standaardmode 16:9 הי" + "ד4 Tekst/TV mode 16:9 הי" + "ד הי" + "ד5 Helderheid הי" + "דם מהי" + "ד6 Transparantie הי" + "דם מהי" + "ד7 nationale tekenset הי" + "דautomatische herkenning הי" + "דם מהי" + "דם Sprache/Language nederl. מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Configuratiemenu הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Favorieten: toev. pag 111 הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Teletekst-selectie הי" - "דם zoeken מהי" - "ד הי" - "ד Beeldschermformaat הי" - "ד3 Standaardmode 16:9 הי" - "ד4 Tekst/TV mode 16:9 הי" - "ד הי" - "ד5 Helderheid הי" - "דם מהי" - "ד6 Transparantie הי" - "דם מהי" - "ד7 nationale tekenset הי" - "דautomatische herkenning הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Sprache/Language nederl. מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Lemo} quhl_seym הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Vaboq_: pqo_h. sek. 111הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Epikoc^ Teket]nt הי" + "דם Amaf^tgsg מהי" + "ד הי" + "ד Loqv^ oh|mgr הי" + "ד3 Tq|por pq|tupor 16:9 הי" + "ד4 Tq|por eij. jeil. 16:9 הי" + "ד הי" + "ד5 Kalpq|tgta הי" + "דם מהי" + "ד6 Diav\\meia הי" + "דם מהי" + "ד7 Ehmij^ tuposeiq\\ הי" + "דaut|latg amacm~qisg הי" + "דם מהי" + "דם Ck~ssa/Language ekkgmij\\ מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Lemo} quhl_seym הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Vaboq_: pqo_h. sek. 111הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Epikoc^ Teket]nt הי" - "דם Amaf^tgsg מהי" - "ד הי" - "ד Loqv^ oh|mgr הי" - "ד3 Tq|por pq|tupor 16:9 הי" - "ד4 Tq|por eij. jeil. 16:9 הי" - "ד הי" - "ד5 Kalpq|tgta הי" - "דם מהי" - "ד6 Diav\\meia הי" - "דם מהי" - "ד7 Ehmij^ tuposeiq\\ הי" - "דaut|latg amacm~qisg הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Ck~ssa/Language ekkgmij\\ מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Menu di configurazione הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Preferiti: agg. pag.111 הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Selezione televideo הי" + "דם ricerca מהי" + "ד הי" + "ד Formato schermo הי" + "ד3 Modo standard 16:9 הי" + "ד4 Text/Mod.TV 16:9 הי" + "ד הי" + "ד5 Luminosit{ הי" + "דם מהי" + "ד6 Trasparenza הי" + "דם מהי" + "ד7 nazionalita'caratteri הי" + "ד riconoscimento automatico הי" + "דם מהי" + "דם Lingua/Language Italiana מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Menu di configurazione הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Preferiti: agg. pag.111 הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Selezione televideo הי" - "דם ricerca מהי" - "ד הי" - "ד Formato schermo הי" - "ד3 Modo standard 16:9 הי" - "ד4 Text/Mod.TV 16:9 הי" - "ד הי" - "ד5 Luminosit{ הי" - "דם מהי" - "ד6 Trasparenza הי" - "דם מהי" - "ד7 nazionalita'caratteri הי" - "ד riconoscimento automatico הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Lingua/Language Italiana מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Konfiguracja הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Ulubione : kasuj str. 111הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Wyb_r telegazety הי" + "דם szukaj מהי" + "ד הי" + "ד Format obrazu הי" + "ד3 Tryb standard 16:9 הי" + "ד4 Telegazeta/TV 16:9 הי" + "ד הי" + "ד5 Jasno|^ הי" + "דם מהי" + "ד6 Prze~roczysto|^ הי" + "דם מהי" + "ד7 Znaki charakterystyczne הי" + "ד automatyczne rozpozn. הי" + "דם מהי" + "דם J`zyk/Language polski מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Konfiguracja הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Ulubione : kasuj str. 111הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Wyb_r telegazety הי" - "דם szukaj מהי" - "ד הי" - "ד Format obrazu הי" - "ד3 Tryb standard 16:9 הי" - "ד4 Telegazeta/TV 16:9 הי" - "ד הי" - "ד5 Jasno|^ הי" - "דם מהי" - "ד6 Prze~roczysto|^ הי" - "דם מהי" - "ד7 Znaki charakterystyczne הי" - "ד automatyczne rozpozn. הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם J`zyk/Language polski מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Konfigurationsmeny הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favoriter: sida 111 ny הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 TextTV v{ljaren הי" + "דם s|k מהי" + "ד הי" + "ד TV- format הי" + "ד3 Standard l{ge 16:9 הי" + "ד4 Text/Bild l{ge 16:9 הי" + "ד הי" + "ד5 Ljusstyrka הי" + "דם מהי" + "ד6 Genomskinlighet הי" + "דם מהי" + "ד7nationell teckenupps{ttningהי" + "ד automatisk igenk{nning הי" + "דם מהי" + "דם Sprache/language svenska מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Konfigurationsmeny הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Favoriter: sida 111 ny הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 TextTV v{ljaren הי" - "דם s|k מהי" - "ד הי" - "ד TV- format הי" - "ד3 Standard l{ge 16:9 הי" - "ד4 Text/Bild l{ge 16:9 הי" - "ד הי" - "ד5 Ljusstyrka הי" - "דם מהי" - "ד6 Genomskinlighet הי" - "דם מהי" - "ד7nationell teckenupps{ttningהי" - "ד automatisk igenk{nning הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Sprache/language svenska מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Asetusvalikko הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Suosikit: sivu 111 lis{{ הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Tekstikanavan valinta הי" + "דם search מהי" + "ד הי" + "ד N{ytt|tila הי" + "ד3 Vakiotila 16:9 הי" + "ד4 Teksti/TV 16:9 הי" + "ד הי" + "ד5 Kirkkaus הי" + "דם מהי" + "ד6 L{pin{kyvyys הי" + "דם מהי" + "ד7 kansallinen merkist| הי" + "ד automaattinen tunnistus הי" + "דם מהי" + "דם Kieli suomi מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, /* 0000000000111111111122222222223 */ /* 0123456789012345678901234567890 */ - { - "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" - "ד Asetusvalikko הי" - "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" - "ד1 Suosikit: sivu 111 lis{{ הי" - "דםמסע הי" - "ד+-? הי" - "ד הי" - "ד2 Tekstikanavan valinta הי" - "דם search מהי" - "ד הי" - "ד N{ytt|tila הי" - "ד3 Vakiotila 16:9 הי" - "ד4 Teksti/TV 16:9 הי" - "ד הי" - "ד5 Kirkkaus הי" - "דם מהי" - "ד6 L{pin{kyvyys הי" - "דם מהי" - "ד7 kansallinen merkist| הי" - "ד automaattinen tunnistus הי" - "דם DE (#$@[\\]^_`{|}~) מהי" - "דם Kieli suomi מהי" - "וז www.tuxtxt.net x.xx זחי" - "כלללללללללללללללללללללללללללללך" - }, + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Menu de Configuracao הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Favoritos: adi pag. 111 הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 Seleccao Teletext הי" + "דם Procurar מהי" + "ד הי" + "ד formato ecran הי" + "ד3 Standard mode 16:9 הי" + "ד4 Text/TV mode 16:9 הי" + "ד הי" + "ד5 Brilho הי" + "דם מהי" + "ד6 Transparencia הי" + "דם מהי" + "ד7 Caracteres nacionaist הי" + "דreconhecimento utomatico הי" + "דם מהי" + "דם Lingua Portuguesa מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + }, +/* 0000000000111111111122222222223 */ +/* 0123456789012345678901234567890 */ + { + "אבבבבבבבבבבבבבבבבבבבבבבבבבבבבגט" + "ד Konfiguraciq הי" + "וזזזזזזזזזזזזזזזזזזזזזזזזזזזזחי" + "ד1 Faworit&: dob str. 111 הי" + "דםמסע הי" + "ד+-? הי" + "ד הי" + "ד2 W&bor teleteksta הי" + "דם Poisk מהי" + "ד הי" + "ד Format kartinki הי" + "ד3 Stand. revim 16:9 הי" + "ד4 Tekst/TW rev. 16:9 הי" + "ד הי" + "ד5 Qrkostx הי" + "דם מהי" + "ד6 Prozra~nostx הי" + "דם מהי" + "ד7 Ispolxzuem&j alfawit הי" + "ד awtoopredelenie הי" + "דם מהי" + "דם Qz&k: Russkij מהי" + "וז www.tuxtxt.net x.xx זחי" + "כלללללללללללללללללללללללללללללך" + } }; const char catchmenutext[][81] = @@ -962,6 +1020,10 @@ const char catchmenutext[][81] = "0000000011110000000000110000000000000000" }, { " םןנמ valitse סע n{yt{ " "0000000011110000000000110000000000000000" }, + { " םןנמ seleccao סע mostrar " + "0000000011110000000000110000000000000000" }, + { " םןנמ w&bratx סע pokazatx " + "0000000011110000000000110000000000000000" }, }; const char message_3[][39] = @@ -975,6 +1037,8 @@ const char message_3[][39] = { "ד poszukiwanie sygna}u telegazety הי" }, { "ד s|ker efter TextTV tj{nster הי" }, { "ד etsit{{n Teksti-TV -palvelua הי" }, + { "ד Procurar servicos de teletexto הי" }, + { "ד W&polnqetsq poisk teleteksta הי" }, }; const char message_3_blank[] = "ד הי"; const char message_7[][39] = @@ -988,6 +1052,8 @@ const char message_7[][39] = { "ד brak sygna}u na transponderze הי" }, { "ד ingen TextTV p} denna transponder הי" }, { "ד Ei Teksti-TV:t{ l{hettimell{ הי" }, + { "ד nao ha teletexto no transponder הי" }, + { "ד Na transpondere net teleteksta הי" }, }; const char message_8[][39] = { @@ -1002,10 +1068,12 @@ const char message_8[][39] = { "ד oczekiwanie na stron` 100 הי" }, { "ד v{ntar p} mottagning av sida 100 הי" }, { "ד Odotetaan sivua 100 הי" }, + { "ד esperando recepcao na pag 100 הי" }, + { "ד Ovidanie priema stranic& 100 הי" }, }; const char message8pagecolumn[] = /* last(!) column of page to show in each language */ { - 33, 34, 34, 35, 29, 30, 30, 34, 34 + 33, 34, 34, 35, 29, 30, 30, 34, 34, 32, 34 }; enum /* options for charset */ @@ -1312,9 +1380,7 @@ unsigned char *aShapes[] = aG3_70, aG3_71, aG3_72, aG3_73, aG3_74, aG3_75, aG3_76, aG3_77, aG3_78, aG3_79, aG3_7a, aG3_7b, aG3_7c, aG3_7d, aG3_7e }; - - - +#if 0 /* lcd layout */ const char lcd_layout[] = { @@ -1636,7 +1702,7 @@ const char lcd_digits[] = 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, }; - +#endif /* functions */ void ConfigMenu(int Init); void CleanUp(); diff --git a/lib/libtuxtxt/tuxtxt2.conf b/lib/libtuxtxt/tuxtxt2.conf index 1d8ffd65d..cbde68f1e 100644 --- a/lib/libtuxtxt/tuxtxt2.conf +++ b/lib/libtuxtxt/tuxtxt2.conf @@ -1,7 +1,7 @@ ScreenMode16x9Normal 0 ScreenMode16x9Divided 0 Brightness 10 -MenuLanguage 0 +MenuLanguage 1 AutoNational 1 NationalSubset 5 SwapUpDown 0 diff --git a/lib/libtuxtxt/tuxtxt_common.h b/lib/libtuxtxt/tuxtxt_common.h index 6ef5cd0e9..8708c3821 100644 --- a/lib/libtuxtxt/tuxtxt_common.h +++ b/lib/libtuxtxt/tuxtxt_common.h @@ -720,8 +720,9 @@ void *tuxtxt_CacheThread(void * /*arg*/) } else { - pageinfo_thread->nationalvalid = 1; + //pageinfo_thread->nationalvalid = 1;// FIXME without full eval some is broken pageinfo_thread->national = rev_lut[b1] & 0x07; +//printf("TuxTxt 0: b1=%x\n", rev_lut[b1]); } /* check parity, copy line 0 to cache (start and end 8 bytes are not needed and used otherwise) */ @@ -958,7 +959,8 @@ void *tuxtxt_CacheThread(void * /*arg*/) pageinfo_thread->function = t1 & 0x0f; if (!pageinfo_thread->nationalvalid) { - pageinfo_thread->nationalvalid = 1; +//printf("TuxTxt 28: t1=%x\n", t1>>4); + // pageinfo_thread->nationalvalid = 1; // FIXME without full eval some is broken pageinfo_thread->national = (t1>>4) & 0x07; } } diff --git a/src/gui/audio_select.cpp b/src/gui/audio_select.cpp index cc5f1e5dc..1f2f4ec97 100644 --- a/src/gui/audio_select.cpp +++ b/src/gui/audio_select.cpp @@ -145,7 +145,7 @@ int CAudioSelectMenuHandler::doMenu () char spid[10]; int page = ((sd->teletext_magazine_number & 0xFF) << 8) | sd->teletext_page_number; int pid = sd->pId; - sprintf(spid, "TTX:%d:%03X", sd->pId, page); + sprintf(spid, "TTX:%d:%03X:%s", sd->pId, page, sd->ISO639_language_code.c_str()); char item[64]; sprintf(item, "TTX: %s (pid %x page %03X)", sd->ISO639_language_code.c_str(), sd->pId, page); AudioSelector.addItem(new CMenuForwarderNonLocalized(item /*sd->ISO639_language_code.c_str()*/, diff --git a/src/gui/motorcontrol.cpp b/src/gui/motorcontrol.cpp index 306d37663..ab5a45ad1 100644 --- a/src/gui/motorcontrol.cpp +++ b/src/gui/motorcontrol.cpp @@ -126,6 +126,8 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) sat.position = sit->first; strncpy(sat.satName, get_set.satNameNoDiseqc, 50); satList.push_back(sat); + if(sit->second.motor_position) + motorPosition = sit->second.motor_position; break; } } @@ -154,7 +156,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) while (!istheend) { - uint64_t timeoutEnd = CRCInput::calcTimeoutEnd_MS(250); + uint64_t timeoutEnd = CRCInput::calcTimeoutEnd_MS(100 /*250*/); msg = CRCInput::RC_nokey; while (!(msg == CRCInput::RC_timeout) && (!(msg == CRCInput::RC_home))) @@ -166,13 +168,14 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) if(last_snr < g_snr) { wasgrow = 1; } - //if((last_snr > g_snr) && last_snr > 37000) { + //if((last_snr > g_snr) && last_snr > 37000) if(wasgrow && (last_snr > g_snr) && last_snr > 50) { //printf("Must stop rotor!!!\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); moving = 0; paintStatus(); last_snr = 0; + g_Zapit->tune_TP(TP); } else last_snr = g_snr; } else @@ -195,6 +198,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode); motorStepWest(); paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_red: @@ -203,6 +207,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); moving = 0; paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_3: @@ -210,6 +215,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode); motorStepEast(); paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_4: @@ -217,11 +223,13 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) if(g_settings.rotor_swap) lim_cmd = 0x66; else lim_cmd = 0x67; g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_5: printf("[motorcontrol] 5 key received... disable (soft) limits\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x63, 0, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_6: @@ -229,6 +237,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) if(g_settings.rotor_swap) lim_cmd = 0x67; else lim_cmd = 0x66; g_Zapit->sendMotorCommand(0xE1, 0x31, lim_cmd, 0, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_7: @@ -236,16 +245,19 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, 0, 0); satellitePosition = 0; paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_8: printf("[motorcontrol] 8 key received... enable (soft) limits\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_9: printf("[motorcontrol] 9 key received... (re)-calculate positions\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6F, 1, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_plus: @@ -297,12 +309,14 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] left/1 key received... drive/Step motor west, stepMode: %d\n", stepMode); motorStepWest(); paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_red: case CRCInput::RC_2: printf("[motorcontrol] 2 key received... halt motor\n"); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x60, 0, 0, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_3: @@ -310,12 +324,14 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] right/3 key received... drive/Step motor east, stepMode: %d\n", stepMode); motorStepEast(); paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_green: case CRCInput::RC_5: printf("[motorcontrol] 5 key received... store present satellite number: %d\n", motorPosition); g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6A, 1, motorPosition, 0); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_6: @@ -330,6 +346,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) g_Zapit->sendMotorCommand(0xE0, 0x31, 0x6B, 1, motorPosition, 0); satellitePosition = 0; paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_9: @@ -343,6 +360,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] up key received... increase satellite position: %d\n", ++motorPosition); satellitePosition = 0; paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_minus: @@ -351,6 +369,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) printf("[motorcontrol] down key received... decrease satellite position: %d\n", motorPosition); satellitePosition = 0; paintStatus(); + g_Zapit->tune_TP(TP); break; case CRCInput::RC_blue: @@ -375,6 +394,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) } hide(); + frontend->setTsidOnid(0); return menu_return::RETURN_REPAINT; } diff --git a/src/neutrino.cpp b/src/neutrino.cpp index b1c846f0d..990169c4b 100644 --- a/src/neutrino.cpp +++ b/src/neutrino.cpp @@ -725,6 +725,8 @@ const lcd_setting_struct_t lcd_setting[LCD_SETTING_COUNT] = #define DEFAULT_Y_START 20 #define DEFAULT_X_END 1220 #define DEFAULT_Y_END 560 +std::string ttx_font_file = ""; + int CNeutrinoApp::loadSetup(const char * fname) { char cfg_key[81]; @@ -1064,6 +1066,8 @@ printf("***************************** rec dir %s timeshift dir %s\n", g_settings strcpy(g_settings.softupdate_proxypassword, configfile.getString("softupdate_proxypassword", "" ).c_str()); // strcpy( g_settings.font_file, configfile.getString( "font_file", FONTDIR"/neutrino.ttf" ).c_str() ); + strcpy( g_settings.ttx_font_file, configfile.getString( "ttx_font_file", FONTDIR"/DejaVuLGCSansMono-Bold.ttf" ).c_str() ); + ttx_font_file = g_settings.ttx_font_file; strcpy( g_settings.update_dir, configfile.getString( "update_dir", "/tmp" ).c_str() ); //BouquetHandling g_settings.bouquetlist_mode = configfile.getInt32( "bouquetlist_mode", 0 ); @@ -1554,6 +1558,7 @@ void CNeutrinoApp::saveSetup(const char * fname) #endif configfile.setString("update_dir", g_settings.update_dir); configfile.setString("font_file", g_settings.font_file); + configfile.setString("ttx_font_file", g_settings.ttx_font_file); //BouquetHandling configfile.setInt32( "bouquetlist_mode", g_settings.bouquetlist_mode ); @@ -3600,6 +3605,7 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode) CVFD::getInstance()->setMode(CVFD::MODE_SHUTDOWN); dprintf(DEBUG_INFO, "exit\n"); + StopSubtitles(); g_Zapit->stopPlayBack(); frameBuffer->paintBackground(); @@ -4147,6 +4153,7 @@ printf("CNeutrinoApp::startNextRecording: start to dir %s\n", recordingDir); * CNeutrinoApp - exec, menuitem callback (shutdown) * **************************************************************************************/ void SaveMotorPositions(); + int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey) { // printf("ac: %s\n", actionKey.c_str()); @@ -4427,6 +4434,20 @@ printf("New timeshift dir: %s\n", timeshiftDir); } return menu_return::RETURN_REPAINT; } + else if(actionKey == "ttx_font") { + parent->hide(); + CFileBrowser fileBrowser; + CFileFilter fileFilter; + fileFilter.addFilter("ttf"); + fileBrowser.Filter = &fileFilter; + if (fileBrowser.exec(FONTDIR) == true) { + strcpy(g_settings.ttx_font_file, fileBrowser.getSelectedFile()->Name.c_str()); + ttx_font_file = fileBrowser.getSelectedFile()->Name; + printf("[neutrino] ttx font file %s\n", fileBrowser.getSelectedFile()->Name.c_str()); + SetupFonts(); + } + return menu_return::RETURN_REPAINT; + } else if(actionKey == "movieplugin") { parent->hide(); CMenuWidget MoviePluginSelector(LOCALE_MOVIEPLAYER_DEFPLUGIN, NEUTRINO_ICON_FEATURES); @@ -4961,7 +4982,7 @@ void CNeutrinoApp::SelectSubtitles() int page = ((sd->teletext_magazine_number & 0xFF) << 8) | sd->teletext_page_number; printf("CNeutrinoApp::SelectSubtitles: found TTX %s, pid %x page %03X\n", sd->ISO639_language_code.c_str(), sd->pId, page); tuxtx_stop_subtitle(); - tuxtx_set_pid(sd->pId, page); + tuxtx_set_pid(sd->pId, page, (char *) sd->ISO639_language_code.c_str()); return; } } diff --git a/src/neutrino_menue.cpp b/src/neutrino_menue.cpp index f5708cedf..9345e3bcc 100644 --- a/src/neutrino_menue.cpp +++ b/src/neutrino_menue.cpp @@ -1004,12 +1004,12 @@ int CTPSelectHandler::exec(CMenuTarget* parent, const std::string &/*actionkey*/ extern int scan_pids; -#define FAST_SCAN_OPTIONS_COUNT 3 +#define FAST_SCAN_OPTIONS_COUNT 2 const CMenuOptionChooser::keyval FAST_SCAN_OPTIONS[FAST_SCAN_OPTIONS_COUNT] = { { FAST_SCAN_SD, LOCALE_SATSETUP_FASTSCAN_SD }, - { FAST_SCAN_HD, LOCALE_SATSETUP_FASTSCAN_HD }, - { FAST_SCAN_ALL, LOCALE_SATSETUP_FASTSCAN_ALL } + { FAST_SCAN_HD, LOCALE_SATSETUP_FASTSCAN_HD } + /*{ FAST_SCAN_ALL, LOCALE_SATSETUP_FASTSCAN_ALL }*/ }; #define FAST_SCAN_PROV_OPTIONS_COUNT 3 @@ -1244,6 +1244,7 @@ void CNeutrinoApp::InitScanSettings(CMenuWidget &settings) settings.addItem(fsatSetup); settings.addItem(fmotorMenu); } + settings.addItem(new CMenuOptionNumberChooser(LOCALE_EXTRA_ZAPIT_TIMEOUT, (int *)&zapitCfg.feTimeout, true, 0, 100) ); settings.addItem(new CMenuForwarder(LOCALE_SATSETUP_MANUAL_SCAN, true, NULL, manualScan, "", CRCInput::RC_green, NEUTRINO_ICON_BUTTON_GREEN)); settings.addItem(new CMenuForwarder(LOCALE_SATSETUP_AUTO_SCAN, true, NULL, autoScan, "", CRCInput::RC_yellow, NEUTRINO_ICON_BUTTON_YELLOW)); @@ -2350,6 +2351,7 @@ void CNeutrinoApp::InitColorSettings(CMenuWidget &colorSettings, CMenuWidget &fo colorSettings.addItem(GenericMenuSeparatorLine); colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_FONT, true, NULL, &fontSettings, NULL, CRCInput::RC_blue, NEUTRINO_ICON_BUTTON_BLUE) ); colorSettings.addItem( new CMenuForwarder(LOCALE_EPGPLUS_SELECT_FONT_NAME, true, NULL, this, "select_font")); + colorSettings.addItem( new CMenuForwarder(LOCALE_COLORMENU_FONT_TTX, true, NULL, this, "ttx_font")); CMenuWidget *colorSettings_timing = new CMenuWidget(LOCALE_COLORMENU_TIMING, NEUTRINO_ICON_SETTINGS); InitColorSettingsTiming(*colorSettings_timing); diff --git a/src/system/configure_network.cpp b/src/system/configure_network.cpp index f65bed07a..8b3dbfa7d 100644 --- a/src/system/configure_network.cpp +++ b/src/system/configure_network.cpp @@ -29,12 +29,30 @@ CNetworkConfig::CNetworkConfig(void) { char our_nameserver[16]; + netGetNameserver(our_nameserver); nameserver = our_nameserver; inet_static = getInetAttributes("eth0", automatic_start, address, netmask, broadcast, gateway); + + init_vars(); copy_to_orig(); } +void CNetworkConfig::init_vars(void) +{ + char mask[16]; + char _broadcast[16]; + char router[16]; + char ip[16]; + + netGetDefaultRoute(router); + gateway = router; + netGetIP((char *) "eth0", ip, mask, _broadcast); + netmask = mask; + broadcast = _broadcast; + address = ip; +} + void CNetworkConfig::copy_to_orig(void) { orig_automatic_start = automatic_start; @@ -108,6 +126,9 @@ int mysystem(char * cmd, char * arg1, char * arg2) void CNetworkConfig::startNetwork(void) { system("/sbin/ifup -v eth0"); + if (!inet_static) { + init_vars(); + } //mysystem((char *) "ifup", (char *) "-v", (char *) "eth0"); } diff --git a/src/system/configure_network.h b/src/system/configure_network.h index 7993c087d..be90eca74 100644 --- a/src/system/configure_network.h +++ b/src/system/configure_network.h @@ -37,6 +37,7 @@ class CNetworkConfig void copy_to_orig(void); bool modified_from_orig(void); + void init_vars(void); public: bool automatic_start; diff --git a/src/system/locals.h b/src/system/locals.h index 99268fb9e..0fb38b485 100644 --- a/src/system/locals.h +++ b/src/system/locals.h @@ -243,6 +243,7 @@ typedef enum { LOCALE_COLORMENU_BACKGROUND, LOCALE_COLORMENU_FADE, LOCALE_COLORMENU_FONT, + LOCALE_COLORMENU_FONT_TTX, LOCALE_COLORMENU_GTX_ALPHA, LOCALE_COLORMENU_HEAD, LOCALE_COLORMENU_MENUCOLORS, diff --git a/src/system/locals_intern.h b/src/system/locals_intern.h index fbe9af2c1..ec67ebc57 100644 --- a/src/system/locals_intern.h +++ b/src/system/locals_intern.h @@ -243,6 +243,7 @@ const char *locale_real_names[] = { "colormenu.background", "colormenu.fade", "colormenu.font", + "colormenu.font_ttx", "colormenu.gtx_alpha", "colormenu.head", "colormenu.menucolors", diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp index a9f4b4554..93912b205 100644 --- a/src/system/setting_helpers.cpp +++ b/src/system/setting_helpers.cpp @@ -536,6 +536,10 @@ bool CIPChangeNotifier::changeNotify(const neutrino_locale_t, void * Data) CNeutrinoApp::getInstance()->networkConfig.netmask = (_ip[0] == 10) ? "255.0.0.0" : "255.255.255.0"; + sprintf(ip, "%hhu.%hhu.%hhu.1", _ip[0], _ip[1], _ip[2]); + CNeutrinoApp::getInstance()->networkConfig.nameserver = ip; + CNeutrinoApp::getInstance()->networkConfig.gateway = ip; + return true; } @@ -611,8 +615,11 @@ printf("CSubtitleChangeExec::exec: action %s\n", actionKey.c_str()); ptr = strchr(ptr, ':'); ptr++; int page = strtol(ptr, NULL, 16); -printf("CSubtitleChangeExec::exec: TTX, pid %x page %x\n", pid, page); + ptr = strchr(ptr, ':'); + ptr++; +printf("CSubtitleChangeExec::exec: TTX, pid %x page %x lang %s\n", pid, page, ptr); tuxtx_stop_subtitle(); + tuxtx_set_pid(pid, page, ptr); dvbsub_stop(); tuxtx_main(g_RCInput->getFileHandle(), pid, page); } diff --git a/src/system/settings.h b/src/system/settings.h index fd204b977..664d0fe00 100644 --- a/src/system/settings.h +++ b/src/system/settings.h @@ -432,6 +432,7 @@ struct SNeutrinoSettings int zap_cycle; int sms_channel; char font_file[100]; + char ttx_font_file[100]; char update_dir[100]; // USERMENU typedef enum diff --git a/src/zapit/include/zapit/channel.h b/src/zapit/include/zapit/channel.h index 25f85b2e1..4c1d376fd 100644 --- a/src/zapit/include/zapit/channel.h +++ b/src/zapit/include/zapit/channel.h @@ -140,6 +140,7 @@ class CZapitChannel /* from neutrino CChannel class */ uint64_t last_unlocked_EPGid; + std::string ttx_language_code; friend class CChannelList; public: @@ -174,6 +175,7 @@ class CZapitChannel unsigned short getPcrPid(void) { return pcrPid; } unsigned short getPmtPid(void) { return pmtPid; } unsigned short getTeletextPid(void) { return teletextPid; } + const char * getTeletextLang(void) { return ttx_language_code.c_str(); } unsigned short getVideoPid(void) { return videoPid; } unsigned short getPrivatePid(void) { return privatePid; } unsigned short getPreAudioPid(void) { return audioPid; } @@ -193,6 +195,7 @@ class CZapitChannel void setPcrPid(unsigned short pPcrPid) { pcrPid = pPcrPid; } void setPmtPid(unsigned short pPmtPid) { pmtPid = pPmtPid; } void setTeletextPid(unsigned short pTeletextPid) { teletextPid = pTeletextPid; } + void setTeletextLang(char * lang) { ttx_language_code = lang; }; void setVideoPid(unsigned short pVideoPid) { videoPid = pVideoPid; } void setAudioPid(unsigned short pAudioPid) { audioPid = pAudioPid; } void setPrivatePid(unsigned short pPrivatePid) { privatePid = pPrivatePid; } diff --git a/src/zapit/src/channel.cpp b/src/zapit/src/channel.cpp index 5d0c77882..ad4f6ba8f 100644 --- a/src/zapit/src/channel.cpp +++ b/src/zapit/src/channel.cpp @@ -41,6 +41,7 @@ CZapitChannel::CZapitChannel(const std::string & p_name, t_service_id p_sid, t_t //currentEvent = NULL; pmtPid = 0; resetPids(); + ttx_language_code = ""; //printf("NEW CHANNEL %s %x\n", name.c_str(), this); } diff --git a/src/zapit/src/pmt.cpp b/src/zapit/src/pmt.cpp index b041bde66..1cde22922 100644 --- a/src/zapit/src/pmt.cpp +++ b/src/zapit/src/pmt.cpp @@ -143,13 +143,18 @@ printf("descr 0x0A: %02X %02X %02X\n", buffer[pos+2], buffer[pos+3], buffer[pos+ break; case 0x56: /* teletext descriptor */ - for (unsigned char fIdx=0;fIdxelementary_PID, tmpLang); + printf("[pmt] teletext pid %x\n", esInfo->elementary_PID); + for (unsigned char fIdx = 0; fIdx < fieldCount; fIdx++) { memcpy(tmpLang, &buffer[pos + 5*fIdx + 2], 3); tmpLang[3] = '\0'; unsigned char teletext_type=buffer[pos + 5*fIdx + 5]>> 3; unsigned char teletext_magazine_number = buffer[pos + 5*fIdx + 5] & 7; unsigned char teletext_page_number=buffer[pos + 5*fIdx + 6]; +printf("[pmt] teletext type %d mag %d page %d lang %s\n", teletext_type, teletext_magazine_number, teletext_page_number, tmpLang); + if (teletext_type==0x01) + channel->setTeletextLang(tmpLang); if (teletext_type==0x02){ channel->addTTXSubtitle(esInfo->elementary_PID,tmpLang,teletext_magazine_number,teletext_page_number); } else { diff --git a/src/zapit/src/zapit.cpp b/src/zapit/src/zapit.cpp index 9ba716198..cd49be7fb 100644 --- a/src/zapit/src/zapit.cpp +++ b/src/zapit/src/zapit.cpp @@ -516,10 +516,23 @@ printf("[zapit] saving channel, apid %x sub pid %x mode %d volume %d\n", channel dvbsub_start(audio_map_it->second.subpid); #endif dvbsub_setpid(audio_map_it->second.subpid); - tuxtx_set_pid(audio_map_it->second.ttxpid, audio_map_it->second.ttxpage); + + std::string tmplang; + for (int i = 0 ; i < (int)channel->getSubtitleCount() ; ++i) { + CZapitAbsSub* s = channel->getChannelSub(i); + if(s->pId == audio_map_it->second.ttxpid) { + tmplang = s->ISO639_language_code; + break; + } + } + if(tmplang.empty()) + tuxtx_set_pid(audio_map_it->second.ttxpid, audio_map_it->second.ttxpage, (char *) channel->getTeletextLang()); + else + tuxtx_set_pid(audio_map_it->second.ttxpid, audio_map_it->second.ttxpage, (char *) tmplang.c_str()); } else { volume_left = volume_right = def_volume_left; audio_mode = def_audio_mode; + tuxtx_set_pid(0, 0, (char *) channel->getTeletextLang()); } if(audioDecoder) { //audioDecoder->setVolume(volume_left, volume_right); @@ -530,6 +543,7 @@ printf("[zapit] saving channel, apid %x sub pid %x mode %d volume %d\n", channel startPlayBack(channel); printf("[zapit] sending capmt....\n"); + /* currently, recording always starts after zap to channel. * if we not in record mode, we just send new pmt over cam0, * if mode is recording, we zapping from or back to recording channel.