aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/sca/scope/chipwhisperer.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyecsca/sca/scope/chipwhisperer.py')
-rw-r--r--pyecsca/sca/scope/chipwhisperer.py31
1 files changed, 20 insertions, 11 deletions
diff --git a/pyecsca/sca/scope/chipwhisperer.py b/pyecsca/sca/scope/chipwhisperer.py
index 60fe7cf..8f5590d 100644
--- a/pyecsca/sca/scope/chipwhisperer.py
+++ b/pyecsca/sca/scope/chipwhisperer.py
@@ -1,47 +1,56 @@
-from typing import Optional, Tuple, Sequence
+from typing import Optional, Tuple, Sequence, Set
import numpy as np
-from chipwhisperer.capture.scopes.base import ScopeTemplate
+from chipwhisperer.capture.scopes.OpenADC import OpenADC
from public import public
from .base import Scope
+
@public
-class ChipWhispererScope(Scope):
+class ChipWhispererScope(Scope): # pragma: no cover
"""A ChipWhisperer based scope."""
- def __init__(self, scope: ScopeTemplate):
+ def __init__(self, scope: OpenADC):
self.scope = scope
+ self.triggers: Set[str] = set()
def open(self) -> None:
self.scope.con()
@property
def channels(self) -> Sequence[str]:
- return ["tio1", "tio2", "tio3", "tio4"]
+ return []
def setup_frequency(self, frequency: int, samples: int) -> Tuple[int, int]:
- pass
+ self.scope.clock.clkgen_freq = frequency
+ self.scope.samples = samples
+ return self.scope.clock.freq_ctr, self.scope.samples
def setup_channel(self, channel: str, coupling: str, range: float, enable: bool) -> None:
pass
def setup_trigger(self, channel: str, threshold: float, direction: str, delay: int,
timeout: int, enable: bool) -> None:
- pass
+ if enable:
+ self.triggers.add(channel)
+ elif channel in self.triggers:
+ self.triggers.remove(channel)
+ self.scope.adc.basic_mode = direction
+ self.scope.trigger.triggers = " OR ".join(self.triggers)
def setup_capture(self, channel: str, enable: bool) -> None:
pass
def arm(self) -> None:
- pass
+ self.scope.arm()
def capture(self, channel: str, timeout: Optional[int] = None) -> Optional[np.ndarray]:
- pass
+ self.scope.capture()
+ return self.scope.get_last_trace()
def stop(self) -> None:
pass
def close(self) -> None:
- pass
-
+ self.scope.dis()