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

📄 stpmain.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 5 页
字号:
#endif

static void vEnVerMenu(void) large
{
  if ((_bMenu == GENERAL_PAGE) && (_bEnVerIdx != 0x0F))
  {
    if ((_bEnVerIdx < sizeof(_pbEnVerMenu)/sizeof(BYTE)) && (_bIRKey == _pbEnVerMenu[_bEnVerIdx]))
    {
      _bEnVerIdx++;
    }
    else
    {
      _bEnVerIdx = 0;
    }

    if (_bEnVerIdx == sizeof(_pbEnVerMenu)/sizeof(BYTE))
    {
  //    _bIRKey = IR_NONE;
      _bEnVerIdx = 0x0F;
      _bDlgId = DLG_VERSION;
      _bOsdState = STPSTT_DIALOG;
      _bMenu = VER_PAGE;
      vRedrawMenu(ENTRY_FUN_REDRAW);
    }
  }
#ifdef NO_RS232_PORT //0 for port GPIO9/10
  if(_bIRKey == IR_NUM0)
  {
    WriteBIM(BIM_RISCSSH, 0x15); // Enable RS-232
	  SetBitBIM(BIM_PCTL2, DSPT);

    ClrBitBIM(BIM_PCTL2, RS232P2);
    WriteBIM(BIM_PLLS, PS_ANALOG_PIN_CTRL1); ClrBitBIM(BIM_PLLD, UD_GPIO9_EN|LR_GPIO10_EN);
  }
  if(_bIRKey == IR_NUM2) //1 for port ALAR
  {
    WriteBIM(BIM_RISCSSH, 0x15); // Enable RS-232
	  SetBitBIM(BIM_PCTL2, DSPT);

//  	BIM_RISCSSH
//  SetBitBIM(BIM_PCTL2, DSPT);
    SetBitBIM(BIM_PCTL2, RS232P2);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_0);SetBitBIM(ADAC_OUT_CFG1,ADAC_AR);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_5);SetBitBIM(ADAC_OUT_CFG1,ADAC_AR);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_8);SetBitBIM(ADAC_OUT_CFG1,ADAC_AR);
 //   InitIoPIN_GPIO1(0);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_0);SetBitBIM(ADAC_OUT_CFG1,ADAC_AL);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_5);SetBitBIM(ADAC_OUT_CFG1,ADAC_AL);
    WriteBIM(ADAC_OUT_CFG0,ADAC_CONFIG_1_8);SetBitBIM(ADAC_OUT_CFG1,ADAC_AL);
//    InitIoPIN_GPIO0(0);
  }
#endif
}


#ifdef PANEL_FACTORY_SETTING
static void vEnPanelFactoryMenu(void) large
{
  if ((_bMenu == GENERAL_PAGE) && (_bEnPanelFactoryIdx != 0x0F))
  {
    if ((_bEnVerIdx < sizeof(_pbEnPanelFactoryMenu)/sizeof(BYTE)) && (_bIRKey == _pbEnPanelFactoryMenu[_bEnPanelFactoryIdx]))
    {
      _bEnPanelFactoryIdx++;
    }
    else
    {
      _bEnPanelFactoryIdx = 0;
    }

    if (_bEnPanelFactoryIdx == sizeof(_pbEnPanelFactoryMenu)/sizeof(BYTE))
    {
      _bEnPanelFactoryIdx = 0x0F;
      _bOsdState = STPSTT_SUBMENU;
      _bMenu =  PANEL_FACTORY_PAGE;//VDO_PQ_PAGE;
      vRedrawMenu(ENTRY_FUN_REDRAW);
    }
  }
}

#endif


