⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmenu.c

📁 dvr
💻 C
字号:
/*
********************************************************************************
*
* (c) Copyright 2002, Vineyard Technologies, Inc.
*
* Filename : gmenu.c
* Programmer(s): Steve KyeongHyeon Lee
* Created : 2003/05/07
* Modified :
*
* Description :
********************************************************************************
*/
#include "types.h"


#include "8052reg.h"
#include <stdio.h>
#include <absacc.h>
#include "main.h"
#include "eprom.h"
#include "lib.h"
#include "gio.h"
#include "hdd_if.h"
#include "key.h"
#include "types.h"
#include "i2c.h"
#include "gosd.h"
#include "ghdd.h"
#include "gsearch.h"
#include "md.h"
#include "mdmenu.h"
#ifdef TMP_DEL
#ifdef LANIF
#include "lan.h"
#endif
#include "rdcp.h"
#endif
#include "audio.h"
#include "bit1601.h"
#include "rmcon.h"
#include "sio.h"

#ifdef RS232_TO_PC_TRANSFER
#include "RS232toPCapp.h"
#endif

//######################################################################
//
//######################################################################
extern xdata u8 gv_encoder_mode;
extern xdata u8 gv_temp_CAMERA_OF_RECORD;
extern xdata u8 gv_NTSC_PAL;
extern xdata u8 gv_sensor_flag;
extern xdata u8 gv_ff_mode;

extern xdata u8 osdgv_menu_base;
extern xdata u8 EOD;
extern xdata u8 FOD;
extern xdata u8 gv_skip_search_block;
#ifdef TMP_DEL
#ifdef LANIF
extern xdata u8 gv_lanif;
#endif
#endif
extern xdata u8 gv_rec_frame_rate;
extern xdata u8	gv_evt_msg2read;

extern void encoder_mode(u8 sensor);
extern void Channel_Display(u8 mode);
extern u8	decoder_mode(void);
//extern void osd_printf(u8 index_x, u8 index_y, u8 length_of_string,u8 *string);
extern void xioWriteByte(u8 ipw_regidx, u8 ipw_regval);
extern void dv03_enable(void);
extern void osd_page_clear(void);
extern void top_mode(void);
extern void encoder_reconfig(void);
extern void dec_ch_mode_set();
extern void enc_buf_clr_proc(void);
extern u8	key_check(void);
extern void wakeup_genesis(u8 mode);

#ifdef RS232_TO_PC_TRANSFER
extern xdata u8 gv_rs232_move_flag;
#endif

//######################################################################
//
//######################################################################
#define XCCORD 13
#define TIME_XCCORD 25
#define SCHEDULE_XCCORD 19
#ifndef SINGLE_CHANNEL
	#define TMENU_FIRST 	0
	#define TMENU_START	0
#else
  #ifdef SINGLE_CHANNEL_CH1_ONOFF_OSD
	#define TMENU_FIRST 	2//3
	#define TMENU_START	2//3
  #else
        #define TMENU_FIRST 	3//3
	#define TMENU_START	3//3
  #endif
#endif

#ifdef TMP_DEL
  #ifdef LANIF
     #define TMENU_LAST  	9
  #endif
#else
  #ifdef DISPLAY_IP_ADDRESS
     #define TMENU_LAST  	9
  #else
     #ifdef RS232_TO_PC_TRANSFER
         #define TMENU_LAST  	9
     #else
         #ifdef POWER_ON_RECORD
              #define TMENU_LAST  	9
         #else
              #define TMENU_LAST  	8
         #endif
     #endif
  #endif
#endif


#define MAX_EVT_BUF		7

#if USE_ADJ
#define BRIGHTNESS_MIN          5
#define BRIGHTNESS_MAX          255
#define CONTRAST_MIN            5
#define CONTRAST_MAX            125
#define SATURATION_MIN          5
#define SATURATION_MAX          255
#define COLORTEMP_MIN           5
#define COLORTEMP_MAX           255
#endif

//######################################################################
//
//######################################################################
xdata u8  ntsc_code_frame_rate[9]  = {0,1,2,3,5,6,9,14,29};
xdata u8  pal_code_frame_rate[9]  = {0,1,2,3,5,7,11,24,24};
xdata u8 code_frame_rate[9];
xdata u8 gv_p_ch = 1;
xdata u8 gv_on_play_flag = 0;
xdata u8 gv_Current_Channel;
xdata u8 st_time_data[2][6];
xdata u8 ed_time_data[2][6];
xdata u8 gv_depth_1_menu = 100;
xdata u8 gv_depth_2_menu = 100;
xdata u8 gv_depth_3_menu = 100;
xdata u8 gv_cursor_position = 0;
xdata u8 gv_time_data[6];
xdata u8 gv_play_mode = NOPLAY_MODE; // Steve : Must be initialized for OSD
xdata u8 gv_rec_mode;
xdata u8 gv_PauseMode=0;
xdata u8 confirm_ok1 = 1;
xdata u8 confirm_ok2 = 1;
xdata u8 tmp_eprom_passwd_base[6];
xdata EvtNode gv_evt_start[MAX_EVT_BUF];
xdata EvtNode gv_evt_stop[MAX_EVT_BUF];
xdata u16 gv_evt_start_off[MAX_EVT_BUF];
xdata u16 gv_evt_stop_off[MAX_EVT_BUF];
xdata u16 gv_evt_start_num;
xdata u8 gv_evt_cnt;
xdata u8 gv_evt_first_idx;
xdata u8 gv_time_search_mode;
xdata u32 gv_lba_start;
#ifdef LANIF
xdata u8 gv_tmp_buf[18];
xdata u8 gv_x_pos;
xdata u8 gv_lan_restart = FALSE;
#endif

