## 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, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+## along with this program; if not, see <http://www.gnu.org/licenses/>.
##
import sigrokdecode as srd
return reduce(lambda i, v: (i >> 1) | (v << (len(bits) - 1)), bits, 0)
class Decoder(srd.Decoder):
- api_version = 2
+ api_version = 3
id = 'qi'
name = 'Qi'
longname = 'Qi charger protocol'
('packets', 'Packets', (5, 6, 7)),
)
- def __init__(self, **kwargs):
+ def __init__(self):
self.samplerate = None
self.reset_variables()
self.bits.clear()
self.bitsi.clear()
- def next_sample(self, s):
- if s == self.prev:
- self.counter += 1
- else:
- self.handle_transition(self.counter, s == 0)
- self.prev = s
- self.counter = 1
-
- def decode(self, ss, es, data):
+ def decode(self):
if not self.samplerate:
raise SamplerateError('Cannot decode without samplerate.')
- for (self.samplenum, (qi,)) in data:
- self.next_sample(qi)
+
+ (qi,) = self.wait({'skip': 1})
+ self.handle_transition(self.samplenum, qi == 0)
+ while True:
+ prev = self.samplenum
+ (qi,) = self.wait({0: 'e'})
+ self.handle_transition(self.samplenum - prev, qi == 0)