2017-03-28 00:07:44 +00:00
|
|
|
#
|
|
|
|
|
# Copyright 2017 Ettus Research (National Instruments)
|
|
|
|
|
#
|
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
|
# it under the terms of the GNU General Public License as published by
|
|
|
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
# (at your option) any later version.
|
|
|
|
|
#
|
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
|
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
# GNU General Public License for more details.
|
|
|
|
|
#
|
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
|
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
#
|
|
|
|
|
"""
|
|
|
|
|
test periph_manager implementation module
|
|
|
|
|
"""
|
2017-06-01 02:02:58 +00:00
|
|
|
|
2017-03-28 01:03:52 +00:00
|
|
|
from __future__ import print_function
|
2017-03-28 00:07:44 +00:00
|
|
|
import random
|
|
|
|
|
import string
|
2017-12-12 17:59:50 +00:00
|
|
|
from usrp_mpm.periph_manager import PeriphManagerBase
|
|
|
|
|
from usrp_mpm import dboard_manager
|
2017-03-28 00:07:44 +00:00
|
|
|
|
|
|
|
|
|
2017-03-28 01:03:52 +00:00
|
|
|
class test(PeriphManagerBase):
|
|
|
|
|
"""
|
|
|
|
|
Test periph manager class which fakes out all API calls
|
|
|
|
|
"""
|
2017-03-28 00:07:44 +00:00
|
|
|
hw_pids = "42"
|
2017-03-28 01:03:52 +00:00
|
|
|
mboard_info = {"type": "mpm_test"}
|
2017-03-28 00:07:44 +00:00
|
|
|
mboard_eeprom_addr = None
|
|
|
|
|
dboard_eeprom_addrs = {"A": "something", "B": "else"}
|
|
|
|
|
dboard_spimaster_addrs = {"A": "something", "B": "else"}
|
|
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
|
# First initialize parent class - will populate self._eeprom_head and self._eeprom_rawdata
|
|
|
|
|
# super(n310, self).__init__(*args, **kwargs)
|
|
|
|
|
# if header.get("dataversion", 0) == 1:
|
2017-03-28 01:03:52 +00:00
|
|
|
self._eeprom = self._read_eeprom_fake()
|
|
|
|
|
print(self.mboard_info)
|
|
|
|
|
self.mboard_info["serial"] = "AABBCCDDEEFF"
|
|
|
|
|
self.mboard_info["name"] = self._eeprom["name"]
|
2017-03-28 00:07:44 +00:00
|
|
|
|
|
|
|
|
# I'm the test periph_manager, I know I have test dboards attached
|
|
|
|
|
self.dboards = {
|
2017-03-28 01:03:52 +00:00
|
|
|
"A": dboard_manager.test(self._read_db_eeprom_random()),
|
|
|
|
|
"B": dboard_manager.test(self._read_db_eeprom_random())
|
2017-03-28 00:07:44 +00:00
|
|
|
}
|
|
|
|
|
|
2017-03-28 01:03:52 +00:00
|
|
|
def _read_eeprom_fake(self):
|
|
|
|
|
"""
|
|
|
|
|
fake eeprom readout function, returns dict with data
|
|
|
|
|
"""
|
2017-03-28 00:07:44 +00:00
|
|
|
fake_eeprom = {
|
|
|
|
|
"magic": 42,
|
|
|
|
|
"crc": 4242,
|
|
|
|
|
"data_version": 42,
|
|
|
|
|
"hw_pid": 42,
|
2017-03-28 01:03:52 +00:00
|
|
|
"hw_rev": 5,
|
|
|
|
|
"name": "foo"
|
2017-03-28 00:07:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fake_eeprom
|
|
|
|
|
|
2017-03-28 01:03:52 +00:00
|
|
|
def _read_db_eeprom_random(self):
|
|
|
|
|
"""
|
|
|
|
|
fake db eeprom readout function, returns dict with fake dboard data
|
|
|
|
|
"""
|
2017-03-28 00:07:44 +00:00
|
|
|
fake_eeprom = {
|
|
|
|
|
"serial": ''.join(
|
|
|
|
|
random.choice("ABCDEF" + string.digits)
|
|
|
|
|
for _ in range(16))
|
|
|
|
|
}
|
|
|
|
|
return fake_eeprom
|