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

📄 smi_pei.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:
    return data - '0';
  if ( data >= 'A' AND data <= 'F')
    return data - 'A' + 0x0a;
  if ( data >= 'a' AND data <= 'f')
    return data - 'a' + 0x0a;
}

LOCAL void scan_for_prim_data ( UBYTE* data )
{
  while ( *data NEQ 0 )
  {
    prim_data[prim_idx]  = ( bt_atoi ( *data ) << 4 );
    data++;
    prim_data[prim_idx] += bt_atoi ( *data );
    prim_idx++;
    data++;

  }
}

#endif /* WIN32 && BT_ADAPTER */

GLOBAL T_PEI_RETURN _pei_config ( T_PEI_CONFIG inString,
                                  T_PEI_CONFIG outString )
{
#if !defined (NCONFIG)
  char    * s = inString;
  SHORT     valno;
  USHORT    keyno;
  char    * keyw;
  char    * val [10];

  outString = "";
  TRACE_FUNCTION ("_pei_config()");

  TRACE_FUNCTION (s);

  tok_init(s);

  /*
   * Parse next keyword and number of variables
   */
  while ((valno = tok_next(&keyw,val)) != TOK_EOCS)
  {
    switch ((keyno = tok_key((KW_DATA *)kwtab,keyw)))
    {
#if defined (WIN32) && defined (BT_ADAPTER)
    case BT_PRIM:
      if ( valno EQ 2)
      {

        switch (atoi(val[0]))
        {
        case ( 1 ):
          strcpy ( prim_name, val[1] );

          if ( strcmp ( val[1], "BTP_INIT_PROFILE_CNF" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_INIT_PROFILE_CNF );

            prim_idx = 0;
            btp_init_profile_cnf = dummy;
          }
          else if ( strcmp ( val[1], "BTP_DEINIT_PROFILE_CNF" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_DEINIT_PROFILE_CNF );

            prim_idx = 0;
            btp_deinit_profile_cnf = dummy;
          }
          else if ( strcmp ( val[1], "BTP_DEVICE_SEARCH_CNF" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_DEVICE_SEARCH_CNF );

            prim_idx = 0;
            btp_device_search_cnf = dummy;
          }
          else if ( strcmp ( val[1], "BTP_DEVICE_FOUND_IND" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_DEVICE_FOUND_IND );

            prim_idx = 0;
            btp_device_found_ind = dummy;
          }
          else if ( strcmp ( val[1], "BTP_CONNECT_DEVICE_CNF" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_CONNECT_DEVICE_CNF );

            prim_idx = 0;
            btp_connect_device_cnf = dummy;
          }
          else if ( strcmp ( val[1], "BTP_DISCONNECT_DEVICE_CNF" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_DISCONNECT_DEVICE_CNF );

            prim_idx = 0;
            btp_disconnect_device_cnf = dummy;
          }
          else if ( strcmp ( val[1], "BTP_DISCONNECT_DEVICE_IND" ) EQ 0 )
          {
            PALLOC ( dummy, BTP_DISCONNECT_DEVICE_IND );

            prim_idx = 0;
            btp_disconnect_device_ind = dummy;
          }

          break;

        case ( 2 ):
          scan_for_prim_data ( val[1] );
          break;

        case ( 3 ):
          scan_for_prim_data ( val[1] );

          if ( strcmp ( prim_name, "BTP_INIT_PROFILE_CNF" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_init_profile_cnf, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_init_profile_cnf );
          }
          else if ( strcmp ( prim_name, "BTP_DEINIT_PROFILE_CNF" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_deinit_profile_cnf, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_deinit_profile_cnf );
          }
          else if ( strcmp ( prim_name, "BTP_DEVICE_SEARCH_CNF" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_device_search_cnf, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_device_search_cnf );
          }
          else if ( strcmp ( prim_name, "BTP_DEVICE_FOUND_IND" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_device_found_ind, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_device_found_ind );
          }
          else if ( strcmp ( prim_name, "BTP_CONNECT_DEVICE_CNF" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_connect_device_cnf, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_connect_device_cnf );
          }
          else if ( strcmp ( prim_name, "BTP_DISCONNECT_DEVICE_CNF" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_disconnect_device_cnf, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_disconnect_device_cnf );
          }
          else if ( strcmp ( prim_name, "BTP_DISCONNECT_DEVICE_IND" ) EQ 0 )
          {
            memcpy ( (CHAR*)btp_disconnect_device_ind, (CHAR*)prim_data, prim_idx );

            PSEND ( ACI, btp_disconnect_device_ind );
          }

          break;
        }
        break;
      }
      else
      {
        TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
      }

      break;
#endif /* WIN32 && BT_ADAPTER */

    case KEY_SEQUENCE:
      {
        if (valno EQ 1)
        {
          static T_KEYSEQ_HND hnd;

          aca_keySeqHndInit (&hnd);
          aca_keySeqInd (val[0], &hnd);
        }
        else
        {
          TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
        }
        break;
      }

      case START_SS:
        /*
         * Simulates Starting of SS Service
         */
      {
        PALLOC (mnss_begin_req, MNSS_BEGIN_REQ);

        mnss_begin_req->ti = 0;
        mnss_begin_req->fac_inf.l_fac = 25<<3;
        mnss_begin_req->fac_inf.o_fac = 0;
        memcpy (&mnss_begin_req->fac_inf.fac, (void *)facility,
                sizeof (facility));
        mnss_begin_req->ss_ver.len = 1;
        mnss_begin_req->ss_ver.ver [0] = 0;

#if defined (NEW_FRAME)
        PSEND(hCommSS, mnss_begin_req);
#else
        PSEND(SS, mnss_begin_req);
#endif
        break;
      }

#if defined (AT_INTERPRETER)

      case EXT_TEST_ENABLE:
        if (valno EQ 1)
        {
          if ( atoi ( val[0] ) EQ 0 )
          {
            /*
             *-------------------------------------------------------
             * remove all redirections of AT commands
             *-------------------------------------------------------
             */
            sAT_CfgEXT ( NULL );
          }
          else
          {
            /*
             *-------------------------------------------------------
             * redirect ATD commands from the AT command interpreter
             * to the extension mechanism if necessary
             *-------------------------------------------------------
             */
            sAT_CfgEXT ( atRedirect );
          }
        }
        else
        {
          TRACE_ERROR ("[PEI_CONFIG]: Wrong Number of Parameters");
        }
        break;
#endif

      default:
      {
        TRACE_ERROR ("[PEI_CONFIG]: Illegal Keyword");
      }
      break;
    }
  }
#endif
  return PEI_OK;
}

/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)              MODULE  : SMI_PEI            |
| STATE   : code                        ROUTINE : _pei_monitor       |
+--------------------------------------------------------------------+

  PURPOSE : Monitoring of physical Parameters
*/
GLOBAL T_PEI_RETURN _pei_monitor (void ** monitor)
{
  TRACE_FUNCTION ("_pei_monitor()")

  smi_mon.version = VERSION_SMI;

  *monitor = &smi_mon;

  return PEI_OK;
}



/*
+--------------------------------------------------------------------+
| PROJECT : GSM-F&D (8411)             MODULE  : SMI_PEI             |
| STATE   : code                       ROUTINE : pei_not_supported   |
+--------------------------------------------------------------------+

  PURPOSE : An unsupported primitive is received.

*/

LOCAL const void pei_not_supported (void *data)
{
  TRACE_FUNCTION ("pei_not_supported()");

  PFREE (data);
}


/*==== EOF ========================================================*/

#endif

⌨️ 快捷键说明

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