Skip to content

Commit 0e64774

Browse files
committed
dwt: refactor out unnecessary explicit panic
1 parent 021420b commit 0e64774

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

src/peripheral/dwt.rs

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -364,43 +364,39 @@ impl Comparator {
364364
pub fn configure(&self, settings: ComparatorFunction) -> Result<(), DwtError> {
365365
match settings {
366366
ComparatorFunction::Address(settings) => unsafe {
367-
if settings.emit == EmitOption::PC && settings.access_type != AccessType::ReadWrite
368-
{
369-
return Err(DWTError::InvalidFunction);
370-
}
367+
// FUNCTION, EMITRANGE
368+
// See Table C1-14
369+
let (function, emit_range) = match (&settings.access_type, &settings.emit) {
370+
(AccessType::ReadOnly, EmitOption::Data) => (0b1100, false),
371+
(AccessType::ReadOnly, EmitOption::Address) => (0b1100, true),
372+
(AccessType::ReadOnly, EmitOption::AddressData) => (0b1110, true),
373+
(AccessType::ReadOnly, EmitOption::PCData) => (0b1110, false),
374+
375+
(AccessType::WriteOnly, EmitOption::Data) => (0b1101, false),
376+
(AccessType::WriteOnly, EmitOption::Address) => (0b1101, true),
377+
(AccessType::WriteOnly, EmitOption::AddressData) => (0b1111, true),
378+
(AccessType::WriteOnly, EmitOption::PCData) => (0b1111, false),
379+
380+
(AccessType::ReadWrite, EmitOption::Data) => (0b0010, false),
381+
(AccessType::ReadWrite, EmitOption::Address) => (0b0001, true),
382+
(AccessType::ReadWrite, EmitOption::AddressData) => (0b0010, true),
383+
(AccessType::ReadWrite, EmitOption::PCData) => (0b0011, false),
384+
385+
(AccessType::ReadWrite, EmitOption::PC) => (0b0001, false),
386+
(_, EmitOption::PC) => return Err(DWTError::InvalidFunction),
387+
};
371388

372389
self.function.modify(|mut r| {
390+
r.set_function(function);
391+
r.set_emitrange(emit_range);
392+
373393
// don't compare data value
374394
r.set_datavmatch(false);
375395

376396
// don't compare cycle counter value
377397
// NOTE: only needed for comparator 0, but is SBZP.
378398
r.set_cycmatch(false);
379399

380-
// FUNCTION, EMITRANGE
381-
// See Table C1-14
382-
let (function, emit_range) = match (&settings.access_type, &settings.emit) {
383-
(AccessType::ReadOnly, EmitOption::Data) => (0b1100, false),
384-
(AccessType::ReadOnly, EmitOption::Address) => (0b1100, true),
385-
(AccessType::ReadOnly, EmitOption::AddressData) => (0b1110, true),
386-
(AccessType::ReadOnly, EmitOption::PCData) => (0b1110, false),
387-
388-
(AccessType::WriteOnly, EmitOption::Data) => (0b1101, false),
389-
(AccessType::WriteOnly, EmitOption::Address) => (0b1101, true),
390-
(AccessType::WriteOnly, EmitOption::AddressData) => (0b1111, true),
391-
(AccessType::WriteOnly, EmitOption::PCData) => (0b1111, false),
392-
393-
(AccessType::ReadWrite, EmitOption::Data) => (0b0010, false),
394-
(AccessType::ReadWrite, EmitOption::Address) => (0b0001, true),
395-
(AccessType::ReadWrite, EmitOption::AddressData) => (0b0010, true),
396-
(AccessType::ReadWrite, EmitOption::PCData) => (0b0011, false),
397-
398-
(AccessType::ReadWrite, EmitOption::PC) => (0b0001, false),
399-
(_, EmitOption::PC) => unreachable!(), // cannot return Err here; handled above
400-
};
401-
r.set_function(function);
402-
r.set_emitrange(emit_range);
403-
404400
r
405401
});
406402

0 commit comments

Comments
 (0)