#ifdef RECORD_STOP_PASSWORD
xdata u8 record_stop_pwd_status = 0;
extern xdata   u8      blink_time;
#endif





void EVENT_DISP(u8 hid, u8 cmd);
u8 TIME_SEARCH_input(u8 keyy);
void TIME_SEARCH_DISP2(u8 hid);
void PASSWORD_INPUT(u8 mode, u8 key);
void PASSWORD_MENUDISP(u8 mode);
void nvram_initialize(u8 msg_on);
void HDDINFO_RECORD_TIME_DISP(void);
void ds1307_time_set(void);
void en_top(void);
u32 LBA_decrement(u8 hddIndex, u32 lba);
u32 LBA_increment(u8 hddIndex, u32 lba);
void osd_put_num(u8 x, u8 y, u16 len, u16 num);
void update_target_time(u8 idx);
void play_message(u8 key);
u8 play_start(void);
void SearchNewEvent(void);
void TIME_SEARCH_DISP(void);
#ifdef NOT_JUNK
void get_time_for_play(u8 hddIndex, u32* start_lba, u8* start_time, u8* end_time);
#endif
u8 adjust_audio_frame(u8 mode);
void push_channel_button(u8 key);

#if USE_ADJ
void DISPATCH_Go(u8 key);
void DISPATCH_BrightnessMenu(void);
void DISPATCH_BrightnessGo(u8 key);
void DISPATCH_ContrastMenu(void);
void DISPATCH_ContrastGo(u8 key);
void DISPATCH_SaturationMenu(void);
void DISPATCH_SaturationGo(u8 key);
void DISPATCH_ACCamMenu(void);
void DISPATCH_ACCamGo(u8 key);
void DISPATCH_ColorTempMenu(void);
void DISPATCH_ColorTempGo(u8 key);

code u8 *apbMainMenu[4] =
#ifdef FONT_SC
    {
      //"12345678901234567"
        "1:               ",               //  0    MENU_BRIGHTNESS
        "2:               ",               //  1    MENU_CONTRAST
        "3:               ",               //  2    MENU_SATURATION
        "4:               ",

    };
#else
    {
      //"12345678901234567"
        "Brightness       ",               //  0    MENU_BRIGHTNESS
        "Contrast         ",               //  1    MENU_CONTRAST
        "Saturation       ",               //  2    MENU_SATURATION
        "Color Temperature",

    };
#endif
#endif

//void test001(u8* hex)
//{
//        	osd_printf(XCCORD+ 4,osdgv_menu_base+7,2,"  ");
//        	osd_printf(XCCORD+ 4,osdgv_menu_base+7,2,hex);
//}

//================================================================
//
//================================================================
#define BLINK_X_CORD_CNTR   44
#define BLINK_Y_CORD_Y		11

void blinking_message(u8 length1, char* str1, u8 length2, char* str2)
{
	xdata u8 i;

	for(i=0;i<3;i++)
	{
		osd_printf(BLINK_X_CORD_CNTR-length1, BLINK_Y_CORD_Y, length1, str1);
		if(length2)
			osd_printf(BLINK_X_CORD_CNTR-length2, BLINK_Y_CORD_Y+1, length2, str2);
		delay_time(50000,3);

		osd_erase(BLINK_X_CORD_CNTR-length1, BLINK_Y_CORD_Y,length1);
		if(length2)
			osd_erase(BLINK_X_CORD_CNTR-length2, BLINK_Y_CORD_Y+1,length2);
		delay_time(50000,2);
	}
}
#ifdef FONT_SC
void blinking_message_sc(u8 length1, char* str1)
{
	xdata u8 i;

	for(i=0;i<3;i++)
	{
		osd_printf(BLINK_X_CORD_CNTR-length1, BLINK_Y_CORD_Y, length1, str1);
		osd_putch((BLINK_X_CORD_CNTR-length1)/2+length1-2, BLINK_Y_CORD_Y,2);
		delay_time(50000,3);
		osd_erase(BLINK_X_CORD_CNTR-length1, BLINK_Y_CORD_Y,length1+1);
		delay_time(50000,2);
	}
}
#endif
//===============================================================================
//
//===============================================================================
u8 cal_cood_ary[12]={36,34,30,28,24,22,18,16,12,10,6,4};
u8 cal_cood(u8 movx)
{
	u8 dataa;

	dataa = 4;
	if(gv_cursor_position<12)
		dataa = cal_cood_ary[gv_cursor_position]+movx;
	return dataa;
}

