@@ -42,49 +42,49 @@ namespace Utils {
4242
4343RegisterLogModule (" Otns" );
4444
45- const int kMaxStatusStringLength = 128 ;
45+ void Otns::EmitShortAddress ( uint16_t aShortAddress) const { EmitStatus ( " rloc16=%d " , aShortAddress); }
4646
47- void Otns::EmitShortAddress (uint16_t aShortAddress) { EmitStatus (" rloc16=%d" , aShortAddress); }
48-
49- void Otns::EmitExtendedAddress (const Mac::ExtAddress &aExtAddress)
47+ void Otns::EmitExtendedAddress (const Mac::ExtAddress &aExtAddress) const
5048{
5149 Mac::ExtAddress revExtAddress;
50+
5251 revExtAddress.Set (aExtAddress.m8 , Mac::ExtAddress::kReverseByteOrder );
5352 EmitStatus (" extaddr=%s" , revExtAddress.ToString ().AsCString ());
5453}
5554
5655void Otns::EmitPingRequest (const Ip6::Address &aPeerAddress,
5756 uint16_t aPingLength,
5857 uint32_t aTimestamp,
59- uint8_t aHopLimit)
58+ uint8_t aHopLimit) const
6059{
6160 OT_UNUSED_VARIABLE (aHopLimit);
62- EmitStatus (" ping_request=%s,%d,%lu" , aPeerAddress.ToString ().AsCString (), aPingLength, aTimestamp);
61+ EmitStatus (" ping_request=%s,%d,%lu" , aPeerAddress.ToString ().AsCString (), aPingLength, ToUlong ( aTimestamp) );
6362}
6463
65- void Otns::EmitPingReply (const Ip6::Address &aPeerAddress, uint16_t aPingLength, uint32_t aTimestamp, uint8_t aHopLimit)
64+ void Otns::EmitPingReply (const Ip6::Address &aPeerAddress,
65+ uint16_t aPingLength,
66+ uint32_t aTimestamp,
67+ uint8_t aHopLimit) const
6668{
67- EmitStatus (" ping_reply=%s,%u,%lu,%d" , aPeerAddress.ToString ().AsCString (), aPingLength, aTimestamp, aHopLimit);
69+ EmitStatus (" ping_reply=%s,%u,%lu,%d" , aPeerAddress.ToString ().AsCString (), aPingLength, ToUlong (aTimestamp),
70+ aHopLimit);
6871}
6972
70- void Otns::EmitStatus (const char *aFmt, ...)
73+ void Otns::EmitStatus (const char *aFmt, ...) const
7174{
72- char statusStr[kMaxStatusStringLength + 1 ];
73- int n;
74-
75- va_list ap;
76- va_start (ap, aFmt);
75+ StatusString string;
76+ va_list args;
7777
78- n = vsnprintf (statusStr, sizeof (statusStr), aFmt, ap );
79- OT_UNUSED_VARIABLE (n );
80- OT_ASSERT (n >= 0 );
78+ va_start (args, aFmt);
79+ string. AppendVarArgs (aFmt, args );
80+ va_end (args );
8181
82- va_end (ap);
83-
84- otPlatOtnsStatus (statusStr);
82+ EmitStatus (string);
8583}
8684
87- void Otns::HandleNotifierEvents (Events aEvents)
85+ void Otns::EmitStatus (const StatusString &aString) const { otPlatOtnsStatus (aString.AsCString ()); }
86+
87+ void Otns::HandleNotifierEvents (Events aEvents) const
8888{
8989 if (aEvents.Contains (kEventThreadRoleChanged ))
9090 {
@@ -93,7 +93,7 @@ void Otns::HandleNotifierEvents(Events aEvents)
9393
9494 if (aEvents.Contains (kEventThreadPartitionIdChanged ))
9595 {
96- EmitStatus (" parid=%x " , Get<Mle::Mle>().GetLeaderData ().GetPartitionId ());
96+ EmitStatus (" parid=%lx " , ToUlong ( Get<Mle::Mle>().GetLeaderData ().GetPartitionId () ));
9797 }
9898
9999#if OPENTHREAD_CONFIG_JOINER_ENABLE
@@ -104,95 +104,118 @@ void Otns::HandleNotifierEvents(Events aEvents)
104104#endif
105105}
106106
107- void Otns::EmitNeighborChange (NeighborTable::Event aEvent, const Neighbor &aNeighbor)
107+ void Otns::EmitNeighborChange (NeighborTable::Event aEvent, const Neighbor &aNeighbor) const
108108{
109+ StatusString string;
110+
109111 switch (aEvent)
110112 {
111113 case NeighborTable::kRouterAdded :
112- EmitStatus (" router_added=%s " , aNeighbor. GetExtAddress (). ToString (). AsCString () );
114+ string. Append (" router_added" );
113115 break ;
114116 case NeighborTable::kRouterRemoved :
115- EmitStatus (" router_removed=%s " , aNeighbor. GetExtAddress (). ToString (). AsCString () );
117+ string. Append (" router_removed" );
116118 break ;
117119 case NeighborTable::kChildAdded :
118- EmitStatus (" child_added=%s " , aNeighbor. GetExtAddress (). ToString (). AsCString () );
120+ string. Append (" child_added" );
119121 break ;
120122 case NeighborTable::kChildRemoved :
121- EmitStatus (" child_removed=%s " , aNeighbor. GetExtAddress (). ToString (). AsCString () );
123+ string. Append (" child_removed" );
122124 break ;
123125 case NeighborTable::kChildModeChanged :
124- break ;
126+ ExitNow () ;
125127 }
128+
129+ string.Append (" =%s" , aNeighbor.GetExtAddress ().ToString ().AsCString ());
130+ EmitStatus (string);
131+
132+ exit:
133+ return ;
126134}
127135
128- void Otns::EmitTransmit (const Mac::TxFrame &aFrame)
136+ void Otns::EmitTransmit (const Mac::TxFrame &aFrame) const
129137{
138+ StatusString string;
130139 Mac::Address dst;
131- uint16_t frameControlField = aFrame.GetFrameControlField ();
132- uint8_t channel = aFrame.GetChannel ();
133- uint8_t sequence = aFrame.GetSequence ();
134140
135141 IgnoreError (aFrame.GetDstAddr (dst));
136142
143+ string.Append (" transmit=%d,%04x,%d" , aFrame.GetChannel (), aFrame.GetFrameControlField (), aFrame.GetSequence ());
144+
137145 if (dst.IsShort ())
138146 {
139- EmitStatus ( " transmit=%d ,%04x,%d,%04x " , channel, frameControlField, sequence , dst.GetShort ());
147+ string. Append ( " ,%04x" , dst.GetShort ());
140148 }
141149 else if (dst.IsExtended ())
142150 {
143- EmitStatus ( " transmit=%d,%04x,%d,%s " , channel, frameControlField, sequence , dst.ToString ().AsCString ());
151+ string. Append ( " ,%s " , dst.ToString ().AsCString ());
144152 }
145- else
146- {
147- EmitStatus (" transmit=%d,%04x,%d" , channel, frameControlField, sequence);
148- }
149- }
150153
151- void Otns::EmitDeviceMode (Mle::DeviceMode aMode)
152- {
153- EmitStatus (" mode=%s%s%s" , aMode.IsRxOnWhenIdle () ? " r" : " " , aMode.IsFullThreadDevice () ? " d" : " " ,
154- (aMode.GetNetworkDataType () == NetworkData::kFullSet ) ? " n" : " " );
154+ EmitStatus (string);
155155}
156156
157- void Otns::EmitCoapSend ( const Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
157+ void Otns::EmitDeviceMode (Mle::DeviceMode aMode) const
158158{
159- char uriPath[Coap::Message::kMaxReceivedUriPath + 1 ];
160- Error error;
159+ StatusString string;
161160
162- SuccessOrExit (error = aMessage.ReadUriPathOptions (uriPath));
161+ string.Append (" mode=" );
162+
163+ if (aMode.IsRxOnWhenIdle ())
164+ {
165+ string.Append (" r" );
166+ }
163167
164- EmitStatus (" coap=send,%d,%d,%d,%s,%s,%d" , aMessage.GetMessageId (), aMessage.GetType (), aMessage.GetCode (), uriPath,
165- aMessageInfo.GetPeerAddr ().ToString ().AsCString (), aMessageInfo.GetPeerPort ());
168+ if (aMode.IsFullThreadDevice ())
169+ {
170+ string.Append (" d" );
171+ }
166172
167- exit:
168- LogWarnOnError (error, " EmitCoapSend" );
173+ if (aMode.GetNetworkDataType () == NetworkData::kFullSet )
174+ {
175+ string.Append (" m" );
176+ }
177+
178+ EmitStatus (string);
169179}
170180
171- void Otns::EmitCoapReceive (const Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
181+ void Otns::EmitCoapSend (const Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) const
172182{
173- char uriPath[Coap::Message:: kMaxReceivedUriPath + 1 ] ;
174- Error error = kErrorNone ;
183+ EmitCoapStatus ( " send " , aMessage, aMessageInfo) ;
184+ }
175185
176- SuccessOrExit (error = aMessage.ReadUriPathOptions (uriPath));
186+ void Otns::EmitCoapReceive (const Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) const
187+ {
188+ EmitCoapStatus (" recv" , aMessage, aMessageInfo);
189+ }
177190
178- EmitStatus (" coap=recv,%d,%d,%d,%s,%s,%d" , aMessage.GetMessageId (), aMessage.GetType (), aMessage.GetCode (), uriPath,
179- aMessageInfo.GetPeerAddr ().ToString ().AsCString (), aMessageInfo.GetPeerPort ());
180- exit:
181- LogWarnOnError (error, " EmitCoapReceive" );
191+ void Otns::EmitCoapSendFailure (Error aError, Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) const
192+ {
193+ EmitCoapStatus (" send_error" , aMessage, aMessageInfo, &aError);
182194}
183195
184- void Otns::EmitCoapSendFailure (Error aError, Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
196+ void Otns::EmitCoapStatus (const char *aAction,
197+ const Coap::Message &aMessage,
198+ const Ip6::MessageInfo &aMessageInfo,
199+ Error *aError) const
185200{
186- char uriPath[Coap::Message::kMaxReceivedUriPath + 1 ];
187- Error error = kErrorNone ;
201+ Error error;
202+ char uriPath[Coap::Message::kMaxReceivedUriPath + 1 ];
203+ StatusString string;
188204
189205 SuccessOrExit (error = aMessage.ReadUriPathOptions (uriPath));
190206
191- EmitStatus (" coap=send_error,%d,%d,%d,%s,%s,%d,%s" , aMessage.GetMessageId (), aMessage.GetType (), aMessage.GetCode (),
192- uriPath, aMessageInfo.GetPeerAddr ().ToString ().AsCString (), aMessageInfo.GetPeerPort (),
193- ErrorToString (aError));
207+ string.Append (" coap=%s,%d,%d,%d,%s,%s,%d" , aAction, aMessage.GetMessageId (), aMessage.GetType (), aMessage.GetCode (),
208+ uriPath, aMessageInfo.GetPeerAddr ().ToString ().AsCString (), aMessageInfo.GetPeerPort ());
209+
210+ if (aError != nullptr )
211+ {
212+ string.Append (" ,%s" , ErrorToString (*aError));
213+ }
214+
215+ EmitStatus (string);
216+
194217exit:
195- LogWarnOnError (error, " EmitCoapSendFailure " );
218+ LogWarnOnError (error, " EmitCoapStatus " );
196219}
197220
198221} // namespace Utils
0 commit comments