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

📄 mfw_bt.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 5 页
字号:
            break;

          case BT_SRV_SYNC_AUTH_IND:
            srv_sync_auth_ind = (T_MFW_BT_SRV_SYNC_AUTH_IND *)para;
            if(srv_sync_auth_ind->service EQ MFW_BT_SYNC)
            {
              memcpy(&bt_data->para.srv_sync_auth,
                     para,sizeof(T_MFW_BT_SRV_SYNC_AUTH_IND));
            }
            else
              return FALSE;
            break;

          case BT_SRV_SYNC_PULL_IND:
            srv_sync_pull_ind = (T_MFW_BT_SRV_SYNC_PULL_IND *)para;
            if(srv_sync_pull_ind->service EQ MFW_BT_SYNC)
            {
              memcpy(&bt_data->para.sync_pull_ind,
                     para,sizeof(T_MFW_BT_SRV_SYNC_PULL_IND));
            }
            else
              return FALSE;
            break;

          case BT_SRV_SYNC_PUSH_IND:
            srv_sync_push_ind = (T_MFW_BT_SRV_SYNC_PUSH_IND *)para;
            if(srv_sync_push_ind->service EQ MFW_BT_SYNC)
            {
              memcpy(&bt_data->para.sync_push_ind,
                     para,sizeof(T_MFW_BT_SRV_SYNC_PUSH_IND));
            }
            else
              return FALSE;
            break;

          case BT_SRV_SYNC_PUSH_CNF:
            srv_sync_push_cnf = (T_MFW_BT_SRV_SYNC_PUSH_CNF *)para;
            if(srv_sync_push_cnf->service EQ MFW_BT_SYNC)
            {
              memcpy(&bt_data->para.sync_push_cnf,
                     para,sizeof(T_MFW_BT_SRV_SYNC_PUSH_CNF));
            }
            else
              return FALSE;
            break;
        }

        switch (event)
        {

          case BT_HSG_SPECIFIC_CMD_CFM:
            memcpy(&bt_data->para.hsg_specific_cmd_cfm, para,sizeof(T_MFW_BT_HSG_SPECIFIC_CMD_CFM));
            break;

          case BT_HSG_HEADSET_CONNECTION_IND:
            memcpy(&bt_data->para.hsg_headset_connection_ind, para,sizeof(T_MFW_BT_HSG_HEADSET_CONNECTION_IND));
            break;

          case BT_HSG_SAVE_LIST_CNF:
            memcpy(&bt_data->para.hsg_save_list_cnf, para,sizeof(T_MFW_BT_HSG_SAVE_LIST_CNF));
            break;
        }

        switch (event)
        {
          case BT_CONNECT_DEVICE_IND:
             memcpy(&bt_data->para.connect_indication,
                   para,sizeof(T_MFW_BT_CONNECT_IND));
            /* service with event BT_CONNECT_DEVICE_IND to MMI */
              break;

          case BT_CONNECT_DEVICE_INF:
             memcpy(&bt_data->para.connect_information,
                   para,sizeof(T_MFW_BT_CONNECT_INF));
            /* service with event BT_CONNECT_DEVICE_INF to MMI */
              break;


          case BT_DISCONNECT_DEVICE_CNF:
            discon_ptr = (T_MFW_BT_DISCONNECT_CNF *)para;
            if(discon_ptr->service EQ MFW_BT_HEADSET)
            {
              /* confirms disconnection */
              memcpy(&bt_data->para.disconnect_cnf,
                     para,sizeof(T_MFW_BT_DISCONNECT_CNF));
              /* service, addr with event BT_DISCONNECT_DEVICE_CNF to MMI */
              break;
            }
            else
              return FALSE;

          case BT_DISCON_DUN_FAX_CNF:
            discon_dun_fax_ptr = (T_MFW_BT_DISCON_DUN_FAX_CNF *)para;
            if((discon_dun_fax_ptr->service EQ MFW_BT_DIAL_UP) OR
               (discon_dun_fax_ptr->service EQ MFW_BT_FAX_GW))
            {
              /* confirms disconnection by remote dial up/fax */
              memcpy(&bt_data->para.disc_dun_fax_cnf,
                     para,sizeof(T_MFW_BT_DISCON_DUN_FAX_CNF));
              /* device, result with event BT_DISCON_DUN_FAX_CNF to MMI */
              break;
            }
            else
              return FALSE;

          case BT_DISCONNECT_DEVICE_IND:
            discon_i_ptr = (T_MFW_BT_DISCONNECT_IND *)para;
            if(discon_i_ptr->service EQ MFW_BT_HEADSET)
            {
              /* confirms indication */
              memcpy(&bt_data->para.disconnect_ind,
                     para,sizeof(T_MFW_BT_DISCONNECT_IND));
              /* service, addr, error_cause with event BT_DISCONNECT_DEVICE_IND to MMI */
              break;
            }
            else
              return FALSE;

          case BT_DISCON_DUN_FAX_IND:
            discon_dun_fax_ind_ptr = (T_MFW_BT_DISCON_DUN_FAX_IND *)para;
            if((discon_dun_fax_ind_ptr->service EQ MFW_BT_DIAL_UP) OR
              (discon_dun_fax_ind_ptr->service EQ MFW_BT_FAX_GW))
            {
              /* indicats disconnection by remote dial up */
              memcpy(&bt_data->para.con_dun_fax_ind,
                     para,sizeof(T_MFW_BT_DISCON_DUN_FAX_IND));
              /* device, result with event BT_DISCON_DUN_FAX_IND to MMI */
              break;
            }
            else
              return FALSE;
        }

        switch (event) /* BT CTRL */
        {
          case BT_CHNG_LOCAL_NAME:
            memcpy(&bt_data->para.chng_local_name, para, sizeof(T_MFW_BT_CHNG_LOCAL_NAME));
            break;

          case BT_READ_LOCAL_NAME:
            memcpy(&bt_data->para.read_local_name, para, sizeof(T_MFW_BT_READ_LOCAL_NAME));
            break;

          case BT_REMOTE_DEV_INFO_RES:
            memcpy(&bt_data->para.remote_dev_info, para, sizeof(T_MFW_BT_REMOTE_DEV_INFO_RES));
            break;

          case BT_CHNG_CONNECTABLE_MODE:
            memcpy(&bt_data->para.chng_conn_mode, para, sizeof(T_MFW_BT_CHNG_CONNECTABLE_MODE));
            break;

          case BT_CHNG_DISCOVERABLE_MODE:
            memcpy(&bt_data->para.chng_disc_mode, para, sizeof(T_MFW_BT_CHNG_DISCOVERABLE_MODE));
            break;

          case BT_READ_BD_ADDR:
            memcpy(&bt_data->para.read_bd_addr, para, sizeof(T_MFW_BT_READ_BD_ADDR));
            break;

          case BT_TRUSTED_DEV_LIST_FULL:
            break;

        }

        switch (event)
        {

          case BT_TRANSFER_AUDIO_IN_CNF:
            /* confirms transfer audio out */
            memcpy(&bt_data->para.audio_in_cnf,
                   para,sizeof(T_MFW_BT_TRANSFER_AUDIO_IN_CNF));
            /* service, addr with event BT_TRANSFER_AUDIO_IN_CNF to MMI */
            break;

          case BT_TRANSFER_AUDIO_OUT_CNF:
            /* confirms transfer audio in */
            memcpy(&bt_data->para.audio_out_cnf,
                   para,sizeof(T_MFW_BT_TRANSFER_AUDIO_OUT_CNF));
            /* service, addr with event BT_TRANSFER_AUDIO_OUT_CNF to MMI */
            break;

          case BT_AUTHORIZATION_IND:
            /* indicats remote device authorization request */
            memcpy(&bt_data->para.authoriz_ind,
                   para,sizeof(T_MFW_BT_AUTHORIZATION_IND));
            /* addr,remote name,service name, authorization_mask,connection_dir with event BT_AUTHORIZATION_IND to MMI */
            break;

          case BT_PIN_IND:
            /* indicats remote pin request */
            memcpy(&bt_data->para.pin_ind,
                   para,sizeof(T_MFW_BT_PIN_IND));
            /* addr,name with event BT_PIN_IND to MMI */
            break;

          case BT_RECONFIG_PROFILE_CNF:
            /* confirm reconfiguration profile  */
            memcpy(&bt_data->para.profile,
                   para,sizeof(T_MFW_BT_PROFILE_CNF));
            /* service, result_bd(,mfw_opp_mode,mfw_sync_mode,mfw_syn_aut_mode) with event BT_RECONFIG_PROFILE_CNF to MMI */
            break;

          case BT_DEVICE_PAIRED_IND:
            /* confirm pairing procedure  */
            memcpy(&bt_data->para.pair_ind,
                   para,sizeof(T_MFW_BT_DEV_PAIR_IND));
            /* remote addr, remote name and pair_res with event BT_DEVICE_PAIRED_IND to MMI */
            break;

          case BT_CALL_MONITORING_STATUS:
            /* indicats call monitoring events by dun/fax */
            memcpy(&bt_data->para.call_status,
                   para,sizeof(T_MFW_BT_CALL_STATUS_DUN_FAX));
            /* device and call status with event BT_CALL_MONITORING_STATUS to MMI */
            break;

          case BT_OPP_SERV_PUT_IND:
            /* indicats put request by opp server */
            memcpy(&bt_data->para.opp_s_obj,
                   para,sizeof(T_MFW_BT_OPP_PUT_IND));
            /* device,subtype,client_addr,object with event BT_OPP_SERV_PUT_IND to MMI */
            break;

          case BT_OPP_SERV_PUT_CNF:
            /* indicats put request by opp server (server side) */
            memcpy(&bt_data->para.opp_s_obj_cnf,
                   para,sizeof(T_MFW_BT_OPP_PUT_CNF));
            /* device,subtype,client_addr,object,error with event BT_OPP_SERV_PUT_CNF to MMI */
            break;

          case BT_OPP_OBJECT_PUSH_CNF:
            /* indicats push object to opp server (client side)*/
            memcpy(&bt_data->para.opp_cl_push_ob_cnf,
                   para,sizeof(T_MFW_BT_OPP_PUSH_CNF));
            /* device,subtype,server_addr,object,error with event BT_OPP_OBJECT_PUSH_CNF to MMI */
            break;

          case BT_OPP_OBJECT_PULL_CNF:
            /* indicats push object from opp server (client side)*/
            memcpy(&bt_data->para.opp_cl_pull_ob_cnf,
                   para,sizeof(T_MFW_BT_OPP_PULL_CNF));
            /* device,subtype,server_addr,object,error with event BT_OPP_OBJECT_PULL_CNF to MMI */
            break;
          }

