/* $Id$ * $URL$ * * Driver for Electronic Assembly serial graphic display * * Copyright (C) 2007 Stefan Gmeiner * Copyright (C) 2005 Michael Reinelt * Copyright (C) 2005, 2006, 2007 The LCD4Linux Team * * This file is part of LCD4Linux. * * LCD4Linux is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * LCD4Linux is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ /* * Electronic Assembly RS232 Graphic Displays * * This driver supports some of the Electronic Assembly serial graphic displays. Although * most of this display support higher level operation like text and graphic command, non of * these are used. Instead the lcd4linux graphic routines creates the graphic which is then * transferd to the display. * * FIXME: Some display have addition features such as GPI which are not yet implemented. * * Display Protocol Output Contrast * ============================================ * GE120-5NV24 1 8 yes * GE128-6N3V24 1 8 no * GE128-6N9V24 2 0 yes * GE128-7KV24 3 8 no * GE240-6KV24 3 8 no * GE240-6KCV24 3 8 no * GE240-7KV24 3 8 no * GE240-7KLWV24 3 8 no * GE240-6KLWV24 3 8 no * * Supported protocol commands: * * Clear * Protocol Display Set Output Set Contrast Bitmap Orientation * ======================================================================================= * 1 DL Y(0..7)(0..1) K(0..20) U(x)(y)(w)(h)(...) Vertical * 2 DL -- DK(0..63) UL(x)(y)(w)(h)(...) Vertical * 3 DL Y(0..7)(0..1) -- U(x)(y)(w)(h)(...) Horizontal * * Bitmap orientation: * * Vertical: Byte-No. * 123456789.... * Bit 0 ********* * Bit 1 ********* * Bit 2 ********* * Bit 3 ********* * Bit 4 ********* * Bit 5 ********* * Bit 6 ********* * Bit 7 ********* * * Horizontal: Bit-No. * 76543210 * Byte 0 ******** * Byte 1 ******** * Byte 3 ******** * ... * * */ /* * * exported fuctions: * * struct DRIVER drv_EA232graphic * */ #include "config.h" #include #include #include #include #include #include #include "debug.h" #include "cfg.h" #include "qprintf.h" #include "udelay.h" #include "plugin.h" #include "widget.h" #include "widget_text.h" #include "widget_icon.h" #include "widget_bar.h" #include "drv.h" /* graphic display */ #include "drv_generic_graphic.h" /* serial port */ #include "drv_generic_serial.h" /* GPO */ #include "drv_generic_gpio.h" #define ESC ((char)27) #define MSB_BYTE 0x80 #define LSB_BYTE 0x01 static char Name[] = "EA232graphic"; typedef struct { char *name; int columns; int rows; int max_contrast; int default_contrast; int gpo; int protocol; } MODEL; static MODEL Models[] = { /* Protocol 1 models */ {"GE120-5NV24", 120, 32, 20, 8, 8, 1}, {"GE128-6N3V24", 128, 64, 0, 0, 8, 1}, /* Protocol 2 models */ {"GE128-6N9V24", 128, 64, 63, 40, 0, 2}, /* Protocol 3 models */ {"GE128-7KV24", 128, 128, 0, 0, 8, 3}, {"GE240-6KV24", 240, 64, 0, 0, 8, 3}, {"GE240-6KCV24", 240, 64, 0, 0, 8, 3}, {"GE240-7KV24", 240, 128, 0, 0, 8, 3}, {"GE240-7KLWV24", 240, 128, 0, 0, 8, 3}, {"GE240-6KLWV24", 240, 64, 0, 0, 8, 3}, {NULL, 0, 0, 0, 0, 0, 0} }; static MODEL *Model; /****************************************/ /*** hardware dependant functions ***/ /****************************************/ static int drv_EA232graphic_open(const char *section) { /* open serial port */ /* don't mind about device, speed and stuff, this function will take care of */ if (drv_generic_serial_open(section, Name, 0) < 0) return -1; return 0; } static int drv_EA232graphic_close(void) { drv_generic_serial_close(); return 0; } /* write data to the display */ static void drv_EA232graphic_send(const char *data, const int len) { drv_generic_serial_write(data, len); } /* delete Display */ static void drv_EA232graphic_clear_display() { char cmd[3]; switch (Model->protocol) { case 1: case 3: cmd[0] = 'D'; cmd[1] = 'L'; drv_EA232graphic_send(cmd, 2); break; case 2: cmd[0] = ESC; cmd[1] = 'D'; cmd[2] = 'L'; drv_EA232graphic_send(cmd, 3); break; default: error("%s: undefined protocol type", Name); return; } } /* copy framebuffer to display */ static void drv_EA232graphic_blit(const int row, const int col, const int height, const int width) { int r, c, l, p; char *cmd; /* calculate length of command */ l = 0; switch (Model->protocol) { case 1: case 2: l
# Channel table for Senador Guiomard - AC - Brazil
# Source: http://portalbsd.com.br/novo/terrestres_channels.php?channels=712