static void vEnRegCodeChg(void) large
{
  if ((_bMenu == PRE_PAGE) && (_bRegChgIdx != 0x0F))
  {
    if ((_bRegChgIdx < sizeof(_pbEnRegChg)/sizeof(BYTE)) && (_bIRKey == _pbEnRegChg[_bRegChgIdx]))
    {
      _bRegChgIdx++;
    }
    else
    {
      _bRegChgIdx = 0;
    }
  }

  if ((_bMenu == PRE_PAGE) && (_bRegChgIdx == sizeof(_pbEnRegChg)/sizeof(BYTE)))
  {
//    _bIRKey = IR_NONE;
    _bRegChgIdx = 0x0F;
    _bDlgId = DLG_REGCODE;
    _bOsdState = STPSTT_DIALOG;
    _bMenu = REGCODE_PAGE;
    vRedrawMenu(ENTRY_FUN_REDRAW);
  }
}

#if 0
void vShowVerPage(void)
{
  if ((_bMenu != PASS_PAGE) && (_bShowVerIdx != 0x0F))
  {
    if ((_bShowVerIdx < sizeof(_ShowVerMenu)/sizeof(BYTE)) && (_bIRKey == _ShowVerMenu[_bShowVerIdx]))
    {
      _bShowVerIdx++;
    }
    else
    {
      _bShowVerIdx = 0;
    }
  }

#ifdef CHK_PASSWD_VCD_EN
  if (_bMenu == PASS_PAGE)
  {
    if ((_bVcdEnIdx < sizeof(_pbVcdEnPass)/sizeof(BYTE)) && (_bIRKey == _pbVcdEnPass[_bVcdEnIdx]))
    {
      _bVcdEnIdx++;
    }
    else
    {
      _bVcdEnIdx = 0;
    }
  }
#endif

  if ((_bMenu != PASS_PAGE) && (_bShowVerIdx == sizeof(_ShowVerMenu)/sizeof(BYTE)))
  {
    _bShowVerIdx = 0x0F;
    vRedrawMenu(ENTRY_FUN_REDRAW);
  }

#ifdef CHK_PASSWD_VCD_EN
  if ((_bMenu == PASS_PAGE) && (_bVcdEnIdx == sizeof(_pbVcdEnPass)/sizeof(BYTE)))
  {
    vClearMsgRng();
    if (bEepromReadByte(VCD_PASSWRD_POSITION) == TRUE)
    {
      fgEepromWriteByte(VCD_PASSWRD_POSITION, FALSE);
      //vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_VCD_DISABLE, WB_SETUP_MSG);
      vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_ON, WB_SETUP_MSG);
    }
    else
    {
      fgEepromWriteByte(VCD_PASSWRD_POSITION, TRUE);
      //vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_VCD_ENABLE, WB_SETUP_MSG);
      vSetupEntryShowXY(MSG_X, MSG_Y, OSD_MSG_OFF, WB_SETUP_MSG);
    }
  }
#endif
}
#endif
#if 0
void vClearUpDownMark(void)
{
  _wStartX = STP_DATA_START_X+DATA_LEN/2-20;
  _wEndX = _wStartX+40;
  _wStartY = 5;
  _wEndY = 30;
  if ((_bMinShowDat > 0) && (_bDataCur > _rMenuRoot.bEntryNo))
  {
    vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
  }
  _wStartY = 290;
  _wEndY = 290+32;
  if ((_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMaxOpt > _rMenuRoot.bEntryNo) &&
      (_bDataCur+_rMenuRoot.bEntryNo < _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMaxOpt))
  {
    vRectangle(WB_SETUP_ITEM, 0, 0, 1, ENTRY_COL_BG);
  }
}
#endif

#ifdef ENABLE_USER_LANG_CODE
BYTE bCheckLangCode(WORD wEEPos, BYTE bValue) large
{
  BYTE  bTmp1, bTmp2;

  bTmp1 = bSharedInfo(SH_DLG_VAL_0) * 10 + bSharedInfo(SH_DLG_VAL_1);
  bTmp2 = bSharedInfo(SH_DLG_VAL_2) * 10 + bSharedInfo(SH_DLG_VAL_3);

  switch(_bDlgId)
  {
    case DLG_AUDIO_LANG_CODE:
      fgEepromWriteByte(AUDIO_LCD_POSITION_0, bTmp1);
      fgEepromWriteByte(AUDIO_LCD_POSITION_1, bTmp2);
      vSystemPrefAuLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
      break;
    case DLG_MENU_LANG_CODE:
      fgEepromWriteByte(MENU_LCD_POSITION_0, bTmp1);
      fgEepromWriteByte(MENU_LCD_POSITION_1, bTmp2);
      vSystemPrefMenuLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
      break;
    case DLG_SP_LANG_CODE:
      fgEepromWriteByte(SP_LCD_POSITION_0, bTmp1);
      fgEepromWriteByte(SP_LCD_POSITION_1, bTmp2);
      vSystemPrefSpLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
      break;
  }

  return RESULT_SUCCESS;
}
/*
void vCheckLangCode(void) large
{
  BYTE  bTmp1, bTmp2;
  sEntry *prEntry = _rMenuRoot.prMenu[LANG_PAGE]->prEntry[OTHER_LANG_RETURN-1];
  WORD wEEPos = _rMenuRoot.prMenu[prEntry->wEEPos]->prEntry[prEntry->wDefault]->wEEPos;

  vSetSharedInfo(SH_LCD_0 + _bDataCur, _bIRKey);
  if (_bDataCur + 1 == _bDataSel)
  {
    _bDataCur = _bDataSel + 1;

    bTmp1 = bSharedInfo(SH_LCD_0) * 10 + bSharedInfo(SH_LCD_0 + 1);
    bTmp2 = bSharedInfo(SH_LCD_0 + 2) * 10 + bSharedInfo(SH_LCD_0 + 3);

    switch(wEEPos)
    {
      case AUDIO_LCD_POSITION_0:
      case AUDIO_LCD_POSITION_1:
        fgEepromWriteByte(AUDIO_LCD_POSITION_0, bTmp1);
        fgEepromWriteByte(AUDIO_LCD_POSITION_1, bTmp2);
        vSystemPrefAuLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
        break;

      case SP_LCD_POSITION_0:
      case SP_LCD_POSITION_1:
        fgEepromWriteByte(SP_LCD_POSITION_0, bTmp1);
        fgEepromWriteByte(SP_LCD_POSITION_1, bTmp2);
        vSystemPrefSpLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
        break;

      case MENU_LCD_POSITION_0:
      case MENU_LCD_POSITION_1:
        fgEepromWriteByte(MENU_LCD_POSITION_0, bTmp1);
        fgEepromWriteByte(MENU_LCD_POSITION_1, bTmp2);
        vSystemPrefMenuLang('a'-'A' + bTmp1, 'a'-'A' + bTmp2);
        break;
    }
    _fgNextItem = TRUE;
  }
}
*/
#if 0
BOOL fgAddNewLangCode(void) large
{
  BYTE pbStr[5];

  if ((_bIRKey >= IR_NUM0) && (_bIRKey <= IR_NUM9) && (_bDataSel < 4))
  {
    switch(_bDataSel)
    {
      case 0:
        _bDataPrev = _bIRKey * 10;
        break;
      case 1:
        _bDataPrev += _bIRKey;
        break;
      case 2:
        _bDataCur = _bIRKey * 10;
        break;
      case 3:
        _bDataCur += _bIRKey;
        break;
    }
    pbStr[0] = 4;
    pbStr[1] = pbStr[2] = pbStr[3] = pbStr[4] = ' ';

    switch(_bDataSel)
    {
      case 3:  pbStr[4] = (_bDataCur % 10) + '0';
      case 2:  pbStr[3] = (_bDataCur / 10) + '0';
      case 1:  pbStr[2] = (_bDataPrev % 10) + '0';
      case 0:  pbStr[1] = (_bDataPrev / 10) + '0';
    }

    vOsdShowStrXY(STP_DATA_START_X + 20,
                  STP_MENU_START_Y + STP_MENU_ENTRY_H * (_bEntry - 1),
                  WB_SETUP_ITEM, pbStr);
    _bDataSel++;
  }

  if (_bDataSel == 4)
  {
    vShowSetupMsg(OSD_MSG_ENTER_CONTINUE);
    if ((_bIRKey == IR_ENTER) || (_bIRKey == IR_PLAY) || (_bIRKey == IR_PLAY_ENTER) || (_bIRKey == IR_PLAY_PAUSE))
    {
      _bPrevItem = INVALID_ENTRY;
      _bMenu = PRE_PAGE;
      _bEntry = 4;
      _bDataSel = _bDataCur = 8;
      _bDataPrev = 0xFF;
      _bOsdState = STPSTT_ENTRY;
      vShowMenu(_rMenuRoot.prMenu[_bMenu]);
      if (fgIsOsdType2())
      {
        //vShowMark();
      }
    }
    switch(_bOsdState)
    {
      case STPSTT_INPUT_AUDIO_LCD:
        fgEepromWriteByte(AUDIO_LCD_POSITION_0, _bDataPrev);
        fgEepromWriteByte(AUDIO_LCD_POSITION_1, _bDataCur);
        vSystemPrefAuLang('a'-'A'+_bDataPrev, 'a'-'A'+_bDataCur);
        break;
      case STPSTT_INPUT_SP_LCD:
        fgEepromWriteByte(SP_LCD_POSITION_0, _bDataPrev);
        fgEepromWriteByte(SP_LCD_POSITION_1, _bDataCur);
        vSystemPrefSpLang('a'-'A'+_bDataPrev, 'a'-'A'+_bDataCur);
        break;
      case STPSTT_INPUT_MENU_LCD:
        fgEepromWriteByte(MENU_LCD_POSITION_0, _bDataPrev);
        fgEepromWriteByte(MENU_LCD_POSITION_1, _bDataCur);
        vSystemPrefMenuLang('a'-'A'+_bDataPrev, 'a'-'A'+_bDataCur);
        break;
    }
  }
  return TRUE;
}
#endif
#endif

static BOOL fgMainMenuPrev(sMenu *prMenu) large
{
  BYTE bPrevPage = _bMenuCur;
  BYTE bPrevMenu = _bMainMenu;

  vDrawMenuBtn(prMenu, _bMainMenu, FALSE);

  do {
    _bMainMenu--;
    if (_bMainMenu < 1 )
    {
  #ifdef SETUP_CIRCULAR_ITEM
      _bMainMenu = prMenu->bTotalEntry;
  #else
      _bMainMenu = bPrevMenu;
      return (FALSE);
  #endif
    }
  } while(((_wMenuInvalid & (1<<(_bMainMenu-1))) == 0)
          ||(prMenu->prEntry[_bMainMenu-1]->wType == ENTRY_TYPE_NULL));


#if 0
#ifndef SETUP_CIRCULAR_ITEM
  if(_bMainMenu == 1)
  {
    return(FALSE);
  }
#endif
#ifdef SETUP_CIRCULAR_ITEM
  if (_bMainMenu == 1)
  {
    _bMainMenu = prMenu->bTotalEntry;
  }
  else
#endif
  {
    _bMainMenu--;
  }
  while (!(_wMenuInvalid & (0x01<<_bMainMenu-1)) ||
          (prMenu->prEntry[_bMainMenu-1]->wType == ENTRY_TYPE_NULL))
  {
    if(_bMainMenu == 0)
    {
      break;
    }
    _bMainMenu --;
  }
  if ((_bMainMenu == 0) && (bPrevPage == prMenu->bTotalEntry))
  {
    _bMainMenu = prMenu->bTotalEntry;
  }
  else if (_bMainMenu == 0)
  {
    while (!(_wMenuInvalid & (0x01<<_bMainMenu-1)) || (prMenu->prEntry[_bMainMenu-1]->wType == ENTRY_TYPE_NULL))
    {
      _bMainMenu++;
    }
  }
#endif
  vDrawMenuBtn(prMenu, _bMainMenu, TRUE);
  //vGrpButtonActivate(WB_SETUP_HEAD, _bMainMenu + 20, BTN_STYLE_HILIGHT);
  _bMenu = prMenu->prEntry[_bMainMenu-1]->wEEPos;
  _bEntry = 1;
  //r if (_rMenuRoot.prMenu[_bMenu]->bType == PAGE_NML) //[runma]TYPE_SUBMENU)->nml
  //r  _bOsdState = STPSTT_SUBMENU;
  //r else
  //r  _bOsdState = STPSTT_MAINMENU;
  _bOsdState = STPSTT_MAINMENU; //r

  return (TRUE);
}

static BOOL fgMainMenuNext(sMenu *prMenu) large
{
  BYTE bPrevMenu;

  bPrevMenu = _bMainMenu;

  vDrawMenuBtn(prMenu, _bMainMenu, FALSE);
  //[runma] modify block
  do {
    _bMainMenu++;
    if (_bMainMenu > prMenu->bTotalEntry)
    {
  #ifdef SETUP_CIRCULAR_ITEM
      _bMainMenu = 1;
  #else
        _bMainMenu = bPrevMenu;
      return (FALSE);
  #endif
    }
  } while(((_wMenuInvalid & (1<<(_bMainMenu-1))) == 0)
          ||(prMenu->prEntry[_bMainMenu-1]->wType == ENTRY_TYPE_NULL));

  vDrawMenuBtn(prMenu, _bMainMenu, TRUE);
  //vGrpButtonActivate(WB_SETUP_HEAD, _bMainMenu + 20, BTN_STYLE_HILIGHT);
  _bMenu = prMenu->prEntry[_bMainMenu-1]->wEEPos;
  _bEntry = 1;
  //r if (_rMenuRoot.prMenu[_bMenu]->bType == PAGE_NML) //[runma] PAGE_TYPE_SUBMENU) -> nml
  //r   _bOsdState = STPSTT_SUBMENU;
  //r else
  //r   _bOsdState = STPSTT_MAINMENU;
  _bOsdState = STPSTT_MAINMENU; //r
  return TRUE;
}

static void vSetItemPos(BYTE bIndex, BYTE bOffset) large
{
  switch(_rMenuRoot.prMenu[_bMenu]->bType)
  {
    case PAGE_TYPE_V_DIALOG:
      _wStartX = DIALOG_X + DIALOG_START_X;
      _wEndX = DIALOG_X + DIALOG_W - DIALOG_START_X;
      _wStartY = (SETUP_ITEM_H - (bOffset + 2) * DIALOG_LINE_H) / 2 + (bIndex * DIALOG_LINE_H);
      _wEndY = _wStartY + DIALOG_LINE_H;
      break;
    case PAGE_TYPE_H_DIALOG:
      _wStartX = (SETUP_ITEM_W - ((bOffset-1) * 2 + 1) * DIALOG_ITEM_W ) / 2 + (bIndex * 2 - 1) * DIALOG_ITEM_W;
      _wEndX = _wStartX + DIALOG_ITEM_W;
      _wStartY = 32 * 2 + 32;
      _wEndY = _wStartY + 100;
      break;
    default:
      _wStartX = STP_ENTRY_START_X;
//    _wStartY = STP_MENU_START_Y + STP_MENU_ENTRY_H * (_bEntry + bIndex - _bMinShowData - bOffset);
      _wStartY = STP_MENU_START_Y + (WORD) STP_MENU_ENTRY_H * (bIndex - bOffset) + bIndex;
      _wEndX = STP_ENTRY_START_X + STP_ENTRY_END_X; //STP_DATA_START_X;[runma] -> item end x.
      _wEndY = _wStartY + STP_MENU_ENTRY_H - 1; //[runma] add word -1
      break;
  }
}

static void vEntryAct(void) large
{
  sMenu *prMenu = _rMenuRoot.prMenu[_bMenu];

⌨️ 快捷键说明

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