@@ -181,13 +181,6 @@ void BorderAgent::SetServiceChangedCallback(ServiceChangedCallback aCallback, vo
181181 PostServiceTask ();
182182}
183183
184- Error BorderAgent::PrepareServiceTxtData (ServiceTxtData &aTxtData) const
185- {
186- TxtEncoder encoder (GetInstance (), aTxtData);
187-
188- return encoder.EncodeTxtData ();
189- }
190-
191184void BorderAgent::HandleNotifierEvents (Events aEvents)
192185{
193186 if (aEvents.Contains (kEventThreadRoleChanged ))
@@ -390,150 +383,113 @@ void BorderAgent::PostServiceTask(void)
390383 }
391384}
392385
393- // ----------------------------------------------------------------------------------------------------------------------
394- // BorderAgent::TxtEncoder
395-
396- Error BorderAgent::TxtEncoder::AppendTxtEntry (const char *aKey, const void *aValue, uint16_t aValueLength)
386+ Error BorderAgent::PrepareServiceTxtData (ServiceTxtData &aTxtData)
397387{
398- Dns::TxtEntry txtEntry;
399-
400- txtEntry.Init (aKey, reinterpret_cast <const uint8_t *>(aValue), aValueLength);
401- return txtEntry.AppendTo (mAppender );
402- }
403-
404- template <> Error BorderAgent::TxtEncoder::AppendTxtEntry<NameData>(const char *aKey, const NameData &aObject)
405- {
406- return AppendTxtEntry (aKey, aObject.GetBuffer (), aObject.GetLength ());
407- }
408-
409- Error BorderAgent::TxtEncoder::EncodeTxtData (void )
410- {
411- Error error = kErrorNone ;
388+ Error error = kErrorNone ;
389+ Dns::TxtDataEncoder encoder (aTxtData.mData , sizeof (aTxtData.mData ));
412390
413391#if OPENTHREAD_CONFIG_BORDER_AGENT_ID_ENABLE
414392 {
415393 Id id;
416394
417- if (Get<BorderAgent>(). GetId (id) == kErrorNone )
395+ if (GetId (id) == kErrorNone )
418396 {
419- SuccessOrExit (error = AppendTxtEntry (" id" , id));
397+ SuccessOrExit (error = encoder. AppendEntry (" id" , id));
420398 }
421399 }
422400#endif
423- SuccessOrExit (error = AppendTxtEntry (" nn" , Get<NetworkNameManager>().GetNetworkName ().GetAsData ()));
424- SuccessOrExit (error = AppendTxtEntry (" xp" , Get<ExtendedPanIdManager>().GetExtPanId ()));
425- SuccessOrExit (error = AppendTxtEntry (" tv" , NameData ( kThreadVersionString , strlen ( kThreadVersionString )) ));
426- SuccessOrExit (error = AppendTxtEntry (" xa" , Get<Mac::Mac>().GetExtAddress ()));
427- SuccessOrExit (error = AppendTxtEntry (" sb" , BigEndian::HostSwap32 ( DetermineStateBitmap () )));
401+ SuccessOrExit (error = encoder. AppendNameEntry (" nn" , Get<NetworkNameManager>().GetNetworkName ().GetAsData ()));
402+ SuccessOrExit (error = encoder. AppendEntry (" xp" , Get<ExtendedPanIdManager>().GetExtPanId ()));
403+ SuccessOrExit (error = encoder. AppendStringEntry (" tv" , kThreadVersionString ));
404+ SuccessOrExit (error = encoder. AppendEntry (" xa" , Get<Mac::Mac>().GetExtAddress ()));
405+ SuccessOrExit (error = encoder. AppendBigEndianUintEntry (" sb" , DetermineStateBitmap ()));
428406
429407 if (Get<Mle::Mle>().IsAttached ())
430408 {
431- SuccessOrExit (
432- error = AppendTxtEntry ( " pt " , BigEndian::HostSwap32 (Get<Mle::Mle>(). GetLeaderData (). GetPartitionId ())));
409+ SuccessOrExit (error = encoder. AppendBigEndianUintEntry ( " pt " , Get<Mle::Mle>(). GetLeaderData (). GetPartitionId ()));
410+
433411 if (Get<MeshCoP::ActiveDatasetManager>().GetTimestamp ().IsValid ())
434412 {
435- SuccessOrExit (error = AppendTxtEntry (" at" , Get<MeshCoP::ActiveDatasetManager>().GetTimestamp ()));
413+ SuccessOrExit (error = encoder. AppendEntry (" at" , Get<MeshCoP::ActiveDatasetManager>().GetTimestamp ()));
436414 }
437415 }
438416
439417#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE
440- SuccessOrExit (error = AppendBbrTxtEntry ());
441- #endif
442-
443- #if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
444- SuccessOrExit (error = AppendOmrTxtEntry ());
445- #endif
446-
447- mTxtData .mLength = mAppender .GetAppendedLength ();
448-
449- exit:
450- return error;
451- }
452-
453- #if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE
454- Error BorderAgent::TxtEncoder::AppendBbrTxtEntry (void )
455- {
456- Error error = kErrorNone ;
457- const DomainName &domainName = Get<MeshCoP::NetworkNameManager>().GetDomainName ();
458-
459418 if (Get<Mle::Mle>().IsAttached () && Get<BackboneRouter::Local>().IsEnabled ())
460419 {
461420 BackboneRouter::Config bbrConfig;
462421
463422 Get<BackboneRouter::Local>().GetConfig (bbrConfig);
464- SuccessOrExit (error = AppendTxtEntry (" sq" , bbrConfig.mSequenceNumber ));
465- SuccessOrExit (error = AppendTxtEntry (" bb" , BigEndian::HostSwap16 ( BackboneRouter::kBackboneUdpPort ) ));
423+ SuccessOrExit (error = encoder. AppendEntry (" sq" , bbrConfig.mSequenceNumber ));
424+ SuccessOrExit (error = encoder. AppendBigEndianUintEntry (" bb" , BackboneRouter::kBackboneUdpPort ));
466425 }
467426
468- error = AppendTxtEntry (
469- " dn" , NameData (domainName.GetAsCString (), StringLength (domainName.GetAsCString (), sizeof (domainName))));
470-
471- exit:
472- return error;
473- }
474- #endif // OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE
427+ SuccessOrExit (error =
428+ encoder.AppendNameEntry (" dn" , Get<MeshCoP::NetworkNameManager>().GetDomainName ().GetAsData ()));
429+ #endif
475430
476431#if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
477- Error BorderAgent::TxtEncoder::AppendOmrTxtEntry (void )
478- {
479- Error error = kErrorNone ;
480- Ip6::Prefix prefix;
481- BorderRouter::RoutingManager::RoutePreference preference;
482-
483- if (Get<BorderRouter::RoutingManager>().GetFavoredOmrPrefix (prefix, preference) == kErrorNone &&
484- prefix.GetLength () > 0 )
485432 {
486- uint8_t omrData[Ip6::NetworkPrefix::kSize + 1 ];
433+ Ip6::Prefix prefix;
434+ BorderRouter::RoutingManager::RoutePreference preference;
435+
436+ if (Get<BorderRouter::RoutingManager>().GetFavoredOmrPrefix (prefix, preference) == kErrorNone &&
437+ prefix.GetLength () > 0 )
438+ {
439+ uint8_t omrData[Ip6::NetworkPrefix::kSize + 1 ];
487440
488- omrData[0 ] = prefix.GetLength ();
489- memcpy (omrData + 1 , prefix.GetBytes (), prefix.GetBytesSize ());
441+ omrData[0 ] = prefix.GetLength ();
442+ memcpy (omrData + 1 , prefix.GetBytes (), prefix.GetBytesSize ());
490443
491- SuccessOrExit (error = AppendTxtEntry (" omr" , omrData));
444+ SuccessOrExit (error = encoder.AppendEntry (" omr" , omrData));
445+ }
492446 }
447+ #endif
448+
449+ aTxtData.mLength = encoder.GetLength ();
493450
494451exit:
495452 return error;
496453}
497- #endif
498454
499- uint32_t BorderAgent::TxtEncoder:: DetermineStateBitmap (void )
455+ uint32_t BorderAgent::DetermineStateBitmap (void ) const
500456{
501457 uint32_t bitmap = 0 ;
502458
503- bitmap |= (Get<BorderAgent>(). IsRunning () ? kConnectionModePskc : kConnectionModeDisabled );
504- bitmap |= kAvailabilityHigh ;
459+ bitmap |= (IsRunning () ? StateBitmap:: kConnectionModePskc : StateBitmap:: kConnectionModeDisabled );
460+ bitmap |= StateBitmap:: kAvailabilityHigh ;
505461
506462 switch (Get<Mle::Mle>().GetRole ())
507463 {
508464 case Mle::DeviceRole::kRoleDisabled :
509- bitmap |= (kThreadIfStatusNotInitialized | kThreadRoleDisabledOrDetached );
465+ bitmap |= (StateBitmap:: kThreadIfStatusNotInitialized | StateBitmap:: kThreadRoleDisabledOrDetached );
510466 break ;
511467 case Mle::DeviceRole::kRoleDetached :
512- bitmap |= (kThreadIfStatusInitialized | kThreadRoleDisabledOrDetached );
468+ bitmap |= (StateBitmap:: kThreadIfStatusInitialized | StateBitmap:: kThreadRoleDisabledOrDetached );
513469 break ;
514470 case Mle::DeviceRole::kRoleChild :
515- bitmap |= (kThreadIfStatusActive | kThreadRoleChild );
471+ bitmap |= (StateBitmap:: kThreadIfStatusActive | StateBitmap:: kThreadRoleChild );
516472 break ;
517473 case Mle::DeviceRole::kRoleRouter :
518- bitmap |= (kThreadIfStatusActive | kThreadRoleRouter );
474+ bitmap |= (StateBitmap:: kThreadIfStatusActive | StateBitmap:: kThreadRoleRouter );
519475 break ;
520476 case Mle::DeviceRole::kRoleLeader :
521- bitmap |= (kThreadIfStatusActive | kThreadRoleLeader );
477+ bitmap |= (StateBitmap:: kThreadIfStatusActive | StateBitmap:: kThreadRoleLeader );
522478 break ;
523479 }
524480
525481#if OPENTHREAD_FTD && OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE
526482 if (Get<Mle::Mle>().IsAttached ())
527483 {
528- bitmap |= (Get<BackboneRouter::Local>().IsEnabled () ? kFlagBbrIsActive : 0 );
529- bitmap |= (Get<BackboneRouter::Local>().IsPrimary () ? kFlagBbrIsPrimary : 0 );
484+ bitmap |= (Get<BackboneRouter::Local>().IsEnabled () ? StateBitmap:: kFlagBbrIsActive : 0 );
485+ bitmap |= (Get<BackboneRouter::Local>().IsPrimary () ? StateBitmap:: kFlagBbrIsPrimary : 0 );
530486 }
531487#endif
532488
533489#if OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE
534- if (Get<BorderAgent::EphemeralKeyManager>() .GetState () != EphemeralKeyManager::kStateDisabled )
490+ if (mEphemeralKeyManager .GetState () != EphemeralKeyManager::kStateDisabled )
535491 {
536- bitmap |= kFlagEpskcSupported ;
492+ bitmap |= StateBitmap:: kFlagEpskcSupported ;
537493 }
538494#endif
539495
0 commit comments