mirror of
https://github.com/Valeh2012/PersonalVotingMachine
synced 2025-12-08 18:15:11 +02:00
first commit
This commit is contained in:
12
basic-setup/components/u8g2/sys/sdl/lut_edit/Makefile
Normal file
12
basic-setup/components/u8g2/sys/sdl/lut_edit/Makefile
Normal file
@@ -0,0 +1,12 @@
|
||||
CFLAGS = -g -Wall -I../../../csrc/. `sdl2-config --cflags`
|
||||
|
||||
SRC = $(shell ls ../../../csrc/*.c) $(shell ls ../common/*.c ) main.c
|
||||
|
||||
OBJ = $(SRC:.c=.o)
|
||||
|
||||
helloworld: $(OBJ)
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) `sdl2-config --libs` -o u8g2_sdl
|
||||
|
||||
clean:
|
||||
-rm $(OBJ) u8g2_sdl
|
||||
|
||||
276
basic-setup/components/u8g2/sys/sdl/lut_edit/main.c
Normal file
276
basic-setup/components/u8g2/sys/sdl/lut_edit/main.c
Normal file
@@ -0,0 +1,276 @@
|
||||
|
||||
#include "u8g2.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define LUT_ARRAY_LEN 20
|
||||
#define LUT_WAVE_CNT 4
|
||||
|
||||
/*
|
||||
level
|
||||
0: neutral, middle
|
||||
1: upper line
|
||||
2: lower line
|
||||
|
||||
*/
|
||||
|
||||
uint8_t lut_level[LUT_WAVE_CNT][LUT_ARRAY_LEN];
|
||||
uint8_t lut_time[LUT_ARRAY_LEN];
|
||||
#define LUT_DY 3
|
||||
|
||||
uint8_t lut_time_to_width[16] =
|
||||
{
|
||||
2, // 0
|
||||
2, // 1
|
||||
2, // 2
|
||||
2, // 3
|
||||
3, // 4
|
||||
3, // 5
|
||||
3, // 6
|
||||
3, // 7
|
||||
4, // 8
|
||||
4, // 9
|
||||
4, // 10
|
||||
4, // 11
|
||||
5, // 12
|
||||
5, // 13
|
||||
5, // 14
|
||||
5, // 15
|
||||
};
|
||||
|
||||
u8g2_uint_t get_dx(uint8_t i)
|
||||
{
|
||||
//return 5;
|
||||
return lut_time_to_width[lut_time[i]];
|
||||
}
|
||||
|
||||
void read_lut(const uint8_t *lut)
|
||||
{
|
||||
uint8_t i;
|
||||
for ( i = 0; i < LUT_ARRAY_LEN; i++ )
|
||||
{
|
||||
lut_level[0][i] = lut[i] & 3;
|
||||
lut_level[1][i] = (lut[i]>>2) & 3;
|
||||
lut_level[2][i] = (lut[i]>>4) & 3;
|
||||
lut_level[3][i] = (lut[i]>>6) & 3;
|
||||
|
||||
}
|
||||
for ( i = 0; i < LUT_ARRAY_LEN/2; i++ )
|
||||
{
|
||||
lut_time[i*2 + 0] = lut[LUT_ARRAY_LEN+i] & 15;
|
||||
lut_time[i*2 + 1] = (lut[LUT_ARRAY_LEN+i]>>4) & 15;
|
||||
}
|
||||
}
|
||||
|
||||
void draw_lut_wave(u8g2_t *u8g2, uint8_t w, uint8_t cx, u8g2_uint_t y)
|
||||
{
|
||||
uint8_t i;
|
||||
u8g2_uint_t x1, y1;
|
||||
u8g2_uint_t x2, y2;
|
||||
x1 = 18;
|
||||
y1 = y;
|
||||
u8g2_DrawGlyph(u8g2, 2,y+2, (w&2)?'1':'0');
|
||||
u8g2_DrawGlyph(u8g2, 8,y+2, (w&1)?'1':'0');
|
||||
for( i = 0; i < LUT_ARRAY_LEN; i++ )
|
||||
{
|
||||
x2 = x1 + get_dx(i);
|
||||
y2 = y;
|
||||
if ( lut_level[w][i] == 1)
|
||||
y2 -= LUT_DY-1;
|
||||
else if ( lut_level[w][i] == 2 )
|
||||
y2 += LUT_DY-1;
|
||||
if ( y1 != y2 )
|
||||
u8g2_DrawLine(u8g2, x1, y1, x1, y2);
|
||||
u8g2_DrawHLine(u8g2, x1, y2, x2-x1+1);
|
||||
|
||||
if ( i == cx )
|
||||
{
|
||||
u8g2_DrawHLine(u8g2, x1, y-LUT_DY-1, x2-x1+1);
|
||||
u8g2_DrawHLine(u8g2, x1, y+LUT_DY+1, x2-x1+1);
|
||||
}
|
||||
|
||||
x1 = x2;
|
||||
y1 = y2;
|
||||
}
|
||||
}
|
||||
|
||||
void draw_all_lut(u8g2_t *u8g2, uint8_t cx, uint8_t cy)
|
||||
{
|
||||
uint8_t i;
|
||||
uint16_t total;
|
||||
u8g2_uint_t x, y;
|
||||
u8g2_uint_t xs = 1;
|
||||
y = LUT_DY +1;
|
||||
for( i = 0; i < LUT_WAVE_CNT; i++ )
|
||||
{
|
||||
if ( i == cy )
|
||||
draw_lut_wave(u8g2, i, cx, y);
|
||||
else
|
||||
draw_lut_wave(u8g2, i, 255, y); // 255: no cursor
|
||||
|
||||
y += (LUT_DY+2)*2;
|
||||
}
|
||||
|
||||
total = 0;
|
||||
for( i = 0; i < LUT_ARRAY_LEN; i++ )
|
||||
total += lut_time[i];
|
||||
|
||||
y+=1;
|
||||
if ( cy == LUT_WAVE_CNT )
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 1);
|
||||
}
|
||||
x = u8g2_DrawStr(u8g2, xs, y, " TP[");
|
||||
x += u8g2_DrawStr(u8g2, x, y, u8x8_u8toa( cx, 2));
|
||||
x += u8g2_DrawStr(u8g2, x, y, "]=");
|
||||
x += u8g2_DrawStr(u8g2, x, y, u8x8_u8toa( lut_time[cx], 2));
|
||||
x += u8g2_DrawStr(u8g2, x, y, " ");
|
||||
x += u8g2_DrawStr(u8g2, x, y, " total=");
|
||||
x += u8g2_DrawStr(u8g2, x, y, u8x8_u16toa( total, 3));
|
||||
x += u8g2_DrawStr(u8g2, x, y, " ");
|
||||
|
||||
y+=8;
|
||||
if ( cy == LUT_WAVE_CNT+1 )
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 1);
|
||||
}
|
||||
x = u8g2_DrawStr(u8g2, xs, y, " Test ");
|
||||
y+=8;
|
||||
if ( cy == LUT_WAVE_CNT+2 )
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
u8g2_SetDrawColor(u8g2, 1);
|
||||
}
|
||||
x = u8g2_DrawStr(u8g2, xs, y, " Print ");
|
||||
u8g2_SetDrawColor(u8g2, 1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void init_lut(void)
|
||||
{
|
||||
uint8_t i, j;
|
||||
for( i = 0; i < LUT_ARRAY_LEN; i++ )
|
||||
{
|
||||
for( j = 0; j < LUT_WAVE_CNT; j++ )
|
||||
lut_level[j][i] = 0;
|
||||
lut_time[i] = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint8_t edit_lut(u8g2_t *u8g2)
|
||||
{
|
||||
uint8_t event;
|
||||
uint8_t cx, cy;
|
||||
|
||||
u8g2_SetFont(u8g2, u8g2_font_5x7_mr);
|
||||
u8g2_SetFontMode(u8g2, 0);
|
||||
u8g2_SetFontDirection(u8g2, 0);
|
||||
|
||||
cx = 0;
|
||||
cy = 0;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
u8g2_FirstPage(u8g2);
|
||||
do
|
||||
{
|
||||
draw_all_lut(u8g2, cx, cy);
|
||||
} while( u8g2_NextPage(u8g2) );
|
||||
|
||||
for(;;)
|
||||
{
|
||||
event = u8x8_GetMenuEvent(u8g2_GetU8x8(u8g2));
|
||||
if ( event == U8X8_MSG_GPIO_MENU_SELECT )
|
||||
{
|
||||
if ( cx < LUT_ARRAY_LEN && cy < LUT_WAVE_CNT )
|
||||
{
|
||||
lut_level[cy][cx]++;
|
||||
if ( lut_level[cy][cx] >= 3 )
|
||||
lut_level[cy][cx] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( cy == LUT_WAVE_CNT )
|
||||
{
|
||||
lut_time[cx]++;
|
||||
if ( lut_time[cx] >= 16 )
|
||||
lut_time[cx] = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if ( event == U8X8_MSG_GPIO_MENU_HOME )
|
||||
return 0;
|
||||
else if ( event == U8X8_MSG_GPIO_MENU_NEXT )
|
||||
{
|
||||
cx++;
|
||||
if ( cx >= LUT_ARRAY_LEN )
|
||||
cx = 0;
|
||||
break;
|
||||
}
|
||||
else if ( event == U8X8_MSG_GPIO_MENU_DOWN )
|
||||
{
|
||||
cy++;
|
||||
if ( cy >= LUT_WAVE_CNT+3 )
|
||||
cy = 0;
|
||||
break;
|
||||
}
|
||||
else if ( event == U8X8_MSG_GPIO_MENU_PREV )
|
||||
{
|
||||
if ( cx == 0 )
|
||||
cx = LUT_ARRAY_LEN;
|
||||
cx--;
|
||||
break;
|
||||
}
|
||||
else if ( event == U8X8_MSG_GPIO_MENU_UP )
|
||||
{
|
||||
if ( cy == 0 )
|
||||
cy = LUT_WAVE_CNT+3;
|
||||
cy--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
u8g2_t u8g2;
|
||||
|
||||
const uint8_t LUTDefault_full[31] =
|
||||
{
|
||||
0x50, 0xAA, 0x55, 0xAA, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
u8g2_SetupBuffer_SDL_128x64_4(&u8g2, &u8g2_cb_r0);
|
||||
|
||||
u8x8_InitDisplay(u8g2_GetU8x8(&u8g2));
|
||||
u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0);
|
||||
|
||||
|
||||
|
||||
init_lut();
|
||||
read_lut(LUTDefault_full);
|
||||
edit_lut(&u8g2);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user