ENLIGHTEN
Cross-platform desktop GUI for Wasatch Photonics spectrometers
Loading...
Searching...
No Matches
ble-util.Fixture Class Reference

Note this script is currently coded to ENG-0120 BLE API rev 7. More...

Public Member Functions

 __init__ (self)
 Lifecycle.
 
 acquire_notification (self, sender, data)
 
 apply_startup_settings (self)
 Acquisition Parameters.
 
 battery_notification (self, sender, data)
 
 debug (self, msg)
 Utility.
 
 decode (self, data)
 
 detection_callback (self, device, advertisement_data)
 discovered device 13874014-5EDA-5E6B-220E-605D00FE86DF: WP-SiG:WP-01791, advertisement_data AdvertisementData(local_name='WP-SiG:WP-01791', service_uuids=['0000ff00-0000-1000-8000-00805f9b34fb', 'd1a7ff00-af78-4449-a34f-4da1afaf51bc'], tx_power=0, rssi=-67)
 
 disconnected_callback (self)
 
 display_eeprom (self)
 
 dump (self, device, advertisement_data)
 
 exercise_accessors (self)
 Accessors.
 
 exercise_generic_accessors (self)
 
 expand_path (self, name, data)
 
 generate_wavecal (self)
 
 get_battery_state (self)
 Monitor.
 
 get_generic_value (self, name)
 Generics.
 
 get_laser_state (self)
 
 get_name_by_uuid (self, uuid)
 
 get_spectrum (self)
 
 get_status (self)
 
 get_uuid_by_name (self, name)
 
 init_ramps (self)
 Ramps.
 
 is_xs (self, device, advertisement_data=None)
 
 laser_state_notification (self, sender, data)
 
 load_characteristics (self)
 
 load_device_information (self)
 
 monitor (self)
 
 parse_acquire_status (self, status, payload)
 
 parse_args (self)
 
 parse_eeprom_pages (self)
 
 parse_laser_state (self, data)
 
 perform_collection (self)
 Spectra.
 
 read_char (self, name, min_len=None, quiet=False)
 
 read_eeprom (self)
 EEPROM.
 
 read_eeprom_pages (self)
 tweaked version of get_generic_value
 
 run (self)
 
 search_for_devices (self)
 BLE Connection.
 
 set_gain_db (self, db)
 
 set_integration_time_ms (self, ms)
 
 set_laser_enable (self, flag)
 Laser Control.
 
 set_laser_tec_mode (self, str mode)
 
 set_laser_warning_delay_sec (self, sec)
 
 set_power_watchdog_sec (self, sec)
 Timeouts.
 
 set_scans_to_average (self, n)
 
 set_start_line (self, n)
 
 set_stop_line (self, n)
 
 set_vertical_roi (self, pair)
 
 stop_notifications (self)
 
 stop_scanning (self)
 
 sync_laser_state (self)
 
 unpack_eeprom_field (self, address, data_type, field)
 
 update_ramps (self, i)
 
 wrap_uuid (self, code)
 
 write_char (self, name, data, quiet=False, callback=None, ack_name=None)
 

Public Attributes

 acquire_notification = "ACQUIRE":
 
 args = parser.parse_args()
 
 battery_notification = "BATTERY_STATE":
 
dict char_by_name = {}
 
 client = None
 
dict code_by_name
 
dict device_info = {}
 
dict eeprom = None
 
 eeprom_field_loc = EEPROMFields.get_eeprom_fields()
 
 excitation = self.eeprom["excitation_nm_float"]
 
 generics = Generics()
 
int integration_time_ms = 0
 
bool keep_scanning = True
 
bool laser_enable = False
 
 laser_state_notification = "LASER_STATE":
 
int laser_warning_delay_sec = 3
 
int last_integration_time_ms = 2000
 
 last_spectrum_received = None
 
dict name_by_uuid = { self.wrap_uuid(code): name for name, code in self.code_by_name.items() }
 
 notifications = set()
 
list pages = []
 
 pixels
 
int pixels_read = self.pixels:
 
