Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 396cd2b6 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by Andre Eisenbach
Browse files

Add A2DP_DumpCodecInfo() API

The API can be used to display A2DP codec info when using |LOG_DEBUG|.

Test: Code compilation
Bug: 64128712
Change-Id: I04379b45f24adb7008365d38ccc8aa7f49ed4b73
parent 467290cd
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -529,7 +529,7 @@ bool A2DP_BuildCodecHeaderAac(UNUSED_ATTR const uint8_t* p_codec_info,
  return true;
}

void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) {
bool A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) {
  tA2DP_STATUS a2dp_status;
  tA2DP_AAC_CIE aac_cie;

@@ -538,7 +538,7 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) {
  a2dp_status = A2DP_ParseInfoAac(&aac_cie, p_codec_info, true);
  if (a2dp_status != A2DP_SUCCESS) {
    LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAac fail:%d", __func__, a2dp_status);
    return;
    return false;
  }

  LOG_DEBUG(LOG_TAG, "\tobjectType: 0x%x", aac_cie.objectType);
@@ -605,6 +605,8 @@ void A2DP_DumpCodecInfoAac(const uint8_t* p_codec_info) {
            (aac_cie.variableBitRateSupport != 0) ? "true" : "false");

  LOG_DEBUG(LOG_TAG, "\tbitRate: %u", aac_cie.bitRate);

  return true;
}

const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceAac(
+20 −0
Original line number Diff line number Diff line
@@ -1258,3 +1258,23 @@ bool A2DP_InitCodecConfig(btav_a2dp_codec_index_t codec_index,

  return false;
}

bool A2DP_DumpCodecInfo(const uint8_t* p_codec_info) {
  tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_codec_info);

  LOG_VERBOSE(LOG_TAG, "%s: codec_type = 0x%x", __func__, codec_type);

  switch (codec_type) {
    case A2DP_MEDIA_CT_SBC:
      return A2DP_DumpCodecInfoSbc(p_codec_info);
    case A2DP_MEDIA_CT_AAC:
      return A2DP_DumpCodecInfoAac(p_codec_info);
    case A2DP_MEDIA_CT_NON_A2DP:
      return A2DP_VendorDumpCodecInfo(p_codec_info);
    default:
      break;
  }

  LOG_ERROR(LOG_TAG, "%s: unsupported codec type 0x%x", __func__, codec_type);
  return false;
}
+4 −2
Original line number Diff line number Diff line
@@ -867,7 +867,7 @@ bool A2DP_BuildCodecHeaderSbc(UNUSED_ATTR const uint8_t* p_codec_info,
  return true;
}

void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) {
bool A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) {
  tA2DP_STATUS a2dp_status;
  tA2DP_SBC_CIE sbc_cie;

@@ -876,7 +876,7 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) {
  a2dp_status = A2DP_ParseInfoSbc(&sbc_cie, p_codec_info, true);
  if (a2dp_status != A2DP_SUCCESS) {
    LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoSbc fail:%d", __func__, a2dp_status);
    return;
    return false;
  }

  LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", sbc_cie.samp_freq);
@@ -939,6 +939,8 @@ void A2DP_DumpCodecInfoSbc(const uint8_t* p_codec_info) {

  LOG_DEBUG(LOG_TAG, "\tBit pool Min:%d Max:%d", sbc_cie.min_bitpool,
            sbc_cie.max_bitpool);

  return true;
}

const tA2DP_ENCODER_INTERFACE* A2DP_GetEncoderInterfaceSbc(
+26 −0
Original line number Diff line number Diff line
@@ -543,3 +543,29 @@ bool A2DP_VendorInitCodecConfig(btav_a2dp_codec_index_t codec_index,

  return false;
}

bool A2DP_VendorDumpCodecInfo(const uint8_t* p_codec_info) {
  uint32_t vendor_id = A2DP_VendorCodecGetVendorId(p_codec_info);
  uint16_t codec_id = A2DP_VendorCodecGetCodecId(p_codec_info);

  // Check for aptX
  if (vendor_id == A2DP_APTX_VENDOR_ID &&
      codec_id == A2DP_APTX_CODEC_ID_BLUETOOTH) {
    return A2DP_VendorDumpCodecInfoAptx(p_codec_info);
  }

  // Check for aptX-HD
  if (vendor_id == A2DP_APTX_HD_VENDOR_ID &&
      codec_id == A2DP_APTX_HD_CODEC_ID_BLUETOOTH) {
    return A2DP_VendorDumpCodecInfoAptxHd(p_codec_info);
  }

  // Check for LDAC
  if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) {
    return A2DP_VendorDumpCodecInfoLdac(p_codec_info);
  }

  // Add checks based on <vendor_id, codec_id>

  return false;
}
+4 −2
Original line number Diff line number Diff line
@@ -332,7 +332,7 @@ bool A2DP_VendorBuildCodecHeaderAptx(UNUSED_ATTR const uint8_t* p_codec_info,
  return true;
}

void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) {
bool A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) {
  tA2DP_STATUS a2dp_status;
  tA2DP_APTX_CIE aptx_cie;

@@ -341,7 +341,7 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) {
  a2dp_status = A2DP_ParseInfoAptx(&aptx_cie, p_codec_info, true);
  if (a2dp_status != A2DP_SUCCESS) {
    LOG_ERROR(LOG_TAG, "%s: A2DP_ParseInfoAptx fail:%d", __func__, a2dp_status);
    return;
    return false;
  }

  LOG_DEBUG(LOG_TAG, "\tsamp_freq: 0x%x", aptx_cie.sampleRate);
@@ -359,6 +359,8 @@ void A2DP_VendorDumpCodecInfoAptx(const uint8_t* p_codec_info) {
  if (aptx_cie.channelMode & A2DP_APTX_CHANNELS_STEREO) {
    LOG_DEBUG(LOG_TAG, "\tch_mode: (Stereo)");
  }

  return true;
}

const tA2DP_ENCODER_INTERFACE* A2DP_VendorGetEncoderInterfaceAptx(
Loading