FreeCalypso > hg > freecalypso-hwlab
comparison lcdtest/showppm.c @ 21:1d8c499711f1
lcdtest PPM display: sending the picture all at once is much faster
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 11 Apr 2018 00:09:50 +0000 |
parents | f3671d3ad953 |
children |
comparison
equal
deleted
inserted
replaced
20:2e4f27ea7067 | 21:1d8c499711f1 |
---|---|
137 cmd_show(argc, argv) | 137 cmd_show(argc, argv) |
138 char **argv; | 138 char **argv; |
139 { | 139 { |
140 int rc; | 140 int rc; |
141 unsigned n; | 141 unsigned n; |
142 u_char ftbuf[176*220*6+3], *dp; | |
142 | 143 |
143 ppm_filename = argv[1]; | 144 ppm_filename = argv[1]; |
144 ppmfile = fopen(ppm_filename, "r"); | 145 ppmfile = fopen(ppm_filename, "r"); |
145 if (!ppmfile) { | 146 if (!ppmfile) { |
146 perror(ppm_filename); | 147 perror(ppm_filename); |
154 write_ir(0x20); | 155 write_ir(0x20); |
155 write_dr(0); | 156 write_dr(0); |
156 write_ir(0x21); | 157 write_ir(0x21); |
157 write_dr(0); | 158 write_dr(0); |
158 write_ir(0x22); | 159 write_ir(0x22); |
160 /* GPIO setup */ | |
161 dp = ftbuf; | |
162 *dp++ = 0x82; | |
163 *dp++ = 0x03; | |
164 *dp++ = 0x03; | |
159 for (n = 0; n < 176*220; n++) { | 165 for (n = 0; n < 176*220; n++) { |
160 rc = ppm_get_rgb(); | 166 rc = ppm_get_rgb(); |
161 if (rc < 0) { | 167 if (rc < 0) { |
162 fclose(ppmfile); | 168 fclose(ppmfile); |
163 return(-1); | 169 return(-1); |
164 } | 170 } |
165 write_dr(rc); | 171 /* upper byte */ |
172 *dp++ = 0x92; | |
173 *dp++ = 0; /* dummy addr */ | |
174 *dp++ = rc >> 8; | |
175 /* lower byte */ | |
176 *dp++ = 0x92; | |
177 *dp++ = 0; /* dummy addr */ | |
178 *dp++ = rc; | |
166 } | 179 } |
167 fclose(ppmfile); | 180 fclose(ppmfile); |
181 do_ftdi_write(ftbuf, sizeof ftbuf); | |
168 return(0); | 182 return(0); |
169 } | 183 } |
170 | 184 |
171 cmd_cd(argc, argv) | 185 cmd_cd(argc, argv) |
172 char **argv; | 186 char **argv; |