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);
	}
}
Example #3
0
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;
}
Example #5
0
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;
}
Example #6
0
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;
}
Example #8
0
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;
}
Example #9
0
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
}