commit eca20f0a874ebb73e55c243882c10c44b5e50b9e
parent 62c43ee9b56097dcb78caddf21f678fb1234909b
Author: Boss Marco <bossm8@students.bfh.ch>
Date: Fri, 15 Nov 2019 09:48:53 +0100
no bugs with uint8_t, but display is divided in 4 pieces
Diffstat:
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -138,7 +138,7 @@ struct Display
{
int devicefd;
- uint16_t *memory;
+ uint8_t *memory;
struct fb_var_screeninfo orig_vinfo;
@@ -190,12 +190,11 @@ show_qrcode (const char *uri)
{
QRinput *qri;
QRcode *qrc;
- uint16_t *pixels;
+ uint8_t *pixels;
unsigned int size;
char *upper;
- /* FIXME ? SEGSEV on line 277 when size >= 5 */
- const unsigned int scale = 4;
+ const unsigned int scale = 8;
const unsigned int n_channels = 3;
/* open the framebuffer device */
@@ -219,10 +218,10 @@ show_qrcode (const char *uri)
&qrDisplay.var_info,
sizeof(struct fb_var_screeninfo));
- if (qrDisplay.var_info.bits_per_pixel != 16)
+ if (qrDisplay.var_info.bits_per_pixel != 8)
{
/* Change variable info to 8bit per pixel */
- qrDisplay.var_info.bits_per_pixel = 16;
+ qrDisplay.var_info.bits_per_pixel = 8;
if (0 > ioctl (qrDisplay.devicefd,
FBIOPUT_VSCREENINFO,
&qrDisplay.var_info))
@@ -242,11 +241,11 @@ show_qrcode (const char *uri)
}
/* get pointer onto frame buffer */
- qrDisplay.memory = (uint16_t *) mmap (NULL,
- qrDisplay.fix_info.smem_len,
- PROT_READ | PROT_WRITE, MAP_SHARED,
- qrDisplay.devicefd,
- 0);
+ qrDisplay.memory = (uint8_t *) mmap (NULL,
+ qrDisplay.fix_info.smem_len,
+ PROT_READ | PROT_WRITE, MAP_SHARED,
+ qrDisplay.devicefd,
+ 0);
if (0 > qrDisplay.devicefd)
{
printf ("failed to map display memory\n");
@@ -301,11 +300,11 @@ show_qrcode (const char *uri)
(x * qrc->width / size) + (y * qrc->width / size) * qrc->width;
for (unsigned int c = 0; c < n_channels; c++)
pixels[(y * size + x) * n_channels + c] =
- (0 == (qrc->data[off] & 1)) ? 0xFFFF : 0x0000;
+ (0 == (qrc->data[off] & 1)) ? 0xFF : 0x00;
}
- /* FIXME ? free errors */
- // QRcode_free (qrc);
- // QRinput_free (qri);
+
+ QRcode_free (qrc);
+ QRinput_free (qri);
/* show the qrcode */
size_t width = qrDisplay.var_info.xres;