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

📄 bbktuner.c

📁 关于收音功能代码,并且显示在OSD和VFD上
💻 C
📖 第 1 页 / 共 5 页
字号:
	switch(_eChInput)
	{
		case CHANNEL_INPUT_1:
			if(_bIRKey < (_bFmAmStationMax/10+1))
			{
				_bStationNo = _bIRKey * 10 + _bStationNo % 10;
				if(_bStationNo > _bFmAmStationMax)
				{
					_bStationNo = _bFmAmStationMax;
				}

				_eChInput = CHANNEL_INPUT_2;
			}
		break;

		case CHANNEL_INPUT_2:
			bTmp = _bStationNo / 10;
			if(bTmp < _bFmAmStationMax/10)
			{
				if((0 == bTmp) && (0 == _bIRKey))
				{
					break;
				}
				_bStationNo = _bIRKey + (_bStationNo / 10) * 10;
				_eChInput = CHANNEL_INPUT_1;

				vTnrMenuEnterStation();
			}
			else if(_bFmAmStationMax/10 == bTmp && 0 == _bIRKey)
			{
				_bStationNo = _bFmAmStationMax;
				_eChInput = CHANNEL_INPUT_1;

				vTnrMenuEnterStation();
			}
		break;

		default:
		return(UOP_OK);
	}

	vTnrDrawMainMenuChNum();

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuUpKey(void) large
{
	//vTnrMainMenuHiliArrow(TRUE, TRUE);
	//vTnrMainMenuHiliArrow(FALSE, FALSE);

	if(_bStationNo < _bFmAmStationMax)
	{
		_bStationNo ++;
	}
	else
	{
		_bStationNo = 1;
	}

	vTnrMenuEnterStation();

	_eChInput = CHANNEL_INPUT_1;
	vTnrDrawMainMenuChNum();
	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuDownKey(void) large
{
	//vTnrMainMenuHiliArrow(TRUE, FALSE);
	//vTnrMainMenuHiliArrow(FALSE, TRUE);

	if(_bStationNo > 1)
	{
		_bStationNo --;
	}
	else
	{
		_bStationNo = _bFmAmStationMax;
	}

	vTnrMenuEnterStation();

	_eChInput = CHANNEL_INPUT_1;
	vTnrDrawMainMenuChNum();
	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuLeftKey(void) large
{
	vTnrShowMenuSlide(FALSE);

	if(fgTnrGetNextFreq(FALSE))
	{
		vStartIFCounter(_wActiveFreq, FALSE);
		vTnrShowActiveFrequency();
	}

	vTnrShowMenuSlide(TRUE);

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuRightKey(void) large
{
	vTnrShowMenuSlide(FALSE);

	if(fgTnrGetNextFreq(TRUE))
	{
		vStartIFCounter(_wActiveFreq, FALSE);
		vTnrShowActiveFrequency();
	}

	vTnrShowMenuSlide(TRUE);

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuAutoSkipUpKey(void) large
{
	_bStationPrev = _bStationNo;
	_bTnrSearchTime = 0;
	_eTunerMode = TUNER_MODE_AUTO_SKIP_UP;

	if(TUNER_STATE_MENU == _eTunerState)
	{
		vTnrMainMenuHiliArrow(TRUE, TRUE);
		vTnrMainMenuHiliArrow(FALSE, FALSE);
	}

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuAutoSkipDownKey(void) large
{
	_bStationPrev = _bStationNo;
	_bTnrSearchTime = 0;
	_eTunerMode = TUNER_MODE_AUTO_SKIP_DOWN;

	if(TUNER_STATE_MENU == _eTunerState)
	{
		vTnrMainMenuHiliArrow(TRUE, FALSE);
		vTnrMainMenuHiliArrow(FALSE, TRUE);
	}

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuEnterKey(void) large
{
	#if 0
	if(TUNER_MODE_NORMAL == _eTunerMode)
	{
		_bTnrEnterKeyTimer = AUTO_SKIP_KEEP_TIME;
	}
	else if(TUNER_MODE_AUTO_SKIP_UP == _eTunerMode || TUNER_MODE_AUTO_SKIP_DOWN == _eTunerMode)
	{
		_eTunerMode = TUNER_MODE_NORMAL;
	}
	#endif

	return(UOP_OK);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTnrMenuSaveStationKey(void) large
{
	vTnrMainMenuHiliArrow(TRUE, FALSE);
	vTnrMainMenuHiliArrow(FALSE, FALSE);

	if(_bStationNo > _bFmAmStationMax || _bStationNo < 1)
	{
		return(UOP_OK);
	}

	if(wTunerReadChannelFreq(_bStationNo) != _wActiveFreq)
	{
		vEepromDelay(EEPROM_DELAY);

		vTunerSaveChannelFreq(_bStationNo, _wActiveFreq);

		vTnrShowMenuPoint(_bStationNo, FALSE, FALSE);
		_wStationFreq[_bStationNo - 1] = _wActiveFreq;
		vTnrShowMenuPoint(_bStationNo, FALSE, TRUE);

		vStartIFCounter(_wActiveFreq, FALSE);
		vTnrShowSaveFreqMsg(_wActiveFreq, _bStationNo);
		vTunerSaveChannel();
	}

	_eChInput = CHANNEL_INPUT_1;
	vTnrDrawMainMenuChNum();
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static BOOL fgTunerMainMenuState(void) large
{
	BOOL fgRet = UOP_OK;

	switch(_bIRKey)
	{
		case IR_NUM0:
		case IR_NUM1:
		case IR_NUM2:
		case IR_NUM3:
		case IR_NUM4:
		case IR_NUM5:
		case IR_NUM6:
		case IR_NUM7:
		case IR_NUM8:
		case IR_NUM9:
			fgRet = fgTnrMenuNumKey();
		break;

		case IR_UP:
			fgRet = fgTnrMenuUpKey();
		break;

		case IR_DOWN:
			fgRet = fgTnrMenuDownKey();
		break;

		case IR_RIGHT:
		#ifdef USE_JOG_DIAL
		case IR_AMP_DIAL_DN:
		#endif
			fgRet = fgTnrMenuRightKey();
		break;

		case IR_LEFT:
		#ifdef USE_JOG_DIAL
		case IR_AMP_DIAL_UP:
		#endif
			fgRet = fgTnrMenuLeftKey();
		break;

		case IR_ENTER:
		case IR_PLAY_PAUSE:
			fgRet = fgTnrMenuEnterKey();
		break;

		case IR_CANCEL:
			fgRet = fgTnrMenuCancelKey();
		break;

		case IR_PREV:
			_eTunerMode = TUNER_MODE_SEARCH_DOWN;
			_eTunerSearchState = TUNER_SEARCH_INIT;
		break;

		case IR_NEXT:
			_eTunerMode = TUNER_MODE_SEARCH_UP;
			_eTunerSearchState = TUNER_SEARCH_INIT;
		break;

		default:
		break;
	}

	return(fgRet);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwGetItemCol(BYTE bItemVal, BOOL fgHili, BYTE *pbBodyCol, BYTE *pbFillCol) large
{
	if(fgHili)
	{
		*pbBodyCol = TUNER_MENU_WHITE44;

		if((bItemVal == _eTunerBrwItem) && (bItemVal < TUNER_BRW_ITEM_NS))
		{
			*pbFillCol = TUNER_MENU_RED44;
		}
		else
		{
			*pbFillCol = TUNER_MENU_GRAY43;
		}
	}
	else
	{
		*pbBodyCol = TUNER_MENU_WHITE42;

		if( (bItemVal == _eTunerBrwItem) && (bItemVal < TUNER_BRW_ITEM_NS))
		{
			*pbFillCol = TUNER_MENU_RED42;
		}
		else
		{
			*pbFillCol = TUNER_MENU_GRAY42;
		}
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwGetDatCol(BYTE fgHili, BYTE *pbBgCol, BYTE *pbBodyCol, BYTE *pbNumCol, BYTE *pbFillCol) large
{
	if(fgHili)
	{
		*pbBgCol = TUNER_MENU_WHITE41;
		*pbBodyCol = TUNER_MENU_WHITE44;
		*pbNumCol = TUNER_MENU_RED;
		*pbFillCol = TUNER_MENU_GRAY43;
	}
	else
	{
		*pbBgCol = TUNER_MENU_WHITE41;
		*pbBodyCol = TUNER_MENU_WHITE42; 
		*pbNumCol = TUNER_MENU_BLACK41;
		*pbFillCol = TUNER_MENU_GRAY42;
	}
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItemDataCorner(BOOL fgHili) large
{
	BYTE bCornerTopLeft;
	BYTE bCornerTopRight;
	BYTE bCornerBottomLeft;
	BYTE bCornerBottomRight;

	if(fgHili)
	{
		bCornerTopLeft     = BMP_CORNER_TL_B75_TRA;
		bCornerTopRight    = BMP_CORNER_TR_B75_TRA;
		bCornerBottomLeft  = BMP_CORNER_BL_B75_TRA;
		bCornerBottomRight = BMP_CORNER_BR_B75_TRA;
	}
	else
	{
		bCornerTopLeft     = BMP_CORNER_TL_B50_TRA;
		bCornerTopRight    = BMP_CORNER_TR_B50_TRA;
		bCornerBottomLeft  = BMP_CORNER_BL_B50_TRA;
		bCornerBottomRight = BMP_CORNER_BR_B50_TRA;
	}

	vHnrPasteCorner(WB_TUNER_MENU, bCornerTopLeft, bCornerTopRight, bCornerBottomLeft, bCornerBottomRight);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwItemItemCorner(BYTE bItemVal) large
{
	BYTE bCornerTopLeft;
	BYTE bCornerTopRight;
	BYTE bCornerBottomLeft;
	BYTE bCornerBottomRight;

	if(0 == bItemVal)
	{
		bCornerTopLeft     = BMP_CORNER_TL_RED_TRA;
		bCornerTopRight    = BMP_CORNER_TR_RED_TRA;
	}
	else
	{
		bCornerTopLeft     = BMP_CORNER_TL_RED_B75;
		bCornerTopRight    = BMP_CORNER_TR_RED_B75;
	}

	if(TUNER_BRW_ITEM_MAX == bItemVal)
	{
		bCornerBottomLeft  = BMP_CORNER_BL_RED_TRA;
		bCornerBottomRight = BMP_CORNER_BR_RED_TRA;
	}
	else
	{
		bCornerBottomLeft  = BMP_CORNER_BL_RED_B75;
		bCornerBottomRight = BMP_CORNER_BR_RED_B75;
	}

	vHnrPasteCorner(WB_TUNER_MENU, bCornerTopLeft, bCornerTopRight, bCornerBottomLeft, bCornerBottomRight);
}

/***************************************************************************************
    Function : 
    Description : 
    Parameter : 
    Return    : 
***************************************************************************************/
static void vTnrBrwDataItemCorner(BYTE bDataVal) large
{
	BYTE bCornerTopLeft;
	BYTE bCornerTopRight;
	BYTE bCornerBottomLeft;
	BYTE bCornerBottomRight;
	BYTE bMaxItem;

	switch(_eTunerBrwItem)
	{
		case TUNER_BRW_ITEM_BAND:
			bMaxItem = TUNER_BAND_MAX;
		break;

		case TUNER_BRW_ITEM_SIGNAL:
			bMaxItem = TUNER_SIGNAL_MAX;
		break;

⌨️ 快捷键说明

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