list ramped_avg = None
 
list ramped_gain = None
 
list ramped_integ = None
 
list ramped_roi = None
 
bool ramping = False
 
int scans_to_average = 1
 
list spectrum = [0] * self.pixels
 
 start_time = datetime.now()
 
 stop_scanning_event = asyncio.Event()
 
list wavelengths = []
 
list wavenumbers
 

Static Public Attributes

dict ACQUIRE_STATUS_CODES
 
str DISCOVERY_SERVICE = "0000ff00-0000-1000-8000-00805f9b34fb"
 
list LASER_TEC_MODES = ['OFF', 'ON', 'AUTO', 'AUTO_ON']
 
str VERSION = "1.0.5"
 
str WASATCH_SERVICE = "D1A7FF00-AF78-4449-A34F-4DA1AFAF51BC"
 

Detailed Description

Note this script is currently coded to ENG-0120 BLE API rev 7.

Todo
It appears notifications don't work on Windows?!?

Constructor & Destructor Documentation

◆ __init__()

ble-util.Fixture.__init__ ( self)

Lifecycle.

Member Function Documentation

◆ acquire_notification()

ble-util.Fixture.acquire_notification ( self,
sender,
data )

◆ apply_startup_settings()

ble-util.Fixture.apply_startup_settings ( self)

Acquisition Parameters.

◆ battery_notification()

ble-util.Fixture.battery_notification ( self,
sender,
data )

◆ debug()

ble-util.Fixture.debug ( self,
msg )

Utility.

◆ decode()

ble-util.Fixture.decode ( self,
data )

◆ detection_callback()

ble-util.Fixture.detection_callback ( self,
device,
advertisement_data )

discovered device 13874014-5EDA-5E6B-220E-605D00FE86DF: WP-SiG:WP-01791, advertisement_data AdvertisementData(local_name='WP-SiG:WP-01791', service_uuids=['0000ff00-0000-1000-8000-00805f9b34fb', 'd1a7ff00-af78-4449-a34f-4da1afaf51bc'], tx_power=0, rssi=-67)

Parameters
deviceis a bleak.backends.device.BLEDevice

◆ disconnected_callback()

ble-util.Fixture.disconnected_callback ( self)

◆ display_eeprom()

ble-util.Fixture.display_eeprom ( self)

◆ dump()

ble-util.Fixture.dump ( self,
device,
advertisement_data )

◆ exercise_accessors()

ble-util.Fixture.exercise_accessors ( self)

Accessors.

◆ exercise_generic_accessors()

ble-util.Fixture.exercise_generic_accessors ( self)

◆ expand_path()

ble-util.Fixture.expand_path ( self,
name,
data )

◆ generate_wavecal()

ble-util.Fixture.generate_wavecal ( self)

◆ get_battery_state()

ble-util.Fixture.get_battery_state ( self)

Monitor.

These will be pushed automatically 1/min from Central, if-and-only-if no acquisition is occuring at the time of the scheduled event. However, at least some(?) clients (Bleak on MacOS) don't seem to receive the notifications until the next explicit read/write of a Characteristic (any Chararacteristic? seemingly observed with ACQUIRE_CMD).

◆ get_generic_value()

ble-util.Fixture.get_generic_value ( self,
name )

◆ get_laser_state()

ble-util.Fixture.get_laser_state ( self)

◆ get_name_by_uuid()

ble-util.Fixture.get_name_by_uuid ( self,
uuid )

◆ get_spectrum()

ble-util.Fixture.get_spectrum ( self)

◆ get_status()

ble-util.Fixture.get_status ( self)

◆ get_uuid_by_name()

ble-util.Fixture.get_uuid_by_name ( self,
name )

◆ init_ramps()

ble-util.Fixture.init_ramps ( self)

Ramps.

◆ is_xs()

ble-util.Fixture.is_xs ( self,
device,
advertisement_data = None )

◆ laser_state_notification()

ble-util.Fixture.laser_state_notification ( self,
sender,
data )

◆ load_characteristics()

