# This file was auto-generated. Do not modify.
from ._bs_c_cffi import ffi
from . import _BS_C #imported from __init__
from .Entity_Entity import *
from .result import Result
from .ffi_utils import data_to_bytearray, bytes_to_string, handle_sign, handle_sign_value, get_ffi_buffer
[docs]class Analog(Entity):
'''
Interface to analog entities on BrainStem modules.
Analog entities may be configured as a input or output depending on hardware capabilities.
Some modules are capable of providing actual voltage readings, while other simply return
the raw analog-to-digital converter (ADC) output value.
The resolution of the voltage or number of useful bits is also hardware dependent.
'''
CONFIGURATION_INPUT = 0
CONFIGURATION_OUTPUT = 1
HERTZ_MINIMUM = 7000
HERTZ_MAXIMUM = 200000
BULK_CAPTURE_IDLE = 0
BULK_CAPTURE_PENDING = 1
BULK_CAPTURE_FINISHED = 2
BULK_CAPTURE_ERROR = 3
def __init__(self, module, index):
super(Analog, self).__init__(module, _BS_C.cmdANALOG, index)
[docs] def getValue(self):
'''
Get the raw ADC output value in bits.
Note
----
Not all modules are provide 16 useful bits; this value's least significant bits are
zero-padded to 16 bits.
Refer to the module's datasheet to determine analog bit depth and reference voltage.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned short
16 bit analog reading with 0 corresponding to the negative analog voltage
reference and 0xFFFF corresponding to the positive analog voltage reference.
'''
result = ffi.new("struct Result*")
_BS_C.analog_getValue(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 16, False)
[docs] def getVoltage(self):
'''
Get the scaled micro volt value with reference to ground.
Note
----
Not all modules provide 32 bits of accuracy.
Refer to the module's datasheet to determine the analog bit depth and reference
voltage.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : int
32 bit signed integer (in microvolts) based on the board's ground and
reference voltages.
'''
result = ffi.new("struct Result*")
_BS_C.analog_getVoltage(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 32, True)
[docs] def getRange(self):
'''
Get the analog input range.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned char
8 bit value corresponding to a discrete range option
'''
result = ffi.new("struct Result*")
_BS_C.analog_getRange(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 8, False)
[docs] def getEnable(self):
'''
Get the analog output enable status.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : bool
0 if disabled 1 if enabled.
'''
result = ffi.new("struct Result*")
_BS_C.analog_getEnable(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 8, False)
[docs] def setValue(self, value):
'''
Set the value of an analog output (DAC) in bits.
Parameters
----------
value : unsigned short
16 bit analog set point with 0 corresponding to the negative analog voltage reference
and 0xFFFF corresponding to the positive analog voltage reference.
Note
----
Not all modules are provide 16 useful bits; the least significant bits are discarded.
E.g. for a 10 bit DAC, 0xFFC0 to 0x0040 is the useful range.
Refer to the module's datasheet to determine analog bit depth and reference voltage.
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setValue(self._module._id_pointer, result, self._index, value)
return result.error
[docs] def setVoltage(self, microvolts):
'''
Set the voltage level of an analog output (DAC) in microvolts.
Parameters
----------
microvolts : int
32 bit signed integer (in microvolts) based on the board's ground and reference
voltages.
Note
----
Voltage range is dependent on the specific DAC channel range.
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setVoltage(self._module._id_pointer, result, self._index, microvolts)
return result.error
[docs] def setRange(self, range):
'''
Set the analog input range.
Parameters
----------
range : unsigned char
8 bit value corresponding to a discrete range option
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setRange(self._module._id_pointer, result, self._index, range)
return result.error
[docs] def setEnable(self, enable):
'''
Set the analog output enable state.
Parameters
----------
enable : bool
set 1 to enable or 0 to disable.
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setEnable(self._module._id_pointer, result, self._index, enable)
return result.error
[docs] def setConfiguration(self, configuration):
'''
Set the analog configuration.
Parameters
----------
configuration : unsigned char
bitAnalogConfigurationOutput configures the analog entity as an output.
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setConfiguration(self._module._id_pointer, result, self._index, configuration)
return result.error
[docs] def getConfiguration(self):
'''
Get the analog configuration.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned char
Current configuration of the analog entity.
'''
result = ffi.new("struct Result*")
_BS_C.analog_getConfiguration(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 8, False)
[docs] def setBulkCaptureSampleRate(self, value):
'''
Set the sample rate for this analog when bulk capturing.
Parameters
----------
value : unsigned int
sample rate in samples per second (Hertz).
- Minimum rate: 7,000 Hz
- Maximum rate: 200,000 Hz
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setBulkCaptureSampleRate(self._module._id_pointer, result, self._index, value)
return result.error
[docs] def getBulkCaptureSampleRate(self):
'''
Get the current sample rate setting for this analog when bulk capturing.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned int
upon success filled with current sample rate in samples per second (Hertz).
'''
result = ffi.new("struct Result*")
_BS_C.analog_getBulkCaptureSampleRate(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 32, False)
[docs] def setBulkCaptureNumberOfSamples(self, value):
'''
Set the number of samples to capture for this analog when bulk capturing.
Parameters
----------
value : unsigned int
number of samples.
- Minimum # of Samples: 0
- Maximum # of Samples: (BRAINSTEM_RAM_SLOT_SIZE / 2) = (3FFF / 2) = 1FFF = 8191
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_setBulkCaptureNumberOfSamples(self._module._id_pointer, result, self._index, value)
return result.error
[docs] def getBulkCaptureNumberOfSamples(self):
'''
Get the current number of samples setting for this analog when bulk capturing.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned int
number of samples.
'''
result = ffi.new("struct Result*")
_BS_C.analog_getBulkCaptureNumberOfSamples(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 32, False)
[docs] def initiateBulkCapture(self):
'''
Initiate a BulkCapture on this analog.
Captured measurements are stored in the module's RAM store (RAM_STORE) slot 0.
Data is stored in a contiguous byte array with each sample stored in two consecutive
bytes, LSB first.
Note
----
When the bulk capture is complete getBulkCaptureState() will return either
bulkCaptureFinished or bulkCaptureError.
Returns
-------
unsigned byte
An error result from the list of defined error codes in brainstem.result.Result
'''
result = ffi.new("struct Result*")
_BS_C.analog_initiateBulkCapture(self._module._id_pointer, result, self._index)
return result.error
[docs] def getBulkCaptureState(self):
'''
Get the current bulk capture state for this analog.
Returns
-------
brainstem.result.Result
Object containing error code and returned value on success.
error : unsigned byte
An error result from the list of defined error codes
value : unsigned char
the state of bulk capture.
- Idle: bulkCaptureIdle = 0
- Pending: bulkCapturePending = 1
- Finished: bulkCaptureFinished = 2
- Error: bulkCaptureError = 3
'''
result = ffi.new("struct Result*")
_BS_C.analog_getBulkCaptureState(self._module._id_pointer, result, self._index)
return handle_sign(Result(result.error, result.value), 8, False)