[chirp_devel] [PATCH 2 of 2] [RFC] Make RadioReference push status during the fetch

Tom Hayward
Fri Apr 13 06:51:31 PDT 2012


# HG changeset patch
# User Dan Smith <dsmith at danplanet.com>
# Date 1334271166 25200
# Node ID 1d6687778bf52a6b633044f2d5a8ab87283a0322
# Parent  cc8eaaea59612fa079c97fc63d0b81c94fc4f5c9
[RFC] Make RadioReference push status during the fetch

Since we're walking a bunch of data, this helps the user not wonder if
things are actually happening behind the scenes.

Tom, this should give you something to start with and hopefully improve
a little.
Bug #00

diff -r cc8eaaea5961 -r 1d6687778bf5 chirp/radioreference.py
--- a/chirp/radioreference.py	Thu Apr 12 15:51:47 2012 -0700
+++ b/chirp/radioreference.py	Thu Apr 12 15:52:46 2012 -0700
@@ -30,7 +30,7 @@
     "P25"   : "P25",
 }
 
-class RadioReferenceRadio(chirp_common.Radio):
+class RadioReferenceRadio(chirp_common.NetworkSourceRadio):
     VENDOR = "Radio Reference LLC"
     MODEL = "RadioReference.com"
 
@@ -61,20 +61,34 @@
 
         zipcode = self._client.service.getZipcodeInfo(self._zip, self._auth)
         county = self._client.service.getCountyInfo(zipcode.ctid, self._auth)
+
+        status = chirp_common.Status()
+        status.max = 0
+        for cat in county.cats:
+            status.max += len(cat.subcats)
+        status.max += len(county.agencyList)
+
         for cat in county.cats:
             print "Fetching category:", cat.cName
             for subcat in cat.subcats:
                 print "\t", subcat.scName
                 result = self._client.service.getSubcatFreqs(subcat.scid, self._auth)
                 self._freqs += result
+                status.cur += 1
+                self.status_fn(status)
+        status.max -= len(county.agencyList)
         for agency in county.agencyList:
             agency = self._client.service.getAgencyInfo(agency.aid, self._auth)
             for cat in agency.cats:
+                status.max += len(cat.subcats)
+            for cat in agency.cats:
                 print "Fetching category:", cat.cName
                 for subcat in cat.subcats:
                     print "\t", subcat.scName
                     result = self._client.service.getSubcatFreqs(subcat.scid, self._auth)
                     self._freqs += result
+                    status.cur += 1
+                    self.status_fn(status)
 
     def get_features(self):
         if not self._freqs:
@@ -153,4 +167,4 @@
     print rrr.get_memory(0)
 
 if __name__ == "__main__":
-    main()
\ No newline at end of file
+    main()



More information about the chirp_devel mailing list