//===============================================================================
//
//===============================================================================
u8 bcd2bin(u8 bcdval)
{
	u8 binval;
	if(bcdval >= 0x10)
		binval = (bcdval&0x0f) + 10*(bcdval>>4);
	else
		binval = bcdval;
	return binval;
}

//===============================================================================
//
//===============================================================================
u8 bin2bcd(u8 binval)
{
	u8 bcdval;
	if(binval >= 10)
		bcdval = ((binval/10) << 4) | (binval % 10);
	else
		bcdval = binval;
	return bcdval;
}

//===============================================================================
//
//===============================================================================
void ds1307_time_set(void)
{
	u8 i;
	for(i=0;i<6;i++)
		i2c_pkt_write(0xd0, (i>2)?i+1:i, bin2bcd(gv_time_data[i]));
}

//===============================================================================
//
//===============================================================================
void ds1307_time_read(void)
{
	xdata u8 time_err=0;

	u8 i;
	for(i=0;i<6;i++)
		gv_time_data[i] = bcd2bin(i2c_pkt_read(0xd0,(i>2)?i+1:i));
	if(gv_time_data[0] > 59) time_err = 1;	// sec
	if(gv_time_data[1] > 59) time_err = 1;	// min
	if(gv_time_data[2] > 24) time_err = 1;	// hour
	if(gv_time_data[3] > 31 || gv_time_data[3] == 0) time_err = 1;	// day
	if(gv_time_data[4] > 12 || gv_time_data[4] == 0) time_err = 1;	//month
	if(gv_time_data[5] > 99) time_err = 1;	//year

	if(time_err == 1)
	{
#ifdef DEBUG_ERR_TIME
		printf("\n\rds1307_time_read err: ");
		{int i; for(i=5;i>=0;i--) printf("%02d:", (int) gv_time_data[i]); }
#endif
		gv_time_data[0] = 1;
		gv_time_data[1] = 1;
		gv_time_data[2] = 1;
		gv_time_data[3] = 1;
		gv_time_data[4] = 1;
		gv_time_data[5] = 5; // 2005 is default value
		time_err = 0;

		ds1307_time_set();
	}
}

//===============================================================================
//
//===============================================================================
void real_time_read(u8 option)
{
	u8 i;
	if(option)
	{
		for(i=0;i<6;i++)
			gv_time_data[i] = bcd2bin(i2c_pkt_read(0xd0,(i>2)?i+1:i));
	}
	else
	{
		gv_time_data[0] = bcd2bin(i2c_pkt_read(0xd0,0x00));
		if(gv_time_data[0] == 0)
		{
			gv_time_data[1] = bcd2bin(i2c_pkt_read(0xd0,0x01));
			if(gv_time_data[1] == 0)
			{
				gv_time_data[2] = bcd2bin(i2c_pkt_read(0xd0,0x02));
				if(gv_time_data[2] == 0)
				{
					gv_time_data[3] = bcd2bin(i2c_pkt_read(0xd0,0x04));
					gv_time_data[4] = bcd2bin(i2c_pkt_read(0xd0,0x05));
					gv_time_data[5] = bcd2bin(i2c_pkt_read(0xd0,0x06));
				}
			}
		}
	}
}

//===============================================================================
//
//===============================================================================
void LBA_read(u8 hddIndex)
{
	xdata u8	ch0,ch1,ch2,ch3;
	xdata u8	offset = (hddIndex)?0x21:0x25;// Current Writting LBA updated every one second

	gv_WCurrent_LBA[hddIndex] = 0;
	ch0 = i2c_pkt_read(0xd0,offset+0);
	ch1 = i2c_pkt_read(0xd0,offset+1);
	ch2 = i2c_pkt_read(0xd0,offset+2);
	ch3 = i2c_pkt_read(0xd0,offset+3);
	gv_WCurrent_LBA[hddIndex] =
		((((u32)ch3)&0x000000ff)<<24)|
		((((u32)ch2)&0x000000ff)<<16)|
		((((u32)ch1)&0x000000ff)<<8)|
		 (((u32)ch0)&0x000000ff);
}

//===============================================================================
//
//===============================================================================
void LBA_write(u8 hddIndex)
{
	xdata u32	long_data;
	xdata u8	offset = (hddIndex)?0x21:0x25;  // Current Writting LBA updated every one second

	long_data = gv_WCurrent_LBA[hddIndex];
	i2c_pkt_write(0xd0,offset+0, long_data&0x000000ff); long_data = long_data >> 8;
	i2c_pkt_write(0xd0,offset+1, long_data&0x000000ff); long_data = long_data >> 8;
	i2c_pkt_write(0xd0,offset+2, long_data&0x000000ff); long_data = long_data >> 8;
	i2c_pkt_write(0xd0,offset+3, long_data&0x000000ff);
}

//===============================================================================
//
//===============================================================================

void HELP_MENUDISP(u8 option)
{
#ifndef NFS_1	
	switch(option)
	{
#ifdef FONT_SC

		case 0:		                           //1234567890123456789012345678
			osd_printf(19,osdgv_menu_base+12,28,"N (< >),     N (ght)  BC    ");//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -