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

📄 bbktuner.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
📖 第 1 页 / 共 5 页
字号:
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_GRAY43);
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED42, TUNER_MENU_GRAY43);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDataItemHili(BYTE bDataVal, BOOL fgHili) large
{
	WORD wStartY;

	wStartY = _wItemStY(_eTunerBrwItem) + TUNER_BRW_DATA_SELECT_HEIGHT * bDataVal;

	vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, wStartY, 
		TUNER_BRW_DATA_AREA_END_X - 1, wStartY + TUNER_BRW_DATA_SELECT_HEIGHT - 1);

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_GRAY43, TUNER_MENU_RED44);

		vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, wStartY, 
			TUNER_BRW_DATA_AREA_END_X, wStartY + TUNER_BRW_DATA_SELECT_HEIGHT);

		vTnrBrwDataItemCorner(bDataVal);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_GRAY43);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwArrowHili(BYTE bItemVal, BOOL fgUp, BOOL fgHili) large
{
	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_CHANNEL:
			if(fgUp)
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_UPBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_CH_UPBMP_END_Y);
			}
			else
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_CH_DOWNBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_CH_DOWNBMP_END_Y);
			}
		break;

		case TUNER_BRW_ITEM_SAVE:
			if(fgUp)
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_UPBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_SAVECH_UPBMP_END_Y);
			}
			else
			{
				vSetStartEndXY(TUNER_BRW_ARROW_START_X, TUNER_BRW_SAVECH_DOWNBMP_START_Y, TUNER_BRW_ARROW_END_X , TUNER_BRW_SAVECH_DOWNBMP_END_Y);
			}
			break;

		default:
		break;
	}

	if(fgHili)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE44, TUNER_MENU_RED44);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_RED44, TUNER_MENU_WHITE44);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwSignalItemHili(void) large
{
	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, _wItemStY(TUNER_BRW_ITEM_SIGNAL), 
		TUNER_BRW_ITEM_RECT_END_X - 1, _wItemStY(TUNER_BRW_ITEM_SIGNAL) + TUNER_BRW_ITEM_HEIGHT - 1);

	if(TUNER_BAND_FM == _eTunerBand)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE43, TUNER_MENU_WHITE42);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE42, TUNER_MENU_WHITE43);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwAmstepItemHili(void) large
{
	vSetStartEndXY(TUNER_BRW_ITEM_RECT_START_X, _wItemStY(TUNER_BRW_ITEM_AMSTEP), 
		TUNER_BRW_ITEM_RECT_END_X - 1, _wItemStY(TUNER_BRW_ITEM_AMSTEP) + TUNER_BRW_ITEM_HEIGHT - 1);

	if(TUNER_BAND_AM == _eTunerBand)
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE43, TUNER_MENU_WHITE42);
	}
	else
	{
		vChgColRep(WB_TUNER_MENU, TUNER_MENU_WHITE42, TUNER_MENU_WHITE43);
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDrawDataInput(BYTE bItemVal, BOOL fgHili) large
{
	BYTE bBgCol;
	BYTE bBodyCol;
	BYTE bNumCol;
	BYTE bFillCol;
	BYTE i;
	BYTE bChStr[6];
	BYTE bChTmp;

	if(_bStationNo > _bFmAmStationMax)
	{
		_bStationNo = _bFmAmStationMax;
	}

	bChTmp = _bStationNo;
	bChStr[0] = 1;
	bChStr[1] = (bChTmp / 10) + '0';
	bChStr[2] = 1;
	bChStr[3] = (bChTmp % 10) + '0';

	vTnrBrwGetDatCol(fgHili, &bBgCol, &bBodyCol, &bNumCol, &bFillCol);

	for(i=0; i<CHANNEL_INPUT_NS; i++)
	{
		if(i == _eChInput)
		{
			vSetMsgCol4(WB_TUNER_MENU, bNumCol, bNumCol, bNumCol, bBodyCol);
		}
		else
		{
			vSetMsgCol4(WB_TUNER_MENU, bBgCol, bBgCol, bBgCol, bBodyCol);
		}

		switch(bItemVal)
		{
			case TUNER_BRW_ITEM_CHANNEL:
				if(CHANNEL_INPUT_1 == i)
				{
					vOsdShowStrXY(TUNER_BRW_DIG1_START_X, TUNER_BRW_CH_DIG_START_Y, WB_TUNER_MENU, bChStr + 0);
				}
				else if(CHANNEL_INPUT_2 == i)
				{
					vOsdShowStrXY(TUNER_BRW_DIG2_START_X, TUNER_BRW_CH_DIG_START_Y, WB_TUNER_MENU, bChStr + 2);
				}
			break;

			case TUNER_BRW_ITEM_SAVE:
				if(CHANNEL_INPUT_1 == i)
				{
					vOsdShowStrXY(TUNER_BRW_DIG1_START_X, TUNER_BRW_SAVECH_DIG_START_Y, WB_TUNER_MENU, bChStr + 0);
				}
				else if(CHANNEL_INPUT_2 == i)
				{
					vOsdShowStrXY(TUNER_BRW_DIG2_START_X, TUNER_BRW_SAVECH_DIG_START_Y, WB_TUNER_MENU, bChStr + 2);
				}
			break;
			
			default:
			break;
		}
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDrawDataFreq(WORD wFreqTmp, BOOL fgHili) large
{
	BYTE bBgCol;
	BYTE bBodyCol;
	BYTE bNumCol;
	BYTE bFillCol;
	BYTE bChStr[6];

	vTnrBrwGetDatCol(fgHili, &bBgCol, &bBodyCol, &bNumCol, &bFillCol);

	if(TUNER_BRW_ITEM_SAVE != _eTunerBrwItem)
	{
		return;
	}

	vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);

	vTnrGetFreqStr(wFreqTmp, bChStr);

	/*Clear first!*/
	vSetStartEndXY(TUNER_BRW_SAVECH_MSG_START_X, TUNER_BRW_SAVECH_MSG_START_Y, 
		 TUNER_BRW_DATA_SAVECH_END_X , TUNER_BRW_SAVECH_MSG_END_Y);
	vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);

	if(TUNER_BAND_FM == _eTunerBand)
	{
		if(5 == bChStr[0])
		{
			vOsdShowArg(WB_TUNER_MENU, OSD_MSG_TUNER_SAVEFM5, OSD_NO_DISAPPEAR, bChStr);
		}
		else
		{
			vOsdShowArg(WB_TUNER_MENU, OSD_MSG_TUNER_SAVEFM4, OSD_NO_DISAPPEAR, bChStr);		
		}
	}
	else if(TUNER_BAND_AM == _eTunerBand)
	{
		if(4 == bChStr[0])
		{
			vOsdShowArg(WB_TUNER_MENU, OSD_MSG_TUNER_SAVEAM4, OSD_NO_DISAPPEAR, bChStr);
		}
		else
		{
			vOsdShowArg(WB_TUNER_MENU, OSD_MSG_TUNER_SAVEAM3, OSD_NO_DISAPPEAR, bChStr);		
		}
	}

	/*when switch AM to FM, the above show hase some bugs, use this to repair.*/
	vSetStartEndXY(TUNER_BRW_SAVECH_MSG_START_X, TUNER_BRW_SAVECH_MSG_START_Y, 
		TUNER_BRW_DATA_SAVECH_END_X , TUNER_BRW_SAVECH_MSG_END_Y + 2);
	vChgColRep(WB_TUNER_MENU, TUNER_MENU_BG, bFillCol);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDrawDataSelect(BYTE bItemVal, BOOL fgHili) large
{
	BYTE bBgCol;
	BYTE bBodyCol;
	BYTE bNumCol;
	BYTE bFillCol;
	WORD wStartY;
	BYTE i;

	vTnrBrwGetDatCol(fgHili, &bBgCol, &bBodyCol, &bNumCol, &bFillCol);

	vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);

	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_BAND:
			for(i=0; i<TUNER_BAND_NS; i++)
			{
				wStartY = TUNER_BRW_DATA_BAND_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * i;
				vOsdPasteMsgXY(TUNER_BRW_DATA_MSG_START_X, wStartY + TUNER_BRW_DATA_MSG_OFFSET_Y, 
					WB_TUNER_MENU, _sTunerBrwDataBand[i].wDataMsg);
			}
			break;

		case TUNER_BRW_ITEM_SIGNAL:
			for(i=0; i<TUNER_SIGNAL_NS; i++)
			{
				wStartY = TUNER_BRW_DATA_SIGNAL_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * i;
				vOsdPasteMsgXY(TUNER_BRW_DATA_MSG_START_X, wStartY + TUNER_BRW_DATA_MSG_OFFSET_Y, 
					WB_TUNER_MENU, _sTunerBrwDataSignal[i].wDataMsg);
			}
		break;

		case TUNER_BRW_ITEM_AMSTEP:
			for(i=0; i<AM_STEP_NS; i++)
			{
				wStartY = TUNER_BRW_DATA_STEP_START_Y + TUNER_BRW_DATA_SELECT_HEIGHT * i;
				vOsdPasteMsgXY(TUNER_BRW_DATA_MSG_START_X, wStartY + TUNER_BRW_DATA_MSG_OFFSET_Y, 
					WB_TUNER_MENU, _sTunerBrwDataAmstep[i].wDataMsg);
			}
			break;
			
		/*
		case TUNER_BRW_ITEM_AUTO:
			wStartY = TUNER_BRW_DATA_AUTO_START_Y;
			vOsdPasteMsgXY(TUNER_BRW_DATA_MSG_START_X, wStartY + TUNER_BRW_DATA_MSG_OFFSET_Y, 
			WB_TUNER_MENU, OSD_MSG_TUNER_SEARCHNOW);
		break;
		*/
		
		default:
		break;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrDrawBrwData(BYTE bItemVal, BOOL fgHili) large
{
	BYTE bBgCol;
	BYTE bBodyCol;
	BYTE bNumCol;
	BYTE bFillCol;

	vTnrBrwGetDatCol(fgHili, &bBgCol, &bBodyCol, &bNumCol, &bFillCol);

	vSetMsgCol4(WB_TUNER_MENU, bFillCol, bFillCol, bFillCol, bBodyCol);

	switch(bItemVal)
	{
		case TUNER_BRW_ITEM_CHANNEL:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_CH_START_Y, TUNER_BRW_DATA_CH_END_X - 1, TUNER_BRW_DATA_CH_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_CH_START_Y, TUNER_BRW_DATA_CH_END_X, TUNER_BRW_DATA_CH_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataInput(bItemVal, fgHili);
			vTnrBrwShowArrow(bItemVal, fgHili);
		break;

		case TUNER_BRW_ITEM_BAND:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_BAND_START_Y, TUNER_BRW_DATA_AREA_END_X - 1, TUNER_BRW_DATA_BAND_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_BAND_START_Y, TUNER_BRW_DATA_AREA_END_X, TUNER_BRW_DATA_BAND_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataSelect(bItemVal, fgHili);
			vTnrBrwDrawDataDot(bItemVal, _eTunerBand, TRUE, FALSE, fgHili);
		break;

		case TUNER_BRW_ITEM_SIGNAL:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_SIGNAL_START_Y, TUNER_BRW_DATA_AREA_END_X - 1, TUNER_BRW_DATA_SIGNAL_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_SIGNAL_START_Y, TUNER_BRW_DATA_AREA_END_X, TUNER_BRW_DATA_SIGNAL_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataSelect(bItemVal, fgHili);
			vTnrBrwDrawDataDot(bItemVal, _eSignalType, TRUE, FALSE, fgHili);
		break;

		case TUNER_BRW_ITEM_AMSTEP:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_STEP_START_Y, TUNER_BRW_DATA_AREA_END_X - 1, TUNER_BRW_DATA_STEP_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_STEP_START_Y, TUNER_BRW_DATA_AREA_END_X, TUNER_BRW_DATA_STEP_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataSelect(bItemVal, fgHili);
			vTnrBrwDrawDataDot(bItemVal, _eAmStep, TRUE, FALSE, fgHili);
		break;
		
		/*
		case TUNER_BRW_ITEM_AUTO:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_AUTO_START_Y, TUNER_BRW_DATA_AREA_END_X - 1, TUNER_BRW_DATA_AUTO_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_AUTO_START_Y, TUNER_BRW_DATA_AREA_END_X, TUNER_BRW_DATA_AUTO_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataSelect(bItemVal, fgHili);
		break;
		*/
		
		case TUNER_BRW_ITEM_SAVE:
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_SAVECH_START_Y, TUNER_BRW_DATA_AREA_END_X - 1, TUNER_BRW_DATA_SAVECH_END_Y - 1);
			vRectangle(WB_TUNER_MENU, 0, 0, TRUE, bFillCol);
			vSetStartEndXY(TUNER_BRW_DATA_AREA_START_X, TUNER_BRW_DATA_SAVECH_START_Y, TUNER_BRW_DATA_AREA_END_X, TUNER_BRW_DATA_SAVECH_END_Y);
			vTnrBrwItemDataCorner(fgHili);
			vTnrBrwDrawDataInput(bItemVal, fgHili);
			vTnrBrwShowArrow(bItemVal, fgHili);
			vTnrBrwDrawDataFreq(_wStationFreq[_bStationNo - 1], fgHili);
		break;

		case TUNER_BRW_ITEM_AUTO:
		case TUNER_BRW_ITEM_LINE:
		default:
		break;	
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwHead2Item(void) large
{
	#if 0
	_bTnrEnterKeyTimer = 0;
	#endif

	_eTunerBrwState = TUNER_BRW_STATE_ITEM;
	_eTunerBrwItem = TUNER_BRW_ITEM_CHANNEL;

	vTnrBrwHeadAreaHili(FALSE);

	vTnrBrwItemAreaHili(TRUE);

	vTnrBrwItemItemHili(_eTunerBrwItem, TRUE);
	vTnrDrawBrwData(_eTunerBrwItem, FALSE);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItem2Head(void) large
{
	vTnrBrwClearData();

	vTnrBrwItemItemHili(_eTunerBrwItem, FALSE);

	_eTunerBrwState = TUNER_BRW_STATE_HEAD;
	_eTunerBrwItem = TUNER_BRW_ITEM_NONE;

	vTnrBrwHeadAreaHili(TRUE);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItem2Data(void) large
{
	_eTunerBrwState = TUNER_BRW_STATE_DATA;

	vTnrBrwItemAreaHili(FALSE);
	vTnrBrwDataAreaHili(TRUE);

	switch(_eTunerBrwItem)
	{
		case TUNER_BRW_ITEM_CHANNEL:
		case TUNER_BRW_ITEM_SAVE:
			_eChInput = CHANNEL_INPUT_1;
			_bStationPrev = _bStationNo;
			vTnrBrwShowArrow(_eTunerBrwItem, TRUE);
		break;

		case TUNER_BRW_ITEM_BAND:
		case TUNER_BRW_ITEM_SIGNAL:
		case TUNER_BRW_ITEM_A

⌨️ 快捷键说明

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