static void ShowNormalText(char * str, bool fromScrollThread = false) { //CVFD:count_down(DEBUG_DEBUG,"j00zek>%s:%s >>>\n", "CVFD::", __func__); int displayDotOnLED = 0; if (j00zekVFDsize == 0) { j00zekDBG(J00ZEK_DBG,"[CVFD] ShowNormalText:j00zekVFDsize=0 exiting\n"); return; } else if (j00zekVFDsize == 4 && str[2] == 0x2E) displayDotOnLED = 1; j00zekDBG(J00ZEK_DBG,"displayDotOnLED=%i\n",displayDotOnLED); if (blocked) { j00zekDBG(J00ZEK_DBG,"[CVFD] - blocked\n"); usleep(SCROLL_TIME); } struct vfd_ioctl_data data; if (!fromScrollThread) { if(vfd_scrollText != 0) { pthread_cancel(vfd_scrollText); pthread_join(vfd_scrollText, NULL); vfd_scrollText = 0; } } if ((strlen(str) > (j00zekVFDsize + displayDotOnLED) && !fromScrollThread) && (g_settings.lcd_vfd_scroll >= 1)) { j00zekDBG(J00ZEK_DBG,"if ((strlen(str) > j00zekVFDsize && !fromScrollThread) && (g_settings.lcd_vfd_scroll >= 1))\n"); CVFD::getInstance()->ShowScrollText(str); return; } memset(data.data, ' ', 63); if (!fromScrollThread) { j00zekDBG(J00ZEK_DBG,"if (!fromScrollThread)\n"); memcpy (data.data, str, j00zekVFDsize + displayDotOnLED); data.start = 0; if ((strlen(str) % 2) == 1 && j00zekVFDsize > 8) // do not center on small displays data.length = j00zekVFDsize-1; else data.length = j00zekVFDsize + displayDotOnLED; } else { j00zekDBG(J00ZEK_DBG,"if (!fromScrollThread)..else\n"); memcpy ( data.data, str, j00zekVFDsize + displayDotOnLED); data.start = 0; data.length = j00zekVFDsize + displayDotOnLED; } j00zekDBG(J00ZEK_DBG,"data.data='%s', data.length=%i\n",data.data,data.length); write_to_vfd(VFDDISPLAYCHARS, &data); return; }
void CVFD::setlcdparameter(int dimm, const int power) { j00zekDBG(DEBUG_DEBUG,"j00zek>%s:%s >>>\n", "CVFD::", __func__); if(dimm < 0) dimm = 0; else if(dimm > 15) dimm = 15; if(!power) dimm = 0; if(brightness == dimm) return; struct vfd_ioctl_data data; //printf("CVFD::setlcdparameter dimm %d power %d\n", dimm, power); // Brightness if (brightnessDivider < 0) { brightness = (int)dimm/brightnessDivider; memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = brightness & 0x07; data.length = 0; write_to_vfd(VFDBRIGHTNESS, &data); } }
void CVFD::ShowIcon(fp_icon icon, bool show) { #if !HAVE_DUCKBOX_HARDWARE if(!has_lcd || fd < 0) return; //printf("CVFD::ShowIcon %s %x\n", show ? "show" : "hide", (int) icon); int ret = ioctl(fd, show ? IOC_FP_SET_ICON : IOC_FP_CLEAR_ICON, icon); if(ret < 0) perror(show ? "IOC_FP_SET_ICON" : "IOC_FP_CLEAR_ICON"); #else #if defined (BOXMODEL_ATEVIO7500) || defined (BOXMODEL_HS7110) || defined (BOXMODEL_HS7810A) || defined (BOXMODEL_HS7119) || defined (BOXMODEL_HS7819) return; #endif if (icon == 0) return; if (active_icon[icon & 0x0F] == show) return; else active_icon[icon & 0x0F] = show; //printf("CVFD::ShowIcon %s %x\n", show ? "show" : "hide", (int) icon); struct vfd_ioctl_data data; memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0x00; data.data[0] = icon; data.data[4] = show; data.length = 5; write_to_vfd(VFDICONDISPLAYONOFF, &data); return; #endif }
void SetIcon(int icon, bool status) { //j00zekDBG(DEBUG_DEBUG,"j00zek>CVFD::SetIcon(icon=%d, status=%d)\n", icon, status); if (IconsNum <= 0) return; if (active_icon[icon] == status) return; else active_icon[icon] = status; if (isSpark7162){ int myVFD = -1; struct { int icon_nr; int on; } vfd_icon; vfd_icon.icon_nr = icon; vfd_icon.on = status; if ( (myVFD = open ( "/dev/vfd", O_RDWR )) != -1 ) { ioctl(myVFD, VFDICONDISPLAYONOFF, &vfd_icon); close(myVFD); } } else { struct vfd_ioctl_data data; memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0x00; data.data[0] = icon; data.data[4] = status; data.length = 5; write_to_vfd(VFDICONDISPLAYONOFF, &data); } return; }
static void writeCG (unsigned char adress, unsigned char pixeldata[5]) { struct vfd_ioctl_data data; data.start = adress & 0x07; data.data[0] = pixeldata[0]; data.data[1] = pixeldata[1]; data.data[2] = pixeldata[2]; data.data[3] = pixeldata[3]; data.data[4] = pixeldata[4]; data.length = 5; write_to_vfd(VFDWRITECGRAM, &data); return; }
static void ShowNormalText(char * str, bool fromScrollThread = false) { if (blocked) { printf("[CVFD] - blocked\n"); usleep(SCROLL_TIME); } int ws = 0; // needed whitespace for centering struct vfd_ioctl_data data; if (!fromScrollThread) { if(vfd_scrollText != 0) { pthread_cancel(vfd_scrollText); pthread_join(vfd_scrollText, NULL); vfd_scrollText = 0; } } if ((strlen(str) > VFDLENGTH && !fromScrollThread) && (g_settings.lcd_vfd_scroll >= 1)) { CVFD::getInstance()->ShowScrollText(str); return; } if (strlen(str) < VFDLENGTH && VFDLENGTH > 7) // do not center on small displays ws = (VFDLENGTH-strlen(str))/2; else ws = 0; memset(data.data, ' ', 63); if (!fromScrollThread) { memcpy (data.data+ws, str, VFDLENGTH-ws); data.start = 0; if ((strlen(str) % 2) == 1 && VFDLENGTH > 7) // do not center on small displays data.length = VFDLENGTH-ws-1; else data.length = VFDLENGTH-ws; } else { memcpy ( data.data, str, VFDLENGTH); data.start = 0; data.length = VFDLENGTH; } write_to_vfd(VFDDISPLAYCHARS, &data); return; }
void CVFD::ShowIcon(fp_icon icon, bool show) { j00zekDBG(DEBUG_DEBUG,"j00zek>CVFD::ShowIcon(maxIcons=%d, fp_icon icon=%d, bool show=%d)\n", IconsNum, icon, show); if ((IconsNum <= 0) || (icon > IconsNum)) return; if (active_icon[icon & 0x0F] == show) return; else active_icon[icon & 0x0F] = show; //printf("CVFD::ShowIcon %s %x\n", show ? "show" : "hide", (int) icon); struct vfd_ioctl_data data; memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0x00; data.data[0] = icon; data.data[4] = show; data.length = 5; write_to_vfd(VFDICONDISPLAYONOFF, &data); return; }
void CVFD::showTime(bool force) { //unsigned int system_rev = cs_get_revision(); static int recstatus = 0; #if 0 if(!has_lcd) return; #endif if(fd >= 0 && mode == MODE_SHUTDOWN) { ShowIcon(FP_ICON_CAM1, false); return; } if (fd >= 0 && showclock) { if (mode == MODE_STANDBY || ( g_settings.lcd_info_line && (MODE_TVRADIO == mode))) { char timestr[21]; struct timeb tm; struct tm * t; static int hour = 0, minute = 0; ftime(&tm); t = localtime(&tm.time); if(force || ( switch_name_time_cnt == 0 && ((hour != t->tm_hour) || (minute != t->tm_min))) ) { hour = t->tm_hour; minute = t->tm_min; #if !defined (BOXMODEL_HS7810A) && !defined (BOXMODEL_HS7819) #if defined (BOXMODEL_OCTAGON1008) ShowIcon(ICON_COLON2, true); #elif defined (BOXMODEL_OCTAGON1008) || defined (BOXMODEL_HS7119) || defined (BOXMODEL_CUBEREVO_250HD) strftime(timestr, 5, "%H%M", t); #else strftime(timestr, 6, "%H:%M", t); #endif ShowText(timestr); #else //HS7810A or HS7819, string should not scroll strftime(timestr, 6, "%H:%M", t); struct vfd_ioctl_data data; memset(data.data, ' ', 6); memcpy (data.data, timestr, 6); data.start = 0; data.length = 5; write_to_vfd(VFDDISPLAYCHARS, &data); #endif if (support_text) { strftime(timestr, 20, "%H:%M", t); ShowText(timestr); } else if (support_numbers && has_led_segment) { ShowNumber((t->tm_hour*100) + t->tm_min); #ifdef BOXMODEL_APOLLO ioctl(fd, IOC_FP_SET_COLON, 0x01); #endif } } } } int tmp_recstatus = CNeutrinoApp::getInstance()->recordingstatus; if (tmp_recstatus) { if(clearClock) { clearClock = 0; if(has_lcd) ShowIcon(FP_ICON_CAM1, false); #if !HAVE_DUCKBOX_HARDWARE setled(false);//off #endif } else { clearClock = 1; if(has_lcd) ShowIcon(FP_ICON_CAM1, true); #if !HAVE_DUCKBOX_HARDWARE setled(true);//on #endif } } else if(clearClock || (recstatus != tmp_recstatus)) { // in case icon ON after record stopped clearClock = 0; if(has_lcd) ShowIcon(FP_ICON_CAM1, false); #if !HAVE_DUCKBOX_HARDWARE setled(); #endif } recstatus = tmp_recstatus; }
void CVFD::setlcdparameter(int dimm, const int power) { if(fd < 0) return; if(dimm < 0) dimm = 0; else if(dimm > 15) dimm = 15; if(!power) dimm = 0; if(brightness == dimm) return; brightness = dimm; printf("CVFD::setlcdparameter dimm %d power %d\n", dimm, power); #if !HAVE_DUCKBOX_HARDWARE int ret = ioctl(fd, IOC_FP_SET_BRIGHT, dimm); if(ret < 0) perror("IOC_FP_SET_BRIGHT"); #else // Brightness struct vfd_ioctl_data data; #if !defined (BOXMODEL_HS7810A) && !defined (BOXMODEL_HS7119) && !defined (BOXMODEL_HS7819) memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = brightness & 0x07; data.length = 0; write_to_vfd(VFDBRIGHTNESS, &data); #endif #if defined (BOXMODEL_FORTIS_HDBOX) || defined (BOXMODEL_ATEVIO7500) usleep(100000); memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0; data.length = 5; if (power) { data.data[0] = 0x01; // red led } else { data.data[0] = 0xf2; // cross plus blue led } data.start = 0; data.data[4] = 0; // off data.length = 5; write_to_vfd(VFDPWRLED, &data); usleep(100000); memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0; data.length = 5; if (power) { data.data[0] = 0xf2; // cross plus blue led } else { data.data[0] = 0x01; // red led } data.start = 0; data.data[4] = brightness*2; data.length = 5; write_to_vfd(VFDPWRLED, &data); #elif defined (BOXMODEL_HS7810A) || defined (BOXMODEL_HS7819) memset(&data, 0, sizeof(struct vfd_ioctl_data)); data.start = 0; data.data[0] = 0x02; // logo data.data[4] = (brightness & 0x07); data.length = 5; write_to_vfd(VFDPWRLED, &data); #elif !defined (BOXMODEL_UFS912) && !defined (BOXMODEL_UFS913) && !defined (BOXMODEL_OCTAGON1008) // Power on/off if (power) { data.start = 0x01; } else { data.start = 0x00; } data.length = 0; write_to_vfd(VFDDISPLAYWRITEONOFF, &data, true); #endif #endif }