ble-util.Fixture.load_characteristics ( self)

◆ load_device_information()

ble-util.Fixture.load_device_information ( self)

◆ monitor()

ble-util.Fixture.monitor ( self)

◆ parse_acquire_status()

ble-util.Fixture.parse_acquire_status ( self,
status,
payload )

◆ parse_args()

ble-util.Fixture.parse_args ( self)

◆ parse_eeprom_pages()

ble-util.Fixture.parse_eeprom_pages ( self)

◆ parse_laser_state()

ble-util.Fixture.parse_laser_state ( self,
data )

◆ perform_collection()

ble-util.Fixture.perform_collection ( self)

Spectra.

◆ read_char()

ble-util.Fixture.read_char ( self,
name,
min_len = None,
quiet = False )

◆ read_eeprom()

ble-util.Fixture.read_eeprom ( self)

EEPROM.

◆ read_eeprom_pages()

ble-util.Fixture.read_eeprom_pages ( self)

tweaked version of get_generic_value

◆ run()

ble-util.Fixture.run ( self)

◆ search_for_devices()

ble-util.Fixture.search_for_devices ( self)

BLE Connection.

◆ set_gain_db()

ble-util.Fixture.set_gain_db ( self,
db )

◆ set_integration_time_ms()

ble-util.Fixture.set_integration_time_ms ( self,
ms )

◆ set_laser_enable()

ble-util.Fixture.set_laser_enable ( self,
flag )

Laser Control.

Bug
mode and type should be settable to 0xff (same with watchdog)

◆ set_laser_tec_mode()

ble-util.Fixture.set_laser_tec_mode ( self,
str mode )

◆ set_laser_warning_delay_sec()

ble-util.Fixture.set_laser_warning_delay_sec ( self,
sec )

◆ set_power_watchdog_sec()

ble-util.Fixture.set_power_watchdog_sec ( self,
sec )

Timeouts.

◆ set_scans_to_average()

ble-util.Fixture.set_scans_to_average ( self,
n )

◆ set_start_line()

ble-util.Fixture.set_start_line ( self,
n )

◆ set_stop_line()

ble-util.Fixture.set_stop_line ( self,
n )

◆ set_vertical_roi()

ble-util.Fixture.set_vertical_roi ( self,
pair )

◆ stop_notifications()

ble-util.Fixture.stop_notifications ( self)

◆ stop_scanning()

ble-util.Fixture.stop_scanning ( self)

◆ sync_laser_state()

ble-util.Fixture.sync_laser_state ( self)

◆ unpack_eeprom_field()

ble-util.Fixture.unpack_eeprom_field ( self,
address,
data_type,
field )

◆ update_ramps()

ble-util.Fixture.update_ramps ( self,
i )

◆ wrap_uuid()

ble-util.Fixture.wrap_uuid ( self,
code )

◆ write_char()

ble-util.Fixture.write_char ( self,
name,
data,
quiet = False,
callback = None,
ack_name = None )

Member Data Documentation

◆ acquire_notification

ble-util.Fixture.acquire_notification = "ACQUIRE":

◆ ACQUIRE_STATUS_CODES

dict ble-util.Fixture.ACQUIRE_STATUS_CODES
static
Initial value:
= {
0: ("NAK", "No error, the spectrum just isn't ready yet"),
1: ("ERR_BATT_SOC_INFO_NOT_RCVD", "Can't read battery, and therefore can't take Auto-Dark or Auto-Raman spectra"),
2: ("ERR_BATT_SOC_TOO_LOW", "Battery is too low to take Auto-Dark or Auto-Raman spectra"),
3: ("ERR_LASER_DIS_FLR", "Failure disabling the laser"),
4: ("ERR_LASER_ENA_FLR", "Failure enabling the laser"),
5: ("ERR_IMG_SNSR_IN_BAD_STATE", "The sensor is not able to take spectra"),
6: ("ERR_IMG_SNSR_STATE_TRANS_FLR","The sensor failed to apply acquisition parameters"),
7: ("ERR_SPEC_ACQ_SIG_WAIT_TMO", "The sensor failed to take a spectrum (timeout exceeded)"),
32: ("AUTO_OPT_TARGET_RATIO", "Auto-Raman is in the process of optimizing acquisition parameters"),
33: ("TAKING_DARK", "taking spectra (no laser)"),
34: ("LASER_WARNING_DELAY", "paused during laser warning delay period"),
35: ("LASER_WARMUP", "paused during laser warmup period"),
36: ("TAKING_RAMAN", "taking spectra (laser enabled)"),
}