/*#ifdef PCA_6350*/
        switch (event)
        {
          case BT_PCA_GW_STATUS_CFM:
            memcpy(&bt_data->para.pca_gw_status, para, sizeof(T_MFW_BT_PCA_GW_STATUS_CFM));
            break;
          case BT_PCA_GW_LINK_MONITORING:
            memcpy(&bt_data->para.pca_link_mon, para, sizeof(T_MFW_BT_PCA_GW_LINK_MONITORING));
            break;
          case BT_PCA_GW_CALL_MONITORING:
            memcpy(&bt_data->para.pca_call_mon, para, sizeof(T_MFW_BT_PCA_GW_CALL_MONITORING));
            break;
          case BT_PCA_GW_HANGUP_CFM:
            memcpy(&bt_data->para.pca_hangup, para, sizeof(T_MFW_BT_PCA_GW_HANGUP_CFM));
            break;
        }
/*#endif*/ /* PCA_6350 */
        if (bt_data->handler)
        {
          current_mfw_elem = cur_elem;
          /* to call back function in mmi  */
          if ((*(bt_data->handler))(bt_data->event,
              (void *) &bt_data->para))
          return TRUE;
        }
      }
    }/* next element for look for type of handle */
    cur_elem = cur_elem->next;
  }
  return FALSE;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8445)     MODULE  : MFW_BT                |
| STATE   : code                     ROUTINE : bt_init_profile_hsg_cl|
+--------------------------------------------------------------------+

  PURPOSE : configure and initialize a BT headset profile in client mode

*/
T_MFW_BT_RESULT_BT bt_init_profile_hsg_cl (T_MFW_BT_SERVICE_TYPE service,
                                  T_MFW_BT_HSG_CLIENT_CONFIG mfw_config)
{
  T_BTI_HSG_CLIENT_CONF bt_config;

  TRACE_FUNCTION ("bt_init_profile_hsg_cl()");

  memset(&bt_config,0,sizeof(bt_config));

  if(service EQ MFW_BT_HEADSET)
  {
    /* type of connection:
    ***  MFW_BT_AUTO_OUTG_DEF_CONN_OFF or
         MFW_BT_AUTO_OUTG_DEF_CONN_ON
        (connection with default pre-defined headset as soon as it receives a
        RING command from GSM)
    ***
    */
    switch(mfw_config.config_mode)
    {
        case MFW_BT_AUTO_OUTG_DEF_CONN_OFF:
          bt_config.config_mode = BTI_AUTO_OUTG_DEF_CONN_OFF;
          break;
        case MFW_BT_AUTO_OUTG_DEF_CONN_ON:
          bt_config.config_mode = BTI_AUTO_OUTG_DEF_CONN_ON;
          break;
    }

    bt_config.security = mfw_config.security;

    switch(btibtp_init_profile_hsg_req_cl((T_BTI_DEVICE_TYPE)service,bt_config))
    {/* BTP_INIT_PROFILE_REQ to BT */
      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_init_profile_hsg_serv|
+----------------------------------------------------------------------+

  PURPOSE : configure and initialize a BT headset profile in server mode

*/
T_MFW_BT_RESULT_BT bt_init_profile_hsg_serv (T_MFW_BT_SERVICE_TYPE service,
                                  T_MFW_BT_HSG_SERVER_CONFIG mfw_config)
{
  T_BTI_HSG_SERVER_CONF bt_config;

  TRACE_FUNCTION ("bt_init_profile_hsg_serv()");

  memset(&bt_config,0,sizeof(bt_config));

  if(service EQ MFW_BT_HEADSET)
  {
    bt_config.conn_config = mfw_config.serv_con_conf;
    /* length scan of connection requests of remote headsets *
    /* default value: MFW_BT_CONN_SCAN_TIME_DEFAULT_VALUE */
    bt_config.conn_time = mfw_config.conn_time;
    /* period between 2 scans of connection of remote headsets */
    /* default value: MFW_BT_CONN_SCAN_BREAK_DEFAULT_VALUE */
    bt_config.conn_break= mfw_config.conn_break;
    /* number of phone number in phone list */
    bt_config.nb_phone = mfw_config.nb_phone;
    /* phone number list of remote headset */
    memcpy(bt_config.phon_list,mfw_config.mfw_phone_list,sizeof(mfw_config.mfw_phone_list));
    /* associatd key list of  remote headset */
    memcpy(bt_config.key_list,mfw_config.mfw_key_list,sizeof(mfw_config.mfw_key_list));

    bt_config.security = mfw_config.security;

    switch(btibtp_init_profile_hsg_req_serv((T_BTI_DEVICE_TYPE)service,bt_config))
    {/* BTP_INIT_PROFILE_REQ to BT */
      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;

⌨️ 快捷键说明

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