31
31
#include < utility>
32
32
33
33
namespace {
34
- constexpr uint8_t kVersionMask = 0x0F ;
34
+ constexpr uint8_t kVersionMask = 0x0F ;
35
+ constexpr uint8_t kMaxFileDesignatorLen = 32 ;
35
36
} // namespace
36
37
37
38
using namespace chip ;
@@ -99,17 +100,16 @@ CHIP_ERROR TransferInit::Parse(System::PacketBufferHandle aBuffer)
99
100
uint32_t tmpUint32Value = 0 ; // Used for reading non-wide length and offset fields
100
101
uint8_t * bufStart = aBuffer->Start ();
101
102
Reader bufReader (bufStart, aBuffer->DataLength ());
102
- BitFlags<RangeControlFlags> rangeCtlFlags;
103
103
104
- SuccessOrExit (bufReader.Read8 (&proposedTransferCtl).Read8 (rangeCtlFlags .RawStorage ()).Read16 (&MaxBlockSize).StatusCode ());
104
+ SuccessOrExit (bufReader.Read8 (&proposedTransferCtl).Read8 (mRangeCtlFlags .RawStorage ()).Read16 (&MaxBlockSize).StatusCode ());
105
105
106
106
Version = proposedTransferCtl & kVersionMask ;
107
107
TransferCtlOptions.SetRaw (static_cast <uint8_t >(proposedTransferCtl & ~kVersionMask ));
108
108
109
109
StartOffset = 0 ;
110
- if (rangeCtlFlags .Has (RangeControlFlags::kStartOffset ))
110
+ if (mRangeCtlFlags .Has (RangeControlFlags::kStartOffset ))
111
111
{
112
- if (rangeCtlFlags .Has (RangeControlFlags::kWiderange ))
112
+ if (mRangeCtlFlags .Has (RangeControlFlags::kWiderange ))
113
113
{
114
114
SuccessOrExit (bufReader.Read64 (&StartOffset).StatusCode ());
115
115
}
@@ -121,9 +121,9 @@ CHIP_ERROR TransferInit::Parse(System::PacketBufferHandle aBuffer)
121
121
}
122
122
123
123
MaxLength = 0 ;
124
- if (rangeCtlFlags .Has (RangeControlFlags::kDefLen ))
124
+ if (mRangeCtlFlags .Has (RangeControlFlags::kDefLen ))
125
125
{
126
- if (rangeCtlFlags .Has (RangeControlFlags::kWiderange ))
126
+ if (mRangeCtlFlags .Has (RangeControlFlags::kWiderange ))
127
127
{
128
128
SuccessOrExit (bufReader.Read64 (&MaxLength).StatusCode ());
129
129
}
@@ -166,6 +166,34 @@ size_t TransferInit::MessageSize() const
166
166
return WriteToBuffer (emptyBuf).Needed ();
167
167
}
168
168
169
+ #if CHIP_AUTOMATION_LOGGING
170
+ void TransferInit::LogMessage (bdx::MessageType messageType) const
171
+ {
172
+ char fd[kMaxFileDesignatorLen ];
173
+ snprintf (fd, sizeof (fd), " %s" , FileDesignator);
174
+
175
+ switch (messageType)
176
+ {
177
+ case MessageType::SendInit:
178
+ ChipLogAutomation (" SendInit" );
179
+ break ;
180
+ case MessageType::ReceiveInit:
181
+ ChipLogAutomation (" ReceiveInit" );
182
+ break ;
183
+ default :
184
+ break ;
185
+ }
186
+
187
+ ChipLogAutomation (" Proposed Transfer Control: 0x%X" , static_cast <unsigned >(TransferCtlOptions.Raw () | Version));
188
+ ChipLogAutomation (" Range Control: 0x%X" , static_cast <unsigned >(mRangeCtlFlags .Raw ()));
189
+ ChipLogAutomation (" Proposed Max Block Size: %" PRIu16, MaxBlockSize);
190
+ ChipLogAutomation (" Start Offset: 0x" ChipLogFormatX64, ChipLogValueX64 (StartOffset));
191
+ ChipLogAutomation (" Proposed Max Length: 0x" ChipLogFormatX64, ChipLogValueX64 (MaxLength));
192
+ ChipLogAutomation (" File Designator Length: %" PRIu16, FileDesLength);
193
+ ChipLogAutomation (" File Designator: %s" , fd);
194
+ }
195
+ #endif // CHIP_AUTOMATION_LOGGING
196
+
169
197
bool TransferInit::operator ==(const TransferInit & another) const
170
198
{
171
199
if ((MetadataLength != another.MetadataLength ) || (FileDesLength != another.FileDesLength ))
@@ -246,6 +274,16 @@ size_t SendAccept::MessageSize() const
246
274
return WriteToBuffer (emptyBuf).Needed ();
247
275
}
248
276
277
+ #if CHIP_AUTOMATION_LOGGING
278
+ void SendAccept::LogMessage (bdx::MessageType messageType) const
279
+ {
280
+ (void ) messageType;
281
+ ChipLogAutomation (" SendAccept" );
282
+ ChipLogAutomation (" Transfer Control: 0x%X" , static_cast <unsigned >(TransferCtlFlags.Raw () | Version));
283
+ ChipLogAutomation (" Max Block Size: %" PRIu16, MaxBlockSize);
284
+ }
285
+ #endif // CHIP_AUTOMATION_LOGGING
286
+
249
287
bool SendAccept::operator ==(const SendAccept & another) const
250
288
{
251
289
if (MetadataLength != another.MetadataLength )
@@ -317,19 +355,18 @@ CHIP_ERROR ReceiveAccept::Parse(System::PacketBufferHandle aBuffer)
317
355
uint32_t tmpUint32Value = 0 ; // Used for reading non-wide length and offset fields
318
356
uint8_t * bufStart = aBuffer->Start ();
319
357
Reader bufReader (bufStart, aBuffer->DataLength ());
320
- BitFlags<RangeControlFlags> rangeCtlFlags;
321
358
322
- SuccessOrExit (bufReader.Read8 (&transferCtl).Read8 (rangeCtlFlags .RawStorage ()).Read16 (&MaxBlockSize).StatusCode ());
359
+ SuccessOrExit (bufReader.Read8 (&transferCtl).Read8 (mRangeCtlFlags .RawStorage ()).Read16 (&MaxBlockSize).StatusCode ());
323
360
324
361
Version = transferCtl & kVersionMask ;
325
362
326
363
// Only one of these values should be set. It is up to the caller to verify this.
327
364
TransferCtlFlags.SetRaw (static_cast <uint8_t >(transferCtl & ~kVersionMask ));
328
365
329
366
StartOffset = 0 ;
330
- if (rangeCtlFlags .Has (RangeControlFlags::kStartOffset ))
367
+ if (mRangeCtlFlags .Has (RangeControlFlags::kStartOffset ))
331
368
{
332
- if (rangeCtlFlags .Has (RangeControlFlags::kWiderange ))
369
+ if (mRangeCtlFlags .Has (RangeControlFlags::kWiderange ))
333
370
{
334
371
SuccessOrExit (bufReader.Read64 (&StartOffset).StatusCode ());
335
372
}
@@ -341,9 +378,9 @@ CHIP_ERROR ReceiveAccept::Parse(System::PacketBufferHandle aBuffer)
341
378
}
342
379
343
380
Length = 0 ;
344
- if (rangeCtlFlags .Has (RangeControlFlags::kDefLen ))
381
+ if (mRangeCtlFlags .Has (RangeControlFlags::kDefLen ))
345
382
{
346
- if (rangeCtlFlags .Has (RangeControlFlags::kWiderange ))
383
+ if (mRangeCtlFlags .Has (RangeControlFlags::kWiderange ))
347
384
{
348
385
SuccessOrExit (bufReader.Read64 (&Length).StatusCode ());
349
386
}
@@ -380,6 +417,18 @@ size_t ReceiveAccept::MessageSize() const
380
417
return WriteToBuffer (emptyBuf).Needed ();
381
418
}
382
419
420
+ #if CHIP_AUTOMATION_LOGGING
421
+ void ReceiveAccept::LogMessage (bdx::MessageType messageType) const
422
+ {
423
+ (void ) messageType;
424
+ ChipLogAutomation (" ReceiveAccept" );
425
+ ChipLogAutomation (" Transfer Control: 0x%X" , TransferCtlFlags.Raw () | Version);
426
+ ChipLogAutomation (" Range Control: 0x%X" , mRangeCtlFlags .Raw ());
427
+ ChipLogAutomation (" Max Block Size: %" PRIu16, MaxBlockSize);
428
+ ChipLogAutomation (" Length: 0x" ChipLogFormatX64, ChipLogValueX64 (Length));
429
+ }
430
+ #endif // CHIP_AUTOMATION_LOGGING
431
+
383
432
bool ReceiveAccept::operator ==(const ReceiveAccept & another) const
384
433
{
385
434
if (MetadataLength != another.MetadataLength )
@@ -423,6 +472,28 @@ bool CounterMessage::operator==(const CounterMessage & another) const
423
472
return (BlockCounter == another.BlockCounter );
424
473
}
425
474
475
+ #if CHIP_AUTOMATION_LOGGING
476
+ void CounterMessage::LogMessage (bdx::MessageType messageType) const
477
+ {
478
+ switch (messageType)
479
+ {
480
+ case MessageType::BlockQuery:
481
+ ChipLogAutomation (" BlockQuery" );
482
+ break ;
483
+ case MessageType::BlockAck:
484
+ ChipLogAutomation (" BlockAck" );
485
+ break ;
486
+ case MessageType::BlockAckEOF:
487
+ ChipLogAutomation (" BlockAckEOF" );
488
+ break ;
489
+ default :
490
+ break ;
491
+ }
492
+
493
+ ChipLogAutomation (" Block Counter: %" PRIu32, BlockCounter);
494
+ }
495
+ #endif // CHIP_AUTOMATION_LOGGING
496
+
426
497
// WARNING: this function should never return early, since MessageSize() relies on it to calculate
427
498
// the size of the message (even if the message is incomplete or filled out incorrectly).
428
499
Encoding::LittleEndian::BufferWriter & DataBlock::WriteToBuffer (Encoding::LittleEndian::BufferWriter & aBuffer) const
@@ -469,6 +540,26 @@ size_t DataBlock::MessageSize() const
469
540
return WriteToBuffer (emptyBuf).Needed ();
470
541
}
471
542
543
+ #if CHIP_AUTOMATION_LOGGING
544
+ void DataBlock::LogMessage (bdx::MessageType messageType) const
545
+ {
546
+ switch (messageType)
547
+ {
548
+ case MessageType::Block:
549
+ ChipLogAutomation (" Block" );
550
+ break ;
551
+ case MessageType::BlockEOF:
552
+ ChipLogAutomation (" BlockEOF" );
553
+ break ;
554
+ default :
555
+ break ;
556
+ }
557
+
558
+ ChipLogAutomation (" Block Counter: %" PRIu32, BlockCounter);
559
+ ChipLogAutomation (" Data Length: %zu" , DataLength);
560
+ }
561
+ #endif // CHIP_AUTOMATION_LOGGING
562
+
472
563
bool DataBlock::operator ==(const DataBlock & another) const
473
564
{
474
565
if (DataLength != another.DataLength )
0 commit comments