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

📄 mfw_bt.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
      case BTP_OK:
        return MFW_BT_EXECUTE;
      case BTP_INVALID_PARAMETER:
        return MFW_BT_INVALID_PARA;
      case BTP_NOT_SUPP:
        return MFW_BT_NO_SUPP;
      case BTP_NOT_READY:
        return MFW_BT_NOT_READY;
      case BTP_INT_ERR:
        return MFW_BT_INT_ERR;
      case BTP_MEMORY_ERR:
        return MFW_BT_MEM_ERR;
      case BTP_NOK:
        return MFW_BT_NOK;
    }
  }
  return MFW_BT_FAIL;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)          MODULE  : MFW_BT           |
| STATE   : code                          ROUTINE : bt_service_search|
+--------------------------------------------------------------------+

  PURPOSE : request search of services and their service names

*/
T_MFW_BT_RESULT_BT  bt_service_search(T_MFW_BT_SERVICE_TYPE service)
{
  TRACE_FUNCTION ("bt_service_search()");

  if((service EQ MFW_BT_HEADSET) OR
     (service EQ MFW_BT_DIAL_UP) OR
     (service EQ MFW_BT_FAX_GW) OR
     (service EQ MFW_BT_OPP) OR
     (service EQ MFW_BT_SYNC_CMD))
  {/* start browsing procedure */
    switch(btibtp_service_search_req((T_BTI_DEVICE_TYPE)service, SERVICE_SEARCH))
    {
      case BTP_OK:
        return MFW_BT_EXECUTE;
      case BTP_INVALID_PARAMETER:
        return MFW_BT_INVALID_PARA;
      case BTP_NOT_SUPP:
        return MFW_BT_NO_SUPP;
      case BTP_NOT_READY:
        return MFW_BT_NOT_READY;
      case BTP_INT_ERR:
        return MFW_BT_INT_ERR;
      case BTP_MEMORY_ERR:
        return MFW_BT_MEM_ERR;
      case BTP_NOK:
        return MFW_BT_NOK;
    }
  }
  return MFW_BT_FAIL;
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)          MODULE  : MFW_BT           |
| STATE   : code                          ROUTINE : bt_device_search |
+--------------------------------------------------------------------+

  PURPOSE : request search of devices and their service id's