# Physical channel 26
[TV Diocese]
	DELIVERY_SYSTEM = ISDBT
	BANDWIDTH_HZ = 6000000
	FREQUENCY = 545142857
	INVERSION = AUTO
	GUARD_INTERVAL = AUTO
	TRANSMISSION_MODE = AUTO
	INVERSION = AUTO
	GUARD_INTERVAL = AUTO
	TRANSMISSION_MODE = AUTO
	ISDBT_LAYER_ENABLED = 7
	ISDBT_SOUND_BROADCASTING = 0
	ISDBT_SB_SUBCHANNEL_ID = 0
	ISDBT_SB_SEGMENT_IDX = 0
	ISDBT_SB_SEGMENT_COUNT = 0
	ISDBT_LAYERA_FEC = AUTO
	ISDBT_LAYERA_MODULATION = QAM/AUTO
	ISDBT_LAYERA_SEGMENT_COUNT = 0
	ISDBT_LAYERA_TIME_INTERLEAVING = 0
	ISDBT_LAYERB_FEC = AUTO
	ISDBT_LAYERB_MODULATION = QAM/AUTO
	ISDBT_LAYERB_SEGMENT_COUNT = 0
	ISDBT_LAYERB_TIME_INTERLEAVING = 0
	ISDBT_LAYERC_FEC = AUTO
	ISDBT_LAYERC_MODULATION = QAM/AUTO
	ISDBT_LAYERC_SEGMENT_COUNT = 0
	ISDBT_LAYERC_TIME_INTERLEAVING = 0

# Physical channel 36
[TV Gazeta AC]
	DELIVERY_SYSTEM = ISDBT
	BANDWIDTH_HZ = 6000000
	FREQUENCY = 605142857
	INVERSION = AUTO
	GUARD_INTERVAL = AUTO
	TRANSMISSION_MODE = AUTO
	INVERSION = AUTO
	GUARD_INTERVAL = AUTO
	TRANSMISSION_MODE = AUTO
	ISDBT_LAYER_ENABLED = 7
	ISDBT_SOUND_BROADCASTING = 0
	ISDBT_SB_SUBCHANNEL_ID = 0
	ISDBT_SB_SEGMENT_IDX = 0
	ISDBT_SB_SEGMENT_COUNT = 0
	ISDBT_LAYERA_FEC = AUTO
	ISDBT_LAYERA_MODULATION = QAM/AUTO
	ISDBT_LAYERA_SEGMENT_COUNT = 0
	ISDBT_LAYERA_TIME_INTERLEAVING = 0
	ISDBT_LAYERB_FEC = AUTO
	ISDBT_LAYERB_MODULATION = QAM/AUTO
	ISDBT_LAYERB_SEGMENT_COUNT = 0
	ISDBT_LAYERB_TIME_INTERLEAVING = 0
	ISDBT_LAYERC_FEC = AUTO
	ISDBT_LAYERC_MODULATION = QAM/AUTO
	ISDBT_LAYERC_SEGMENT_COUNT = 0
	ISDBT_LAYERC_TIME_INTERLEAVING = 0