This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/2697 ofono_client: Power off modem when resource is freed Change-Id: Ibde7573267f1c63d075cf0147ed614a4b1ff46c8 --- M src/osmo_gsm_tester/ofono_client.py M src/osmo_gsm_tester/resource.py M src/osmo_gsm_tester/suite.py 3 files changed, 35 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/97/2697/1 diff --git a/src/osmo_gsm_tester/ofono_client.py b/src/osmo_gsm_tester/ofono_client.py index 8c19dfd..5cfa60e 100644 --- a/src/osmo_gsm_tester/ofono_client.py +++ b/src/osmo_gsm_tester/ofono_client.py @@ -148,6 +148,15 @@ else: log_obj.raise_exn('No free modem found with IMSI', imsi) +def freed_resource_poweroff(log_obj, to_be_freed, reserved): + modem_to_be = to_be_freed.get(resource.R_MODEM) + if not modem_to_be: + return + for freed_dict in modem_to_be: + dbus_obj = systembus_get(freed_dict['path']) + log_obj.dbg('free modem resource, poweroff:', freed_dict['path']) + modem_set_powered_sync(log_obj, dbus_obj, False) + class Modem(log.Origin): 'convenience for ofono Modem interaction' diff --git a/src/osmo_gsm_tester/resource.py b/src/osmo_gsm_tester/resource.py index 6483cb6..cbe83e9 100644 --- a/src/osmo_gsm_tester/resource.py +++ b/src/osmo_gsm_tester/resource.py @@ -85,6 +85,7 @@ self.state_dir = config.get_state_dir() self.set_name(conf=self.config_path, state=self.state_dir.path) self.reserve_cb_list = [] + self.free_cb_list = [] self.read_conf() def read_conf(self): @@ -108,6 +109,25 @@ previously reserved. ''' self.reserve_cb_list.append(cb) + + def add_on_free_cb(self, cb): + ''' + Add a hook to be able to read/modify parameters to previously reserved + resources being freed. This is callback is called while the state lock + is being hold. + + cb method will be called as follows: cb(origin, to_be_freed, + reserved) + + 'origin' a log.Origin() instance which can be sued to log information. + + 'to_be_reserved' A Resources() instance which represents the resources + that are being freed now. + + 'reserved' A Resources() instance which represents the current reserved + resources set, without the subset of to_be_freed resources. + ''' + self.free_cb_list.append(cb) def reserve(self, origin, want): ''' @@ -182,6 +202,11 @@ rrfile_path = self.state_dir.mk_parentdir(RESERVED_RESOURCES_FILE) reserved = Resources(config.read(rrfile_path, if_missing_return={})) reserved.drop(to_be_freed) + for cb in self.free_cb_list: + try: + cb(self, to_be_freed, reserved) + except Exception: + self.log_exn() config.write(rrfile_path, reserved) self.forget_freed(to_be_freed) diff --git a/src/osmo_gsm_tester/suite.py b/src/osmo_gsm_tester/suite.py index eecea91..a96e454 100644 --- a/src/osmo_gsm_tester/suite.py +++ b/src/osmo_gsm_tester/suite.py @@ -182,6 +182,7 @@ self.set_log_category(log.C_TST) self.resources_pool = resource.ResourcesPool() self.resources_pool.add_on_reserve_cb(ofono_client.reserved_resource_populate_path) + self.resources_pool.add_on_free_cb(ofono_client.freed_resource_poweroff) def mark_start(self): self.tests = [] -- To view, visit https://gerrit.osmocom.org/2697 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibde7573267f1c63d075cf0147ed614a4b1ff46c8 Gerrit-PatchSet: 1 Gerrit-Project: osmo-gsm-tester Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>