*/
T_MFW_BT_RESULT_BT  bt_device_search(void)
{

  TRACE_FUNCTION ("bt_device_search()");

  /* start browsing procedure */
  switch(btibtp_device_search_req(DEVICE_SEARCH))
  {
    case BTP_OK:
      return MFW_BT_EXECUTE;
    case BTP_INVALID_PARAMETER:
      return MFW_BT_INVALID_PARA;
    case BTP_NOT_SUPP:
      return MFW_BT_NO_SUPP;
    case BTP_NOT_READY:
      return MFW_BT_NOT_READY;
    case BTP_INT_ERR:
      return MFW_BT_INT_ERR;
    case BTP_MEMORY_ERR:
      return MFW_BT_MEM_ERR;
    case BTP_NOK:
      return MFW_BT_NOK;
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)          MODULE  : MFW_BT           |
| STATE   : code                          ROUTINE : bt_extended_search |
+--------------------------------------------------------------------+

  PURPOSE : request search of devices and their service id's

*/
T_MFW_BT_RESULT_BT  bt_extended_search(UINT8 inq_length,
                     UINT8                  max_num_of_responses,
                     T_MFW_DEVICE_CLASS     class_of_device[],
                     BOOLEAN                need_device_name,
                     BOOLEAN                need_services,
                     T_MFW_SERVICE_ID       service_id)
{

  TRACE_FUNCTION ("bt_extended_search()");

  /* start browsing procedure */
  switch(btibtp_extended_search_req(inq_length, max_num_of_responses,
                                    class_of_device, need_device_name,
                                    need_services, service_id))
  {
    case BTP_OK:
      return MFW_BT_EXECUTE;
    case BTP_INVALID_PARAMETER:
      return MFW_BT_INVALID_PARA;
    case BTP_NOT_SUPP:
      return MFW_BT_NO_SUPP;
    case BTP_NOT_READY:
      return MFW_BT_NOT_READY;
    case BTP_INT_ERR:
      return MFW_BT_INT_ERR;
    case BTP_MEMORY_ERR:
      return MFW_BT_MEM_ERR;
    case BTP_NOK:
      return MFW_BT_NOK;
  }
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)          MODULE  : MFW_BT           |
| STATE   : code                          ROUTINE : bt_search_abort  |
+--------------------------------------------------------------------+

  PURPOSE : start abort of browsing procedure

*/
T_MFW_BT_RESULT_BT bt_search_abort(void)
{
  TRACE_FUNCTION ("bt_search_abort()");

  switch(btibtp_search_abort())
  {
    case BTP_OK:
      return MFW_BT_OK;
    case BTP_INVALID_PARAMETER:
      return MFW_BT_INVALID_PARA;
    case BTP_NOT_SUPP:
      return MFW_BT_NO_SUPP;
    case BTP_NOT_READY:
      return MFW_BT_NOT_READY;
    case BTP_INT_ERR:
      return MFW_BT_INT_ERR;
    case BTP_MEMORY_ERR:
      return MFW_BT_MEM_ERR;
    case BTP_NOK:
      return MFW_BT_NOK;
  }
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)     MODULE  : MFW_BT                |
| STATE   : code                     ROUTINE : bt_connect_hsg        |
+--------------------------------------------------------------------+

  PURPOSE : request connection with the service headset

*/
T_MFW_BT_RESULT_BT  bt_connect_hsg (T_MFW_BT_SERVICE_TYPE service,
                                    T_MFW_BT_REQ_ID req_id,
                                    T_MFW_BT_BD_ADDR bd_addr[], UINT8 mode)
{
  TRACE_FUNCTION ("bt_connect_hsg()");

  /*
  *** if req_id equal MFW_BT_DEFAULT_HEADSET_ID: headset gateway will
                      automatically select a headset from the default headset list
      if req_id equal MFW_BT_INVALID_HEADSET_ID: headset gateway will try to
                      connect to the headset whose BT headset address is in bd_addr
      otherwise headset gateway will call the headset related to headset_id
                      in the default headset list
  ***
  */
   /* BTP_CONNECT_DEVICE_REQ to BT */
  if(service EQ MFW_BT_HEADSET)
  {
    switch(btibtp_connect_hsg_req(req_id, bd_addr, mode))
    {
      case BTP_OK:
        return MFW_BT_EXECUTE;
      case BTP_INVALID_PARAMETER:
        return MFW_BT_INVALID_PARA;
      case BTP_NOT_SUPP:
        return MFW_BT_NO_SUPP;
      case BTP_NOT_READY:
        return MFW_BT_NOT_READY;
      case BTP_INT_ERR:
        return MFW_BT_INT_ERR;
      case BTP_MEMORY_ERR:
        return MFW_BT_MEM_ERR;
      case BTP_NOK:
        return MFW_BT_NOK;
    }
  }
  else
    return MFW_BT_FAIL;
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)         MODULE  : MFW_BT            |
| STATE   : code                         ROUTINE :bt_get_auto_connect|
+--------------------------------------------------------------------+

  PURPOSE : get state automatic connection on/off for headset gateway
*/

T_MFW_BT_RESULT_BT bt_get_auto_connect(T_MFW_BT_SERVICE_TYPE service,
                                    T_MFW_BT_HSG_CLIENT_CONFIG *conf)
{
  T_MFW_BT_HSG_CLIENT_CONFIG client_conf;
  T_MFW_BT_HSG_SERVER_CONFIG server_conf;
  T_MFW_BT_RESULT_BT result;

  TRACE_FUNCTION ("bt_get_auto_connect()");

  memset(&client_conf,0,sizeof(client_conf));
  memset(&server_conf,0,sizeof(server_conf));

  result = bt_get_config((T_BTI_DEVICE_TYPE)service,&client_conf,&server_conf);

  if(result EQ MFW_BT_OK)
  {
    conf->config_mode = (T_MFW_BT_CONFIG_MODE)client_conf.config_mode;
  }
  return result;
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)            MODULE  : MFW_BT         |
| STATE   : code                            ROUTINE :bt_auto_connect |
+--------------------------------------------------------------------+

  PURPOSE : set feature automatic connection on/off for headset gateway
*/

T_MFW_BT_RESULT_BT bt_auto_connect(T_MFW_BT_SERVICE_TYPE service,
                                T_MFW_BT_AUTO_CONNECT_STATE set_state)
{
  T_MFW_BT_HSG_CLIENT_CONFIG client_conf;
  T_MFW_BT_HSG_SERVER_CONFIG server_conf;
  T_MFW_BT_RESULT_BT result;

  TRACE_FUNCTION ("bt_auto_connect()");

  memset(&client_conf,0,sizeof(client_conf));
  memset(&server_conf,0,sizeof(server_conf));

  if(set_state EQ MFW_BT_AUTO_CONNECT_ON OR
     set_state EQ MFW_BT_AUTO_CONNECT_OFF)
  {/* read state of config_mode */
    result = bt_get_config((T_BTI_DEVICE_TYPE)service,&client_conf,&server_conf);
    if(result NEQ MFW_BT_OK)
    {
      return result;
    }
    else
    {
      if(set_state EQ MFW_BT_AUTO_CONNECT_ON)
      {
        if(client_conf.config_mode NEQ MFW_BT_AUTO_OUTG_DEF_CONN_ON)
        {/*  connection with default pre-defined headset as soon as it receives a
             RING command from GSM)*/
          client_conf.config_mode = MFW_BT_AUTO_OUTG_DEF_CONN_ON;
          return (bt_reconfig_profile_hsg_cl(service,client_conf));
        }
      }
      else
      {
        if(client_conf.config_mode EQ MFW_BT_AUTO_OUTG_DEF_CONN_ON)
        {
          client_conf.config_mode = MFW_BT_AUTO_OUTG_DEF_CONN_OFF;
          return (bt_reconfig_profile_hsg_cl(service,client_conf));
        }
      }
    }
  }
  else
    return MFW_BT_FAIL;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)         MODULE  : MFW_BT            |
| STATE   : code                        ROUTINE :bt_set_pref_headset |
+--------------------------------------------------------------------+

  PURPOSE : add preferred headset in default headset list
*/

T_MFW_BT_RESULT_BT bt_set_pref_headset(T_MFW_BT_SERVICE_TYPE service,
                                       T_MFW_BT_BD_ADDR bd_addr[],
                                       T_MFW_BT_HSG_NAME hsg_name[],
                                       T_MFW_BT_PRIORITY priority,
                                       BOOL rem_audio_ctr_supp_hsg,
                                       T_MFW_BT_CNF_ID * headset_cnf_id)
{
  T_MFW_BT_CNF_ID cnf_id = 0;

  TRACE_FUNCTION ("bt_set_pref_service()");

  if(service EQ MFW_BT_HEADSET)
  {
    if(priority <= MFW_HSG_HEADSET_MAX_PRIORITY)
    {
      switch(btibtp_set_default_headset(bd_addr,hsg_name,priority,rem_audio_ctr_supp_hsg,&cnf_id))
      /* add headset in default headset list */
      {
        case BTP_OK:
          *headset_cnf_id = cnf_id;
          return MFW_BT_OK;
        case BTP_INVALID_PARAMETER:
          return MFW_BT_INVALID_PARA;
        case BTP_HSG_ALREADY_STOR:
          return MFW_BT_HSG_ALREADY_STORED;
        case BTP_NOT_READY:
          return MFW_BT_NOT_READY;
        case BTP_INT_ERR:
          return MFW_BT_INT_ERR;
        case BTP_MEMORY_ERR:
          return MFW_BT_MEM_ERR;
        case BTP_NOK:
          return MFW_BT_NOK;
      }
    }
    else
      return MFW_BT_INVALID_PARA;
  }
  else
    return MFW_BT_FAIL;
}

/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)         MODULE  : MFW_BT            |
| STATE   : code                         ROUTINE :bt_is_pref_headset |
+--------------------------------------------------------------------+

  PURPOSE : check if preferred headset is in default headset list
*/

T_MFW_BT_RESULT_BT bt_is_pref_headset(T_MFW_BT_SERVICE_TYPE service,
                                      T_MFW_BT_BD_ADDR bd_addr[],
                                      T_MFW_BT_CNF_ID * headset_cnf_id)
{
  T_MFW_BT_CNF_ID cnf_id = 0;

  TRACE_FUNCTION ("bt_is_pref_headset()");

  if(service EQ MFW_BT_HEADSET)
  {
      switch(btibtp_query_default_headset(bd_addr,&cnf_id))
      /* add headset in default headset list */
      {
        case BTP_OK:
          *headset_cnf_id = cnf_id;
          return MFW_BT_OK;
        case BTP_INVALID_PARAMETER:
          return MFW_BT_INVALID_PARA;
        case BTP_HSG_ALREADY_STOR:
          return MFW_BT_HSG_ALREADY_STORED;
 

⌨️ 快捷键说明

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