◆ args

ble-util.Fixture.args = parser.parse_args()

◆ battery_notification

ble-util.Fixture.battery_notification = "BATTERY_STATE":

◆ char_by_name

dict ble-util.Fixture.char_by_name = {}

◆ client

ble-util.Fixture.client = None

◆ code_by_name

dict ble-util.Fixture.code_by_name
Initial value:
= { "LASER_STATE": 0xff03,
"ACQUIRE": 0xff04,
"BATTERY_STATE": 0xff09,
"GENERIC": 0xff0a }

◆ device_info

dict ble-util.Fixture.device_info = {}

◆ DISCOVERY_SERVICE

str ble-util.Fixture.DISCOVERY_SERVICE = "0000ff00-0000-1000-8000-00805f9b34fb"
static

◆ eeprom

dict ble-util.Fixture.eeprom = None

◆ eeprom_field_loc

ble-util.Fixture.eeprom_field_loc = EEPROMFields.get_eeprom_fields()

◆ excitation

ble-util.Fixture.excitation = self.eeprom["excitation_nm_float"]

◆ generics

ble-util.Fixture.generics = Generics()

◆ integration_time_ms

int ble-util.Fixture.integration_time_ms = 0

◆ keep_scanning

bool ble-util.Fixture.keep_scanning = True

◆ laser_enable

bool ble-util.Fixture.laser_enable = False

◆ laser_state_notification

ble-util.Fixture.laser_state_notification = "LASER_STATE":

◆ LASER_TEC_MODES

list ble-util.Fixture.LASER_TEC_MODES = ['OFF', 'ON', 'AUTO', 'AUTO_ON']
static

◆ laser_warning_delay_sec

int ble-util.Fixture.laser_warning_delay_sec = 3

◆ last_integration_time_ms

int ble-util.Fixture.last_integration_time_ms = 2000

◆ last_spectrum_received

ble-util.Fixture.last_spectrum_received = None

◆ name_by_uuid

dict ble-util.Fixture.name_by_uuid = { self.wrap_uuid(code): name for name, code in self.code_by_name.items() }

◆ notifications

ble-util.Fixture.notifications = set()

◆ pages

ble-util.Fixture.pages = []

◆ pixels

ble-util.Fixture.pixels

◆ pixels_read

int ble-util.Fixture.pixels_read = self.pixels:

◆ ramped_avg

ble-util.Fixture.ramped_avg = None

◆ ramped_gain

list ble-util.Fixture.ramped_gain = None

◆ ramped_integ

list ble-util.Fixture.ramped_integ = None

◆ ramped_roi

list ble-util.Fixture.ramped_roi = None

◆ ramping

bool ble-util.Fixture.ramping = False

◆ scans_to_average

int ble-util.Fixture.scans_to_average = 1

◆ spectrum

ble-util.Fixture.spectrum = [0] * self.pixels

◆ start_time

ble-util.Fixture.start_time = datetime.now()

◆ stop_scanning_event

ble-util.Fixture.stop_scanning_event = asyncio.Event()

◆ VERSION

str ble-util.Fixture.VERSION = "1.0.5"
static

◆ WASATCH_SERVICE

str ble-util.Fixture.WASATCH_SERVICE = "D1A7FF00-AF78-4449-A34F-4DA1AFAF51BC"
static

◆ wavelengths

list ble-util.Fixture.wavelengths = []

◆ wavenumbers

list ble-util.Fixture.wavenumbers

The documentation for this class was generated from the following file: