Source code for SEEL.commands_proto
import math,sys,time, struct
# allows to pack numeric values into byte strings
Byte = struct.Struct("B") # size 1
ShortInt = struct.Struct("H") # size 2
Integer= struct.Struct("I") # size 4
ACKNOWLEDGE = Byte.pack(254)
MAX_SAMPLES = 10000
DATA_SPLITTING = 200
#/*----flash memory----*/
FLASH =Byte.pack(1)
READ_FLASH = Byte.pack(1)
WRITE_FLASH = Byte.pack(2)
WRITE_BULK_FLASH = Byte.pack(3)
READ_BULK_FLASH = Byte.pack(4)
#/*-----ADC------*/
ADC = Byte.pack(2)
CAPTURE_ONE = Byte.pack(1)
CAPTURE_TWO = Byte.pack(2)
CAPTURE_DMASPEED = Byte.pack(3)
CAPTURE_FOUR = Byte.pack(4)
CONFIGURE_TRIGGER = Byte.pack(5)
GET_CAPTURE_STATUS = Byte.pack(6)
GET_CAPTURE_CHANNEL = Byte.pack(7)
SET_PGA_GAIN = Byte.pack(8)
GET_VOLTAGE = Byte.pack(9)
GET_VOLTAGE_SUMMED = Byte.pack(10)
START_ADC_STREAMING = Byte.pack(11)
SELECT_PGA_CHANNEL = Byte.pack(12)
CAPTURE_12BIT = Byte.pack(13)
CAPTURE_MULTIPLE = Byte.pack(14)
SET_HI_CAPTURE = Byte.pack(15)
SET_LO_CAPTURE = Byte.pack(16)
MULTIPOINT_CAPACITANCE= Byte.pack(20)
SET_CAP = Byte.pack(21)
PULSE_TRAIN = Byte.pack(22)
#/*-----SPI--------*/
SPI_HEADER = Byte.pack(3)
START_SPI = Byte.pack(1)
SEND_SPI8 = Byte.pack(2)
SEND_SPI16 = Byte.pack(3)
STOP_SPI = Byte.pack(4)
SET_SPI_PARAMETERS = Byte.pack(5)
SEND_SPI8_BURST = Byte.pack(6)
SEND_SPI16_BURST = Byte.pack(7)
#/*------I2C-------*/
I2C_HEADER = Byte.pack(4)
I2C_START = Byte.pack(1)
I2C_SEND = Byte.pack(2)
I2C_STOP = Byte.pack(3)
I2C_RESTART = Byte.pack(4)
I2C_READ_END = Byte.pack(5)
I2C_READ_MORE = Byte.pack(6)
I2C_WAIT = Byte.pack(7)
I2C_SEND_BURST = Byte.pack(8)
I2C_CONFIG = Byte.pack(9)
I2C_STATUS = Byte.pack(10)
I2C_READ_BULK = Byte.pack(11)
I2C_WRITE_BULK = Byte.pack(12)
I2C_ENABLE_SMBUS = Byte.pack(13)
I2C_INIT = Byte.pack(14)
I2C_PULLDOWN_SCL = Byte.pack(15)
I2C_DISABLE_SMBUS= Byte.pack(16)
I2C_START_SCOPE = Byte.pack(17)
#/*------UART2--------*/
UART_2 = Byte.pack(5)
SEND_BYTE = Byte.pack(1)
SEND_INT = Byte.pack(2)
SEND_ADDRESS = Byte.pack(3)
SET_BAUD = Byte.pack(4)
SET_MODE = Byte.pack(5)
READ_BYTE = Byte.pack(6)
READ_INT = Byte.pack(7)
READ_UART2_STATUS = Byte.pack(8)
#/*-----------DAC--------*/
DAC = Byte.pack(6)
SET_DAC = Byte.pack(1)
SET_CALIBRATED_DAC = Byte.pack(2)
#/*--------WAVEGEN-----*/
WAVEGEN = Byte.pack(7)
SET_WG = Byte.pack(1)
SET_SQR1 = Byte.pack(3)
SET_SQR2 = Byte.pack(4)
SET_SQRS = Byte.pack(5)
TUNE_SINE_OSCILLATOR = Byte.pack(6)
SQR4 = Byte.pack(7)
MAP_REFERENCE = Byte.pack(8)
SET_BOTH_WG = Byte.pack(9)
SET_WAVEFORM_TYPE = Byte.pack(10)
SELECT_FREQ_REGISTER = Byte.pack(11)
DELAY_GENERATOR = Byte.pack(12)
SET_SINE1 = Byte.pack(13)
SET_SINE2 = Byte.pack(14)
LOAD_WAVEFORM1 = Byte.pack(15)
LOAD_WAVEFORM2 = Byte.pack(16)
SQR1_PATTERN = Byte.pack(17)
#/*-----digital outputs----*/
DOUT = Byte.pack(8)
SET_STATE = Byte.pack(1)
#/*-----digital inputs-----*/
DIN = Byte.pack(9)
GET_STATE = Byte.pack(1)
GET_STATES = Byte.pack(2)
ID1 = Byte.pack(0)
ID2 = Byte.pack(1)
ID3 = Byte.pack(2)
ID4 = Byte.pack(3)
LMETER = Byte.pack(4)
#/*------TIMING FUNCTIONS-----*/
TIMING = Byte.pack(10)
GET_TIMING = Byte.pack(1)
GET_PULSE_TIME = Byte.pack(2)
GET_DUTY_CYCLE = Byte.pack(3)
START_ONE_CHAN_LA = Byte.pack(4)
START_TWO_CHAN_LA = Byte.pack(5)
START_FOUR_CHAN_LA = Byte.pack(6)
FETCH_DMA_DATA = Byte.pack(7)
FETCH_INT_DMA_DATA = Byte.pack(8)
FETCH_LONG_DMA_DATA = Byte.pack(9)
GET_LA_PROGRESS = Byte.pack(10)
GET_INITIAL_DIGITAL_STATES = Byte.pack(11)
TIMING_MEASUREMENTS = Byte.pack(12)
INTERVAL_MEASUREMENTS = Byte.pack(13)
CONFIGURE_COMPARATOR = Byte.pack(14)
START_ALTERNATE_ONE_CHAN_LA = Byte.pack(15)
START_THREE_CHAN_LA = Byte.pack(16)
STOP_LA = Byte.pack(17)
#/*--------MISCELLANEOUS------*/
COMMON = Byte.pack(11)
GET_CTMU_VOLTAGE = Byte.pack(1)
GET_CAPACITANCE = Byte.pack(2)
GET_FREQUENCY = Byte.pack(3)
GET_INDUCTANCE = Byte.pack(4)
GET_VERSION = Byte.pack(5)
RETRIEVE_BUFFER = Byte.pack(8)
GET_HIGH_FREQUENCY = Byte.pack(9)
CLEAR_BUFFER = Byte.pack(10)
SET_RGB1 = Byte.pack(11)
READ_PROGRAM_ADDRESS = Byte.pack(12)
WRITE_PROGRAM_ADDRESS = Byte.pack(13)
READ_DATA_ADDRESS = Byte.pack(14)
WRITE_DATA_ADDRESS = Byte.pack(15)
GET_CAP_RANGE = Byte.pack(16)
SET_RGB2 = Byte.pack(17)
READ_LOG = Byte.pack(18)
RESTORE_STANDALONE = Byte.pack(19)
GET_ALTERNATE_HIGH_FREQUENCY = Byte.pack(20)
SET_RGB3 = Byte.pack(22)
START_CTMU = Byte.pack(23)
STOP_CTMU = Byte.pack(24)
START_COUNTING = Byte.pack(25)
FETCH_COUNT = Byte.pack(26)
FILL_BUFFER = Byte.pack(27)
#/*---------- BAUDRATE for main comm channel----*/
SETBAUD = Byte.pack(12)
BAUD9600 = Byte.pack(1)
BAUD14400 = Byte.pack(2)
BAUD19200 = Byte.pack(3)
BAUD28800 = Byte.pack(4)
BAUD38400 = Byte.pack(5)
BAUD57600 = Byte.pack(6)
BAUD115200 = Byte.pack(7)
BAUD230400 = Byte.pack(8)
BAUD1000000 = Byte.pack(9)
#/*-----------NRFL01 radio module----------*/
NRFL01 = Byte.pack(13)
NRF_SETUP = Byte.pack(1)
NRF_RXMODE = Byte.pack(2)
NRF_TXMODE = Byte.pack(3)
NRF_POWER_DOWN = Byte.pack(4)
NRF_RXCHAR = Byte.pack(5)
NRF_TXCHAR = Byte.pack(6)
NRF_HASDATA = Byte.pack(7)
NRF_FLUSH = Byte.pack(8)
NRF_WRITEREG = Byte.pack(9)
NRF_READREG = Byte.pack(10)
NRF_GETSTATUS = Byte.pack(11)
NRF_WRITECOMMAND = Byte.pack(12)
NRF_WRITEPAYLOAD = Byte.pack(13)
NRF_READPAYLOAD = Byte.pack(14)
NRF_WRITEADDRESS = Byte.pack(15)
NRF_TRANSACTION = Byte.pack(16)
NRF_START_TOKEN_MANAGER = Byte.pack(17)
NRF_STOP_TOKEN_MANAGER = Byte.pack(18)
NRF_TOTAL_TOKENS = Byte.pack(19)
NRF_REPORTS = Byte.pack(20)
NRF_WRITE_REPORT = Byte.pack(21)
NRF_DELETE_REPORT_ROW = Byte.pack(22)
NRF_WRITEADDRESSES = Byte.pack(23)
#---------Non standard IO protocols--------
NONSTANDARD_IO = Byte.pack(14)
HX711_HEADER = Byte.pack(1)
HCSR04_HEADER = Byte.pack(2)
AM2302_HEADER = Byte.pack(3)
TCD1304_HEADER = Byte.pack(4)
STEPPER_MOTOR = Byte.pack(5)
#--------COMMUNICATION PASSTHROUGHS--------
#Data sent to the device is directly routed to output ports such as (SCL, SDA for UART)
PASSTHROUGHS = Byte.pack(15)
PASS_UART = Byte.pack(1)
#/*--------STOP STREAMING------*/
STOP_STREAMING = Byte.pack(253)
#/*------INPUT CAPTURE---------*/
#capture modes
EVERY_SIXTEENTH_RISING_EDGE = Byte.pack(0b101)
EVERY_FOURTH_RISING_EDGE = Byte.pack(0b100)
EVERY_RISING_EDGE = Byte.pack(0b011)
EVERY_FALLING_EDGE = Byte.pack(0b010)
EVERY_EDGE = Byte.pack(0b001)
DISABLED = Byte.pack(0b000)
#/*--------Chip selects-----------*/
CSA1 = Byte.pack(1)
CSA2 = Byte.pack(2)
CSA3 = Byte.pack(3)
CSA4 = Byte.pack(4)
CSA5 = Byte.pack(5)
CS1 = Byte.pack(6)
CS2 = Byte.pack(7)
#resolutions
TEN_BIT = Byte.pack(10)
TWELVE_BIT = Byte.pack(12)
[docs]def applySIPrefix(value, unit='',precision=2 ):
neg = False
if value < 0.:
value *= -1; neg = True
elif value == 0.: return '0 ' # mantissa & exponnt both 0
exponent = int(math.log10(value))
if exponent > 0:
exponent = (exponent // 3) * 3
else:
exponent = (-1*exponent + 3) // 3 * (-3)
value *= (10 ** (-exponent) )
if value >= 1000.:
value /= 1000.0
exponent += 3
if neg:
value *= -1
exponent = int(exponent)
PREFIXES = "yzafpnum kMGTPEZY"
prefix_levels = (len(PREFIXES) - 1) // 2
si_level = exponent // 3
if abs(si_level) > prefix_levels:
raise ValueError("Exponent out range of available prefixes.")
return '%.*f %s%s' % (precision, value,PREFIXES[si_level + prefix_levels],unit)
'''
def reverse_bits(x):
return int('{:08b}'.format(x)[::-1], 2)
def InttoString(val):
return ShortInt.pack(int(val))
def StringtoInt(string):
return ShortInt.unpack(string)[0]
def StringtoLong(string):
return Integer.unpack(string)[0]
def getval12(val):
return val*3.3/4095
def getval10(val):
return val*3.3/1023
def getL(F,C):
return 1.0/(C*4*math.pi*math.pi*F*F)
def getF(L,C):
return 1.0/(2*math.pi*math.sqrt(L*C))
def getLx(f1,f2,f3,Ccal):
a=(f1/f3)**2
b=(f1/f2)**2
c=(2*math.pi*f1)**2
return (a-1)*(b-1)/(Ccal*c)
'''