From 50eff38fe40e9a5c833844ef66b34b087cfc56bf Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Wed, 7 Sep 2005 06:51:44 +0000 Subject: [lcd4linux @ 2005-09-07 06:51:44 by reinelt] Support for CF635 added --- drv_Crystalfontz.c | 42 +++++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/drv_Crystalfontz.c b/drv_Crystalfontz.c index 105f5f2..82f3cb4 100644 --- a/drv_Crystalfontz.c +++ b/drv_Crystalfontz.c @@ -1,4 +1,4 @@ -/* $Id: drv_Crystalfontz.c,v 1.35 2005/08/21 08:18:56 reinelt Exp $ +/* $Id: drv_Crystalfontz.c,v 1.36 2005/09/07 06:51:44 reinelt Exp $ * * new style driver for Crystalfontz display modules * @@ -23,6 +23,9 @@ * * * $Log: drv_Crystalfontz.c,v $ + * Revision 1.36 2005/09/07 06:51:44 reinelt + * Support for CF635 added + * * Revision 1.35 2005/08/21 08:18:56 reinelt * CrystalFontz ACK processing * @@ -246,6 +249,7 @@ static MODEL Models[] = { {632, "632", 2, 16, 0, 1, 0}, {633, "633", 2, 16, 0, 2, 18}, {634, "634", 4, 20, 0, 1, 0}, + {635, "635", 4, 20, 0, 3, 22}, {636, "636", 2, 16, 0, 1, 0}, {-1, "Unknown", -1, -1, 0, 0, 0} }; @@ -293,7 +297,7 @@ static void drv_CF_process_packet(void) { switch (Packet.type) { - + case 0x02: /* async response from display to host */ @@ -303,7 +307,7 @@ static void drv_CF_process_packet(void) /* Key Activity */ debug("Key Activity: %d", Packet.data[0]); break; - + case 0x01: /* Fan Speed Report */ if (Packet.data[1] == 0xff) { @@ -314,8 +318,8 @@ static void drv_CF_process_packet(void) Fan_RPM[Packet.data[0]] = (double) 27692308L *(Packet.data[1] - 3) / (Packet.data[2] + 256 * Packet.data[3]); } break; - - case 0x02: + + case 0x02: /* Temperature Sensor Report */ switch (Packet.data[3]) { case 0: @@ -330,25 +334,25 @@ static void drv_CF_process_packet(void) break; } break; - + default: /* this should not happen */ - error ("%s: unexpected response type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); + error("%s: unexpected response type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); break; } break; - + case 0x03: /* error response from display to host */ - error ("%s: error response type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); + error("%s: error response type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); break; default: /* these should not happen: */ /* type 0x00: command from host to display: should never come back */ /* type 0x01: command response from display to host: are processed within send() */ - error ("%s: unexpected packet type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); + error("%s: unexpected packet type=0x%02x code=0x%02x size=%d", Packet.type, Packet.code, Packet.size); break; } @@ -456,18 +460,18 @@ static void drv_CF_send(const unsigned char cmd, const unsigned char len, const buffer[len + 3] = MSB(crc); drv_generic_serial_write((char *) buffer, len + 4); - + /* wait for acknowledge packet */ gettimeofday(&now, NULL); while (1) { /* delay 1 msec */ - usleep (1 * 1000); + usleep(1 * 1000); if (drv_CF_poll()) { if (Packet.type == 0x01 && Packet.code == cmd) { /* this is the ack we're waiting for */ if (0) { gettimeofday(&end, NULL); - debug ("%s: ACK after %d usec", Name, 1000000 * (end.tv_sec - now.tv_sec) + end.tv_usec - now.tv_usec); + debug("%s: ACK after %d usec", Name, 1000000 * (end.tv_sec - now.tv_sec) + end.tv_usec - now.tv_usec); } break; } else { @@ -477,7 +481,7 @@ static void drv_CF_send(const unsigned char cmd, const unsigned char len, const } gettimeofday(&end, NULL); /* don't wait more than 250 msec */ - if ((1000000 * (end.tv_sec - now.tv_sec) + end.tv_usec - now.tv_usec) > 250*1000) { + if ((1000000 * (end.tv_sec - now.tv_sec) + end.tv_usec - now.tv_usec) > 250 * 1000) { error("%s: timeout waiting for response to cmd 0x%02x", Name, cmd); break; } @@ -527,13 +531,13 @@ static void drv_CF_write3(const int row, const int col, const char *data, const unsigned char cmd[23]; /* limit length */ - if (col + l > 20) - l = 20 - col; + if (col + l > DCOLS) + l = DCOLS - col; if (l < 0) l = 0; /* sanity check */ - if (row >= 2 || col + l > 20) { + if (row >= DROWS || col + l > DCOLS) { error("%s: internal error: write outside display bounds!", Name); return; } @@ -695,7 +699,7 @@ static int drv_CF_autodetect(void) /* read display type */ drv_CF_send(1, 0, NULL); - + /* send() did already wait for response packet */ if (Packet.type == 0x01 && Packet.code == 0x01) { char t[7], c; @@ -718,7 +722,7 @@ static int drv_CF_autodetect(void) } error("%s: display detection failed!", Name); - + return -1; } -- cgit v1.2.3 } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
# DVB-T Sachsen
# Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
T 205500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE # CH09: MDR-SN, rbb, BR, WDR
T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, BR, WDR
T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL II, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, BR, WDR
T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, BR, WDR
T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH39: Das Erste, arte, Phoenix, EinsFestival