📄 main.c
字号:
unsigned char tint_step(unsigned char val, unsigned char inc)
{
#if 0
if (inc && (val-TINT_OFF) < TINT_RANGE) {
val += TINT_FAC;
} else if (!inc && val > TINT_OFF) {
val -= TINT_FAC;
}
return val;
#else
val = step_value(val, TINT_FAC, inc);
return check_value2(val, TINT_OFF, TINT_RANGE, inc ? TINT_OFF+TINT_RANGE : TINT_OFF);
#endif
}
unsigned char reset_step(unsigned char val, unsigned char inc)
//unsigned char reset_step()
{
unsigned char Data;
Data = inc;
return val;
}
#if 0
unsigned char bival_step(unsigned char val, unsigned char inc)
{
if (inc) {
if (++val > 1)
val = 0;
} else {
if (--val > 1)
val = 1;
}
return val;
}
#endif
void bri_apply(unsigned char val)
{
if (val<92)
val=92;
else if(val>132)
val=132;
osd_setbrightness(val);
}
void cont_apply(unsigned char val)
{
osd_setcontrast(val);
}
void col_apply(unsigned char val)
{
osd_setcolor(val);
}
void tint_apply(unsigned char val)
{
osd_settint(val);
}
void reset_apply(unsigned char val)
//void reset_apply(void)
{
unsigned char i;
unsigned char Data;
struct menuitem_struct code *item;
Data = val;
for (i = 0, item = &items[0]; i < NR_ITEMS; i++, item++) {
if (item->flags & MIF_RESET) {
at24cxx_writebyte(item->addr, item->defval);
item->apply(item->defval);
if (!(item->flags & MIF_DOCA)) {
paint_line(ROW_BRI+i, 12, 18, 2);
item->draw(ROW_BRI+i, 12, item->defval);
}
}
}
}
void bri_draw(char row, char col, unsigned char val)
{
struct progbar_struct pb;
// flag=7;
// disp_char(ROW_BRI+2,2,172);
// disp_char(ROW_BRI+2,3,173);
pb.step = 1;
pb.range = ABS(BRI_RANGE/BRI_FAC);
pb.pos = (BRI_RANGE-(val-BRI_OFF))/BRI_FAC;
pb.val = BRI_RANGE-val;
draw_progbar(row, col, &pb);
}
void cont_draw(char row, char col, unsigned char val)
{
struct progbar_struct pb;
pb.step = 1;
pb.range = ABS(CONT_RANGE/CONT_FAC);
pb.pos = (CONT_RANGE-(val-CONT_OFF))/CONT_FAC;
pb.val = CONT_RANGE-val;
draw_progbar(row, col, &pb);
}
void col_draw(char row, char col, unsigned char val)
{
struct progbar_struct pb;
pb.step = 1;
pb.range = ABS(COL_RANGE/COL_FAC);
pb.pos = (val-COL_OFF)/COL_FAC;
pb.val = val;
draw_progbar(row, col, &pb);
}
void tint_draw(char row, char col, unsigned char val)
{
struct progbar_struct pb;
pb.step = 1;
pb.range = ABS(TINT_RANGE/TINT_FAC);
pb.pos = (val-TINT_OFF)/TINT_FAC;
pb.val = val;
draw_progbar(row, col, &pb);
}
void reset_draw(char row, char col, unsigned char val)
{
unsigned char Data;
Data = val;
Data = row;
Data = col;
}
/*----------------------------------------------------------------------------------------------------*/
void show_menu(void)//显示菜单项目
{
unsigned char i;
struct menuitem_struct code *item;
for (i = 0, item = &items[0]; i < NR_ITEMS; i++, item++) {
osd_setrowattr(ROW_BRI+i, 0);
paint_line(ROW_BRI+i, 0, 12, 6);
disp_str3(ROW_BRI+i, 1, item->title);
if (!(item->flags & MIF_DOCA)) {
unsigned char c = item->read(item->addr);
paint_line(ROW_BRI+i, 12, 18, c == item->defval ? 2 : 4);
item->draw(ROW_BRI+i, 12, c);
}
}
}
void select_item(unsigned char id, bit selected)
{
struct menuitem_struct code *item = &items[id];
// paint_line(ROW_BRI+id, 0, strlen(item->title), selected ? 5|8 : 6);
disp_str2(ROW_BRI+id, 1, item->title, selected ? 5|8 : 6);
if (item->flags & MIF_DOCA) {
if (selected) {
unsigned char c = item->read(item->addr);
paint_line(ROW_BRI+NR_ITEMS+0, 8, 10, 5);
paint_line(ROW_BRI+NR_ITEMS+0, 18, 12, 6);
paint_line(ROW_BRI+NR_ITEMS+1, 0, 30, 6);
disp_str3(ROW_BRI+NR_ITEMS+0, 8, item->title);
item->draw(ROW_BRI+NR_ITEMS+1, 1, c);
} else {
clear_line(ROW_BRI+NR_ITEMS+0);
clear_line(ROW_BRI+NR_ITEMS+1);
}
}
}
#if 0
void hide_menu(void)
{
unsigned char i;
for (i = 0; i < NR_ITEMS; i++) {
clear_line(ROW_BRI+i);
// osd_setctrl1(CTRL1_OSDEN|CTRL1_RAMCLR);
// osd_setctrl1(CTRL1_OSDEN);
}
clear_line(ROW_BRI+NR_ITEMS+1);
clear_line(ROW_BRI+NR_ITEMS+2);
}
#endif
#if 0
void show_video(void)
{
// paint_line(0, 18, 7, 2);
// disp_str3(0, 18, PIN_VSEL == 0 ? "VIDEO 1" : "VIDEO 2");
disp_str2(1, 18, PIN_VSEL == 0 ? "VIDEO 1" : "VIDEO 2", 2);
// paint_line(1, 19, 4, 6);
// disp_str3(1, 19, HZ_IND ? "NTSC" : "PAL ");
disp_str2(2, 19, HZ_IND ? "NTSC" : "PAL ", 6);
}
void hide_video(void)
{
// paint_line(0, 18, 7, 0);
// disp_str3(0, 18, " ");
disp_str2(1, 18, " ", 0);
// paint_line(1, 19, 4, 0);
// disp_str3(1, 19, " ");
disp_str2(2, 19, " ", 0);
}
#endif
#if 0
bit mtv130_test(unsigned short c)
{
unsigned char i,j;
for (i = 0; i < 8; i++) {
for (j = 0; j < 16; j++) {
osd_putchar(i, j, c, 0x16);
c++;
}
}
return 1;
}
#endif
#if 0
void osd_back(void)
{
mtv130_puta(WIN1ROW_ROW, WIN1ROW_COL, 0x0f);
mtv130_puta(WIN1COLS_ROW, WIN1COLS_COL, 0x04);
mtv130_puta(WIN1COLE_ROW, WIN1COLE_COL,0xf1);
}
#endif
void osd_clear(void)
{
osd_setctrl1(CTRL1_OSDEN|CTRL1_WENCLR|CTRL1_RAMCLR);
osd_setctrl1(CTRL1_OSDEN);
}
void osd_init(void)
{
unsigned char i;
osd_setctrl1(CTRL1_OSDEN|CTRL1_WENCLR|CTRL1_RAMCLR);
osd_setctrl1(CTRL1_OSDEN);
osd_setctrl2(CTRL2_FBKGP);
for (i = 0; i < 15; i++) {
#ifdef CWS
osd_setrowattr(i, RACR_CHS|RACR_CWS);
#else
osd_setrowattr(i, 0);
#endif
}
mtv130_puta(HORD_ROW, HORD_COL,5);//12);
mtv130_puta(VERTD_ROW, VERTD_COL,4);// 4);//6);
mtv130_puta(CH_ROW, CH_COL, HZ_IND ? 0 : 4);
mtv130_puta(HORR_ROW, HORR_COL,36);
}
void power_turnon(void)
{
unsigned char i;
struct menuitem_struct code *item;
PIN_POWER = 1;
mdelay(500);
PIN_VSEL = 0;
PIN_POWLED = 0;
for (i = 0, item = &items[0]; i < NR_ITEMS; i++, item++) {
if (item->addr != -1) {
unsigned char c = item->read(item->addr);
item->apply(c);
}
}
osd_init();
}
void main(void) using 0
{
unsigned char id = EDIT_NULL;
unsigned char val;
unsigned char hide_expires;
// unsigned char video_expires;
unsigned char powoff_expires = 0;
bit visiblemenu= 0, auto_powoff = 1;
bit backflag=1;
initial();
power_turnon();
PIN_POWER = 0;
PIN_POWLED = 1;
#if 0
{
unsigned char i;
bit dummy = 1;
power_turnon();
for (i = 0; i < 15; i++)
osd_setrowattr(i, 0);
mtv130_test(0);
i = 0;
for (; dummy;) {
if (!key_on) {
continue;
}
i += 128;
mtv130_test(i);
key_on = 0;
}
}
#endif
//////////////////
// power_turnon();
///////////////////
for (;;) {
wdt_reset();
hide_expires = jiffies + HZ*5;
powoff_expires = xtime.min+10;
if (key_last == KEY_MENU || key_last == KEY_UP || key_last == KEY_DOWN) {
visiblemenu= 1;
if (id == EDIT_NULL) {
if (key_last != KEY_MENU)
goto loop_end;
id = EDIT_FIRST;
osd_clear();
show_menu();
} else {
select_item(id, 0);
if (key_last == KEY_UP) {
if (id == EDIT_FIRST)
id = EDIT_LAST;
else
--id;
} else {
if (id == EDIT_LAST)
id = EDIT_FIRST;
else
++id;
}
}
select_item(id, 1);
/* add */
val = items[id].read(items[id].addr);
goto loop_end;
}
if ((key_last == KEY_INC || key_last == KEY_DEC) && id != EDIT_NULL) {
struct menuitem_struct code *item = &items[id];
val = item->step(val, key_last == KEY_INC);
item->apply(val);
if (item->flags & MIF_DOCA)
item->draw(ROW_BRI+NR_ITEMS+1, 1, val);
else {
paint_line(ROW_BRI+id-1, 12, 18, val == item->defval ? 2 : 4);
item->draw(ROW_BRI+id-1, 12, val);
}
if (item->addr != -1)
at24cxx_writebyte(item->addr, val);
}
loop_end:
key_on = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -