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

📄 functions.inl

📁 乐高机器人的源码,开发平台是IAR_for_AVR.
💻 INL
📖 第 1 页 / 共 5 页
字号:
  {
    for (Tmp = 0;(Tmp < SIZE_OF_BT_DEVICE_TABLE) && (Result == 0);Tmp++)
    {
      if ((pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_KNOWN))
      {
        if (No == *pIndex)
        {
          *pIndex = Tmp;
          Result  = ~0;
        }
        else
        {
          (*pIndex)++;
        }
      }
    }
  }
  else
  {
    for (Tmp = 0;(Tmp < SIZE_OF_BT_DEVICE_TABLE) && (Result == 0);Tmp++)
    {
      if ((pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_UNKNOWN) || (pMapComm->BtDeviceTable[Tmp].DeviceStatus & BT_DEVICE_KNOWN))
      {
        if (No == *pIndex)
        {
          *pIndex = Tmp;
          Result  = ~0;
        }
        else
        {
          (*pIndex)++;
        }
      }
    }
  }

  return (Result);
}


UWORD     cUiBTCommand(UBYTE Cmd,UBYTE Flag,UBYTE *pParam1,UBYTE *pParam2)
{
  UWORD   Result = UI_BT_FAILED;

  switch(Cmd)
  {
    case UI_BT_GET_DEVICES :
    {
      cUiBTGetDeviceIndex(Flag,SIZE_OF_BT_DEVICE_TABLE,pParam1);
      Result                = UI_BT_SUCCES;
    }
    break;

    case UI_BT_GET_DEVICE_NAME :
    {
      if ((*pParam1 < SIZE_OF_BT_DEVICE_TABLE) && (pParam2 != NULL))
      {
        pParam2[0]        = 0;
        if (cUiBTGetDeviceIndex(Flag,*pParam1,&VarsUi.BTTmpIndex))
        {
          sprintf((char*)pParam2,"%.*s",DISPLAYLINE_LENGTH,(char*)pMapComm->BtDeviceTable[VarsUi.BTTmpIndex].Name);
          Result          = UI_BT_SUCCES;
        }
      }
    }
    break;

    case UI_BT_GET_DEVICE_TYPE :
    {
      if ((*pParam1 < SIZE_OF_BT_DEVICE_TABLE) && (pParam2 != NULL))
      {
        pParam2[0]        = 0;
        if (cUiBTGetDeviceIndex(Flag,*pParam1,&VarsUi.BTTmpIndex))
        {
          pParam2[0]      = cUiBTGetDeviceType(pMapComm->BtDeviceTable[VarsUi.BTTmpIndex].ClassOfDevice);
          Result          = UI_BT_SUCCES;
        }
      }
    }
    break;

    case UI_BT_GET_CONNECTION_NAME :
    {
      if (*pParam1 < SIZE_OF_BT_CONNECT_TABLE)
      {
        if (pMapComm->BtConnectTable[*pParam1].Name[0])
        {
          if (pParam2 != NULL)
          {
            sprintf((char*)pParam2,"%.*s",DISPLAYLINE_LENGTH,(char*)pMapComm->BtConnectTable[*pParam1].Name);
          }
          Result          = UI_BT_SUCCES;
        }
        else
        {
          if (pParam2 != NULL)
          {
            pParam2[0]    = 0;
          }
        }
      }
    }
    break;

    case UI_BT_GET_CONNECTION_TYPE :
    {
      if ((*pParam1 < SIZE_OF_BT_CONNECT_TABLE) && (pParam2 != NULL))
      {
        pParam2[0]        = 0;
        if (pMapComm->BtConnectTable[*pParam1].Name[0])
        {
          pParam2[0]      = cUiBTGetDeviceType(pMapComm->BtConnectTable[*pParam1].ClassOfDevice);
          Result          = UI_BT_SUCCES;
        }
      }
    }
    break;

    case UI_BT_GET_CONNECTION_VALID :
    {
      if (*pParam1 < SIZE_OF_BT_CONNECT_TABLE)
      {
        if (pMapComm->BtConnectTable[*pParam1].Name[0])
        {
          Result            = UI_BT_SUCCES;
        }
      }
    }
    break;

  }

  return (Result);
}



#include  "BtTest.inc"

//******* cUiNVxxxxx *********************************************************

void      cUiNVWriteByte(void)
{
  sprintf((char*)VarsUi.NVFilename,"%s.%s",(char*)NONVOLATILE_NAME,(char*)TXT_SYS_EXT);
  VarsUi.NVTmpHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.NVFilename,VarsUi.SearchFilenameBuffer,&VarsUi.NVTmpLength);
  if (!(VarsUi.NVTmpHandle & 0x8000))
  {
    pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
    pMapLoader->pFunc(DELETE,VarsUi.NVFilename,NULL,NULL);
  }
  VarsUi.NVTmpLength = 1;
  VarsUi.NVTmpHandle = pMapLoader->pFunc(OPENWRITE,VarsUi.NVFilename,NULL,&VarsUi.NVTmpLength);
  pMapLoader->pFunc(WRITE,(UBYTE*)&VarsUi.NVTmpHandle,(UBYTE*)&VarsUi.NVData,&VarsUi.NVTmpLength);
  pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
}

void      cUiNVWritePowerOnTimeCount(UBYTE Count)
{
  VarsUi.NVData &= ~0x07;
  VarsUi.NVData |= (Count & 0x07);
  cUiNVWriteByte();
}

UBYTE     cUiNVReadPowerOnTimeCount(void)
{
  return (VarsUi.NVData & 0x07);
}

void      cUiNVWriteVolumeCount(UBYTE Count)
{
  VarsUi.NVData &= ~0x70;
  VarsUi.NVData |= ((Count << 4) & 0x70);
  cUiNVWriteByte();
}

UBYTE     cUiNVReadVolumeCount(void)
{
  return ((VarsUi.NVData >> 4) & 0x07);
}

void      cUiNVReadByte(void)
{
  VarsUi.NVData = 0xFF;
  sprintf((char*)VarsUi.NVFilename,"%s.%s",(char*)NONVOLATILE_NAME,(char*)TXT_SYS_EXT);
  VarsUi.NVTmpHandle = pMapLoader->pFunc(OPENREAD,VarsUi.NVFilename,NULL,&VarsUi.NVTmpLength);
  if (!(VarsUi.NVTmpHandle & 0x8000))
  {
    VarsUi.NVTmpLength = 1;
    pMapLoader->pFunc(READ,(UBYTE*)&VarsUi.NVTmpHandle,&VarsUi.NVData,&VarsUi.NVTmpLength);
    pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.NVTmpHandle,NULL,NULL);
  }

  if ((cUiNVReadPowerOnTimeCount() > (POWER_OFF_TIME_STEPS - 1)) || (cUiNVReadVolumeCount() > MAX_VOLUME))
  {
    VarsUi.NVData = 0xFF;
    cUiNVWritePowerOnTimeCount(POWER_OFF_TIME_DEFAULT);
    cUiNVWriteVolumeCount(MAX_VOLUME);
  }
}



//******* cUiFeedback ********************************************************

UBYTE     cUiFeedback(BMPMAP *Bitmap,UBYTE TextNo1,UBYTE TextNo2,UWORD Time) // Show bimap and text
{
//  if ((VarsUi.FBState == 0) || ((pMapDisplay->Flags & DISPLAY_POPUP) == 0))
  {
    switch (VarsUi.FBState)
    {
      case 0 : // Set busy
      {
        VarsUi.FBState++;
      }
      break;

      case 1 : // Clear line 2,3,4
      {
        if (DISPLAY_IDLE)
        {
          pMapDisplay->EraseMask  |= (TEXTLINE_BIT(TEXTLINE_2) | TEXTLINE_BIT(TEXTLINE_3) | TEXTLINE_BIT(TEXTLINE_4));
          VarsUi.FBState++;
        }
      }
      break;

      case 2 : // Show bitmap if pressent
      {
        if (DISPLAY_IDLE)
        {
          if (Bitmap != NULL)
          {
            pMapDisplay->pBitmaps[BITMAP_1] = Bitmap;
            pMapDisplay->UpdateMask |= BITMAP_BIT(BITMAP_1);
          }
          VarsUi.FBState++;
        }
      }
      break;

      case 3 : // Get text string
      {
        if (DISPLAY_IDLE)
        {
          pMapDisplay->UpdateMask |= SPECIAL_BIT(TOPLINE);
          VarsUi.FBText            = cUiGetString(TextNo1);
          VarsUi.FBPointer         = 0;
          if (TextNo2)
          {
            VarsUi.FBState = 5;
          }
          else
          {
            VarsUi.FBState++;
          }
        }
      }
      break;

      case 4 : // Show text string
      {
        if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
        {
          pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,16,VarsUi.FBText[VarsUi.FBPointer],0);
          VarsUi.FBPointer++;
        }
        else
        {
          VarsUi.FBTimer = 0;
          VarsUi.FBState = 7;
        }
      }
      break;

      case 5 : // Show text string
      {
        if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
        {
          pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,12,VarsUi.FBText[VarsUi.FBPointer],0);
          VarsUi.FBPointer++;
        }
        else
        {
          VarsUi.FBText            = cUiGetString(TextNo2);
          VarsUi.FBPointer         = 0;
          VarsUi.FBState++;
        }
      }
      break;

      case 6 : // Show text string
      {
        if ((VarsUi.FBText[VarsUi.FBPointer]) && (VarsUi.FBPointer < NO_OF_FEEDBACK_CHARS))
        {
          pMapDisplay->pFunc(DISPLAY_CHAR,TRUE,24 + VarsUi.FBPointer * 6,20,VarsUi.FBText[VarsUi.FBPointer],0);
          VarsUi.FBPointer++;
        }
        else
        {
          VarsUi.FBTimer = 0;
          VarsUi.FBState++;
        }
      }
      break;

      case 7 : // Wait if time provided
      {
        if (++VarsUi.FBTimer >= (Time + 100))
        {
          VarsUi.FBState++;
        }
      }
      break;

      default : // Exit
      {
        VarsUi.FBState = 0;
      }
      break;

    }
  }

  return (VarsUi.FBState);
}



//******* cUiFileList ********************************************************

UBYTE     cUiFindNoOfFiles(UBYTE FileType,UBYTE *NoOfFiles)
{
  switch (VarsUi.FNOFState)
  {
    case 0 :
    {
      *NoOfFiles = 0;

      if (FileType >= FILETYPES)
      {
        FileType = FILETYPE_ALL;
      }
      sprintf((char*)VarsUi.FNOFSearchBuffer,"*.%s",TXT_FILE_EXT[FileType]);

      VarsUi.FNOFHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FNOFSearchBuffer,VarsUi.FNOFNameBuffer,&VarsUi.FNOFLength);
      if (!(VarsUi.FNOFHandle & 0x8000))
      {
        *NoOfFiles = 1;
        VarsUi.FNOFState++;
      }
    }
    break;

    case 1 :
    {
      VarsUi.FNOFHandle = pMapLoader->pFunc(FINDNEXT,(UBYTE*)&VarsUi.FNOFHandle,VarsUi.FNOFNameBuffer,&VarsUi.FNOFLength);
      if (!(VarsUi.FNOFHandle & 0x8000))
      {
        *NoOfFiles += 1;
      }
      else
      {
        pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
        VarsUi.FNOFState = 0;
      }
    }
    break;

  }

  return (VarsUi.FNOFState);
}


UBYTE     cUiFindNameForFileNo(UBYTE FileType,UBYTE FileNo,UBYTE *Name)
{
  switch (VarsUi.FNOFState)
  {
    case 0 :
    {
      Name[0] = 0;

      if (FileNo)
      {
        if (FileType >= FILETYPES)
        {
          FileType = FILETYPE_ALL;
        }
        sprintf((char*)VarsUi.FNOFSearchBuffer,"*.%s",TXT_FILE_EXT[FileType]);

        VarsUi.FNOFHandle = pMapLoader->pFunc(FINDFIRST,VarsUi.FNOFSearchBuffer,Name,&VarsUi.FNOFLength);
        if (!(VarsUi.FNOFHandle & 0x8000))
        {
          if (FileNo != 1)
          {
            VarsUi.FNOFFileNo = 1;
            VarsUi.FNOFState++;
          }
          else
          {
            pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
          }
        }
      }
    }
    break;

    case 1 :
    {
      VarsUi.FNOFHandle = pMapLoader->pFunc(FINDNEXT,(UBYTE*)&VarsUi.FNOFHandle,Name,&VarsUi.FNOFLength);
      if (!(VarsUi.FNOFHandle & 0x8000))
      {
        VarsUi.FNOFFileNo++;
        if (FileNo == VarsUi.FNOFFileNo)
        {
          pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
          VarsUi.FNOFState = 0;
        }
      }
      else
      {
        pMapLoader->pFunc(CLOSE,(UBYTE*)&VarsUi.FNOFHandle,NULL,NULL);
        VarsUi.FNOFState = 0;
      }
    }
    break;

  }

  return (VarsUi.FNOFState);
}


UBYTE     cUiFileList(UBYTE Action)       // Show files and select
{
  switch (Action)
  {
    case MENU_INIT :
    {
      if (!VarsUi.State)
      {
        VarsUi.FileCenter   = 1;
        VarsUi.NextState    = IOMapUi.State;
      }
      Action                = MENU_DRAW;
    }
    break;

⌨️ 快捷键说明

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