65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
# High Level Analyzer
|
|
# For more information and documentation, please go to https://support.saleae.com/extensions/high-level-analyzer-extensions
|
|
|
|
from saleae.analyzers import HighLevelAnalyzer, AnalyzerFrame, NumberSetting, StringSetting, ChoicesSetting
|
|
|
|
|
|
# High level analyzers must subclass the HighLevelAnalyzer class.
|
|
class Hla(HighLevelAnalyzer):
|
|
# List of settings that a user can set for this High Level Analyzer.
|
|
my_string_setting = StringSetting()
|
|
# my_number_setting = NumberSetting(min_value=0, max_value=100)
|
|
my_choices_setting = ChoicesSetting(choices=('A', 'B'))
|
|
|
|
# An optional list of types this analyzer produces, providing a way to customize the way frames are displayed in Logic 2.
|
|
result_types = {
|
|
'mytype': {
|
|
'format': 'Output type: {{type}}, Input type: {{data.input_type}}'
|
|
}
|
|
}
|
|
|
|
def __init__(self):
|
|
'''
|
|
Initialize HLA.
|
|
|
|
Settings can be accessed using the same name used above.
|
|
'''
|
|
|
|
print("Settings:", self.my_string_setting, self.my_choices_setting)
|
|
# self.my_number_setting, self.my_choices_setting)
|
|
|
|
def decode(self, frame: AnalyzerFrame):
|
|
'''
|
|
Process a frame from the input analyzer, and optionally return a single `AnalyzerFrame` or a list of `AnalyzerFrame`s.
|
|
|
|
The type and data values in `frame` will depend on the input analyzer.
|
|
'''
|
|
if frame.data['data'] >> 24 == 58:
|
|
command = "write command"
|
|
else:
|
|
command = "unknown"
|
|
# data = frame.data['data'] >> 24
|
|
blue = frame.data['data'] >> 16 & 0xFF
|
|
red = frame.data['data'] >> 8 & 0xFF
|
|
green = frame.data['data'] & 0xFF
|
|
|
|
# = frame.data['ledData']
|
|
# bytes[1] = frame.data['ledData'] >> 16 & 0xFF
|
|
# bytes[2] = frame.data['ledData'] >> 8 & 0xFF
|
|
# bytes[3] = frame.data['ledData'] & 0xFF
|
|
|
|
# print(frame)
|
|
# print("Hallo Welt")
|
|
# print(frame)
|
|
# print(frame)
|
|
# print(frame)
|
|
# print(frame.data[''])
|
|
# Return the data frame itself
|
|
return AnalyzerFrame('LED', frame.start_time, frame.end_time, {
|
|
'input_type': frame.type,
|
|
'command': command,
|
|
"blue": blue,
|
|
"red": red,
|
|
"green": green,
|
|
})
|