Examples¶
Warning
These examples assume that you have already installed pumpkin-supmcu with pip3 install pumpkin-supmcu
on python 3.6 or above.
Note
Just want the code? See this folder
Retrieving Telemetry Data¶
This example will walk through initializing a I2CMaster
and using it to
get the current values of all the telemetry of each module connected to the I2C
bus.
from pumpkin_supmcu.i2c import I2CDriverMaster, I2CLinuxMaster
from pumpkin_supmcu.supmcu import request_module_definition, get_values
PORT = 'COM4'
i2c_master = I2CDriverMaster(PORT)
This code imports everything that is needed from pumpkin-supmcu and initializes
an I2C master. PORT
’s value depends on what kind of I2C master is being
initialized. For the I2CDriverMaster
, PORT
is what serial port
the I2CDriver is, and can be a COM port on windows or a /dev/ttyUSB* filename on
linux. For the I2CLinuxMaster
, PORT
is the number of the linux
/dev/i2c-* interface. For instance, if the module was connected to /dev/i2c-2
then PORT
should be set to 2. Different I2C masters can be used
interchangeably, after their initialization.
addresses = i2c_master.get_bus_devices()
module_definitions = []
for address in addresses:
module_definitions.append((address, request_module_definition(i2c_master, address)))
This block gets the addresses of all active devices on the I2C bus, and then
uses request_module_definition
to save a SupMCUModuleDefinition
for each device.
for addr, mod_def in module_definitions:
for idx, telem in mod_def.supmcu_telemetry.items():
if telem.simulatable:
items = get_values(i2c_master, addr, mod_def.cmd_name, idx, telem.format)
for item in items:
print(item.string_value, end=' ')
print()
else:
print("Not simulatable, might be a garbage value")
This code iterates through each telemetry object in each module definition and
uses get_values
to print its values if it’s simulatable. When the
telemetry isn’t simulatable, get_values
will return garbage data on
QSMs or STMs.