[Lcdproc] Big num on two lines

Dominique Fournier dominique.fournier@grenoble.cnrs.fr
Sun Jul 2 20:08:01 2006


This is a cryptographically signed message in MIME format.

--------------ms010107000001070500070702
Content-Type: multipart/mixed;
 boundary="------------060107020907030704070505"

This is a multi-part message in MIME format.
--------------060107020907030704070505
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Hi,

I just write a big num patch wich work on two lines display HD44780.

I hope it can interest somebody...

Dom

--------------060107020907030704070505
Content-Type: text/x-patch;
 name="lcdproc.big-2lines.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="lcdproc.big-2lines.patch"

diff -ru lcdproc-0.5.0/server/drivers/hd44780.c lcdproc-0.5.0-new/server/drivers/hd44780.c
--- lcdproc-0.5.0/server/drivers/hd44780.c	2006-04-14 14:19:11.000000000 +0200
+++ lcdproc-0.5.0-new/server/drivers/hd44780.c	2006-07-02 21:35:22.000000000 +0200
@@ -780,7 +780,7 @@
 HD44780_init_num (Driver *drvthis)
 {
 	PrivateData *p = (PrivateData *) drvthis->private_data;
-
+	// Four Lines Big Num
 	char bignum_ccs[8][5*8] = {{
 		1, 1, 0, 0, 0,
 		1, 1, 0, 0, 0,
@@ -854,6 +854,81 @@
 		0, 0, 0, 0, 0,
 		0, 0, 0, 0, 0
 	}};
+	// Two lines big nums
+	char bignum_ccs2[8][5*8] = {{
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1
+	}, {
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 0, 0, 0,
+		1, 1, 0, 0, 0,
+		1, 1, 0, 0, 0,
+		1, 1, 0, 0, 0,
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1
+	}, {
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1
+	}, {
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1
+	}, {
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1
+	}, {
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1
+	}, {
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1,
+		1, 1, 0, 1, 1
+	}, {
+		1, 1, 1, 1, 1,
+		1, 1, 1, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1,
+		0, 0, 0, 1, 1
+	}};
+
 
 	if (p->ccmode != CCMODE_BIGNUM) {
 		int i;
@@ -865,8 +940,12 @@
 		}
 		p->ccmode = CCMODE_BIGNUM;
 
-		for (i = 0; i < 8; i++)
-			HD44780_set_char (drvthis, i, bignum_ccs[i]);
+		for (i = 0; i < 8; i++) {
+			if (p->height == 2)
+				HD44780_set_char (drvthis, i, bignum_ccs2[i]);
+			else
+				HD44780_set_char (drvthis, i, bignum_ccs[i]);
+		}
 	}
 }
 
@@ -878,6 +957,7 @@
 {
 	PrivateData *p = (PrivateData *) drvthis->private_data;
 
+	// Four lines bignums
 	char bignum_map[11][4][3] = {
 	{ /* 0: */
 		{  1,  2,  3 }, 
@@ -935,6 +1015,40 @@
 		{  7, 32, 32 },
 		{ 32, 32, 32 } }
 	};
+	// Two lines bignums
+	char bignum_map2[10][2][1] = {
+                { // 0:
+                        { 6 },
+                        { 3 } },
+                { // 1:
+                        { 4 },
+                        { 4 } },
+                { // 2:
+                        { 0 },
+                        { 1 } },
+                { // 3:
+                        { 0 },
+                        { 0 } },
+                { // 4:
+                        { 3 },
+                        { 4 } },
+                { // 5:
+                        { 1 },
+                        { 0 } },
+                { // 6:
+                        { 1 },
+                        { 2 } },
+                { // 7:
+                        { 7 },
+                        { 4 } },
+                { // 8:
+                        { 2 },
+                        { 2 } },
+                { // 9:
+                        { 2 },
+                        { 5 } }
+	};
+
 
 	if ((num < 0) || (num > 10))
 		return;
@@ -952,10 +1066,16 @@
 			if (num == 10)
 				x2 = 2; /* =break, for colon only */
 		}
-	}
-	else
+	} else if (p->height == 2) {
+		int y = 1;
+                HD44780_init_num(drvthis);
+
+		HD44780_chr( drvthis, x, y, bignum_map2[num][0][0] );
+		HD44780_chr( drvthis, x, y+1, bignum_map2[num][1][0] );
+	} else	{
 		HD44780_chr(drvthis, x, 1 + (p->height - 1) / 2,
 			    (num == 10) ? ':' : (num + '0'));
+	}
 }

--------------060107020907030704070505--

--------------ms010107000001070500070702
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIINDTCC
A20wggJVoAMCAQICAQIwDQYJKoZIhvcNAQEEBQAwKzELMAkGA1UEBhMCRlIxDTALBgNVBAoT
BENOUlMxDTALBgNVBAMTBENOUlMwHhcNMDEwNDI3MDU0NjQ5WhcNMTEwNDI1MDU0NjQ5WjA0
MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEWMBQGA1UEAxMNQ05SUy1TdGFuZGFyZDCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANzhHiE9BovqvV60iNsPk5e0bQc9hmIA
Lcr/tUqO51akj2Es8aAqq/Yq3Xwsv+91VQusCU7nTmHA5wzwkBVFEgLCjOvDEmTiYxAYLssH
MdmB5dwpgpsxVuKBHopvp+ipWBFEVoNds054cC3ftv1ygUXV8e5Nzu++1T0MkCBFmgmArw9M
2iAOgL86s+sngMC5D8ChTkDcOv1qKr9A1SxxgPn4umvk6ioAqy++mvCndm2YKZwPL/BC8hiX
W8n2zBlfusK+EtJcsJCUwLfLBgTvjzDtMi16SveTu6AJpLTuM8vQg5u1tbOQ3o6QHlmcINVL
Hu3XTE+G+hw6KqHprAWgnb8CAwEAAaOBkjCBjzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRn
WaXlB3RJA+8Fz8wupBjVEMiePDBTBgNVHSMETDBKgBRW62i50lx+mLWlU8ORb2NYxPlrt6Ev
pC0wKzELMAkGA1UEBhMCRlIxDTALBgNVBAoTBENOUlMxDTALBgNVBAMTBENOUlOCAQAwCwYD
VR0PBAQDAgEGMA0GCSqGSIb3DQEBBAUAA4IBAQAGA0eDckWQwk7hIderF6kBVQbKQG1Voh1e
6+IUI1nkCeKQ9jyNNgYPS6cmI2XC6gaacru4jMuKX+95NiV+ANfzBpT7g0QpJjfH7umHzmyG
gBtxPdJir/bNYmxTD+Z6kwCMey4z4EEdqr5lmHbxlQd0s+Y/U3XVSwY2SynE9tyOE4BAEHOC
rRV7BHFQtTcz8shku6EQfjbGra9vcFKm0a7MzLqw6FkSj2INrQPdSyroiTmIUS/tYei3MIfb
J1VtZoejUQmAYXFRBb4THdlBMPx1XwqWmxj/vpCBtBPAchEI/Wqaage99IMstGA2ZAf6PWqn
sJAEdoPdM8s04heYBAuhMIIEyjCCA7KgAwIBAgICKpMwDQYJKoZIhvcNAQEFBQAwNDELMAkG
A1UEBhMCRlIxDTALBgNVBAoTBENOUlMxFjAUBgNVBAMTDUNOUlMtU3RhbmRhcmQwHhcNMDUx
MTI5MTQ1MjM5WhcNMDYxMTI5MTQ1MjM5WjB9MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05S
UzEOMAwGA1UECxMFVVBSMTExGzAZBgNVBAMTEkRvbWluaXF1ZSBGb3VybmllcjEyMDAGCSqG
SIb3DQEJARYjZG9taW5pcXVlLmZvdXJuaWVyQGdyZW5vYmxlLmNucnMuZnIwggEiMA0GCSqG
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVCp6keesgTiU0/c3+qHt2UPH/d0XRsQFsj3jFttZB
2MAcRdERShUUeQi84Jak2k2DvGLuAI9QdFntHzMlZICOO+tncUVKu7o7GNWm/Ft2z6nxhZrp
Vd9zMPpu0qBnsT1/5OAtgIVVkyk0sT0KfXc8Wsgj61fyWmtslSRFk/9vmo29lrtS94jRO7z0
li2aglgTgCSKEOHFK3plDtmHV4UfWBmj0DS/qTIA7KX3opcjHOEoicdTTo5OaoWmWChModEK
oizeyCCjWH5GliLhzqopJewfkVgAIe5FPwetMMw5BvKjlhOGmCvxzMSyx0IwtqF1XZpt6EQk
RieTNahxO69vAgMBAAGjggGbMIIBlzAMBgNVHRMBAf8EAjAAMBEGCWCGSAGG+EIBAQQEAwIE
sDAOBgNVHQ8BAf8EBAMCBeAweAYJYIZIAYb4QgENBGsWaUNlcnRpZmljYXQgQ05SUy1TdGFu
ZGFyZC4gUG91ciB0b3V0ZSBpbmZvcm1hdGlvbiBzZSByZXBvcnRlciDgIGh0dHA6Ly9pZ2Mu
c2VydmljZXMuY25ycy5mci9DTlJTLVN0YW5kYXJkLzAdBgNVHQ4EFgQUX1JLMEOHopoNZC2Z
x8GUWO6H8qIwUwYDVR0jBEwwSoAUZ1ml5Qd0SQPvBc/MLqQY1RDInjyhL6QtMCsxCzAJBgNV
BAYTAkZSMQ0wCwYDVQQKEwRDTlJTMQ0wCwYDVQQDEwRDTlJTggECMC4GA1UdEQQnMCWBI2Rv
bWluaXF1ZS5mb3VybmllckBncmVub2JsZS5jbnJzLmZyMEYGA1UdHwQ/MD0wO6A5oDeGNWh0
dHA6Ly9jcmxzLnNlcnZpY2VzLmNucnMuZnIvQ05SUy1TdGFuZGFyZC9nZXRkZXIuY3JsMA0G
CSqGSIb3DQEBBQUAA4IBAQAPs14+wLeGeI/WJCgOgOZhl3I+wmq8AeDBvGyjNnaqsGV8mZzJ
D+3iJ0LUv1uT0GNI37VnNdJJOk+xsvYLQktKVjTO+POJ/DT1EJblrVbuIW0yaSzJr0GwGxcp
Wi0Z/keS0sRWTW2SMD33A0jlNWTpMQi0XpnYqN/HmYfLrwurvMT5Y1ZqongCa9WYVp/YU3VL
cr79g6nfZBuwcy55tcEauHn6CHM+jvF+AxgMxBLfFlbLg9lbQejOSM4jArJdLpGtyhF4Ispv
ZxO9O1E5c1nkHqlkpSHXlT1HJ9oaeqPR+XSsrJxWAT862IliVoiS4AP5mUGJ8asGLPlsLgfI
H6NbMIIEyjCCA7KgAwIBAgICKpMwDQYJKoZIhvcNAQEFBQAwNDELMAkGA1UEBhMCRlIxDTAL
BgNVBAoTBENOUlMxFjAUBgNVBAMTDUNOUlMtU3RhbmRhcmQwHhcNMDUxMTI5MTQ1MjM5WhcN
MDYxMTI5MTQ1MjM5WjB9MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEOMAwGA1UECxMF
VVBSMTExGzAZBgNVBAMTEkRvbWluaXF1ZSBGb3VybmllcjEyMDAGCSqGSIb3DQEJARYjZG9t
aW5pcXVlLmZvdXJuaWVyQGdyZW5vYmxlLmNucnMuZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQCVCp6keesgTiU0/c3+qHt2UPH/d0XRsQFsj3jFttZB2MAcRdERShUUeQi8
4Jak2k2DvGLuAI9QdFntHzMlZICOO+tncUVKu7o7GNWm/Ft2z6nxhZrpVd9zMPpu0qBnsT1/
5OAtgIVVkyk0sT0KfXc8Wsgj61fyWmtslSRFk/9vmo29lrtS94jRO7z0li2aglgTgCSKEOHF
K3plDtmHV4UfWBmj0DS/qTIA7KX3opcjHOEoicdTTo5OaoWmWChModEKoizeyCCjWH5GliLh
zqopJewfkVgAIe5FPwetMMw5BvKjlhOGmCvxzMSyx0IwtqF1XZpt6EQkRieTNahxO69vAgMB
AAGjggGbMIIBlzAMBgNVHRMBAf8EAjAAMBEGCWCGSAGG+EIBAQQEAwIEsDAOBgNVHQ8BAf8E
BAMCBeAweAYJYIZIAYb4QgENBGsWaUNlcnRpZmljYXQgQ05SUy1TdGFuZGFyZC4gUG91ciB0
b3V0ZSBpbmZvcm1hdGlvbiBzZSByZXBvcnRlciDgIGh0dHA6Ly9pZ2Muc2VydmljZXMuY25y
cy5mci9DTlJTLVN0YW5kYXJkLzAdBgNVHQ4EFgQUX1JLMEOHopoNZC2Zx8GUWO6H8qIwUwYD
VR0jBEwwSoAUZ1ml5Qd0SQPvBc/MLqQY1RDInjyhL6QtMCsxCzAJBgNVBAYTAkZSMQ0wCwYD
VQQKEwRDTlJTMQ0wCwYDVQQDEwRDTlJTggECMC4GA1UdEQQnMCWBI2RvbWluaXF1ZS5mb3Vy
bmllckBncmVub2JsZS5jbnJzLmZyMEYGA1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9jcmxzLnNl
cnZpY2VzLmNucnMuZnIvQ05SUy1TdGFuZGFyZC9nZXRkZXIuY3JsMA0GCSqGSIb3DQEBBQUA
A4IBAQAPs14+wLeGeI/WJCgOgOZhl3I+wmq8AeDBvGyjNnaqsGV8mZzJD+3iJ0LUv1uT0GNI
37VnNdJJOk+xsvYLQktKVjTO+POJ/DT1EJblrVbuIW0yaSzJr0GwGxcpWi0Z/keS0sRWTW2S
MD33A0jlNWTpMQi0XpnYqN/HmYfLrwurvMT5Y1ZqongCa9WYVp/YU3VLcr79g6nfZBuwcy55
tcEauHn6CHM+jvF+AxgMxBLfFlbLg9lbQejOSM4jArJdLpGtyhF4IspvZxO9O1E5c1nkHqlk
pSHXlT1HJ9oaeqPR+XSsrJxWAT862IliVoiS4AP5mUGJ8asGLPlsLgfIH6NbMYICrjCCAqoC
AQEwOjA0MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEWMBQGA1UEAxMNQ05SUy1TdGFu
ZGFyZAICKpMwCQYFKw4DAhoFAKCCAUkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkq
hkiG9w0BCQUxDxcNMDYwNzAyMjAwNjQ4WjAjBgkqhkiG9w0BCQQxFgQU4KMAp9h/jzV4EMO1
G/j5jneBerAwSQYJKwYBBAGCNxAEMTwwOjA0MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05S
UzEWMBQGA1UEAxMNQ05SUy1TdGFuZGFyZAICKpMwSwYLKoZIhvcNAQkQAgsxPKA6MDQxCzAJ
BgNVBAYTAkZSMQ0wCwYDVQQKEwRDTlJTMRYwFAYDVQQDEw1DTlJTLVN0YW5kYXJkAgIqkzBS
BgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0D
AgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDANBgkqhkiG9w0BAQEFAASCAQA7LeXx3pDS
mxwCjJvdP/d9B+UAkyPO+8CuMLY1LLhGfBoMwTZLXFU2d1ePUeZAhwwDHlFz8l2bc4utdE4r
K/C3pVD/eVh4gwwUjySR0gpDbX44oFhs0Pa22RaFdEGA6k2wpIy6UJ3S8LQHsYSX4ucX+U1Q
mkxZ/w9AVYS/1I6ge3LOW6pKHLn0daiSd4T1t5Z0Uici0K24anDFxgB+SFr3JDlDRm1vWRw3
TRTePqrq5dIRXrfdA/pWeYM3EYvVho0dxfKd+6l4/7X9/HxzeJ0R0LquuCUf4HKs23MXCchK
kb3dMNoa8kiL/DCZ9McUbTU4AOcJshDXmma35Zi/l1QDAAAAAAAA
--------------ms010107000001070500070702--