service.slice: fix rew not playing

This commit is contained in:
Lukas Rusak 2017-08-22 10:44:54 -07:00 committed by chewitt
parent 763d8e0821
commit 37f98b5239
3 changed files with 32 additions and 16 deletions

View File

@ -1,3 +1,7 @@
102
- Fix rew pattern not working
- Change logging to use LOGDEBUG
101 101
- Fix sleep.png so all LED's turn off - Fix sleep.png so all LED's turn off

View File

@ -18,7 +18,7 @@
PKG_NAME="slice" PKG_NAME="slice"
PKG_VERSION="0" PKG_VERSION="0"
PKG_REV="101" PKG_REV="102"
PKG_ARCH="any" PKG_ARCH="any"
PKG_LICENSE="GPL" PKG_LICENSE="GPL"
PKG_SITE="" PKG_SITE=""

View File

@ -61,10 +61,12 @@ class PNGPatternPlayer(threading.Thread):
def clearPattern(self): def clearPattern(self):
with open('/dev/ws2812', 'wb') as f: with open('/dev/ws2812', 'wb') as f:
f.write(bytearray(25)) 'write null multiple times as the LEDs can get locked up with fast operations'
for n in range(5):
f.write(bytearray(25))
def playPattern(self, file, delay): def playPattern(self, file, delay):
xbmc.log('playing pattern: %s' % file, xbmc.LOGNOTICE) xbmc.log('playing pattern: %s' % file, xbmc.LOGDEBUG)
'get pixel data from a cache if available, otherwise load and calculate' 'get pixel data from a cache if available, otherwise load and calculate'
if file not in self.memo: if file not in self.memo:
@ -108,7 +110,7 @@ class PNGPatternPlayer(threading.Thread):
else: else:
self.patterns.put((file, repeat, delay, False)) self.patterns.put((file, repeat, delay, False))
def stop(wait=None): def stop(self, wait=None):
self.play(None, wait=wait) self.play(None, wait=wait)
def run(self): def run(self):
@ -138,16 +140,24 @@ class SlicePlayer(xbmc.Player):
xbmc.Player.__init__(self) xbmc.Player.__init__(self)
'maps kodi player speed to delay in seconds' 'maps kodi player speed to delay in seconds'
self.speed_map = { 1: 0.060, self.speed_map = {-32: 0.015,
2: 0.040, -16: 0.025,
4: 0.035, -8: 0.030,
8: 0.030, -4: 0.035,
16: 0.025, -2: 0.040,
32: 0.015, -1: 0.060,
0: 0.000,
1: 0.060,
2: 0.040,
4: 0.035,
8: 0.030,
16: 0.025,
32: 0.015,
} }
self.speed = 1 self.speed = 1
patterns.play('startup', False, 0.02) patterns.play('startup', False, 0.02)
xbmc.log('service.slice add-on started', xbmc.LOGNOTICE)
def onPlayBackEnded(self): def onPlayBackEnded(self):
'Will be called when Kodi stops playing a file' 'Will be called when Kodi stops playing a file'
@ -169,8 +179,8 @@ class SlicePlayer(xbmc.Player):
# todo: not working # todo: not working
xbmc.log('time offset: %d' % iTime, xbmc.LOGNOTICE) xbmc.log('time offset: %d' % iTime, xbmc.LOGDEBUG)
xbmc.log('seek offset: %d' % seekOffset, xbmc.LOGNOTICE) xbmc.log('seek offset: %d' % seekOffset, xbmc.LOGDEBUG)
if seekOffset > 0: if seekOffset > 0:
patterns.play('skipf') patterns.play('skipf')
@ -184,15 +194,17 @@ class SlicePlayer(xbmc.Player):
def onPlayBackSpeedChanged(self, speed): def onPlayBackSpeedChanged(self, speed):
'Will be called when players speed changes. (eg. user FF/RW)' 'Will be called when players speed changes. (eg. user FF/RW)'
xbmc.log('seek speed: %d' % speed, xbmc.LOGNOTICE) xbmc.log('seek speed: %d' % speed, xbmc.LOGDEBUG)
self.speed = speed self.speed = speed
if self.speed != 1: if self.speed != 1:
patterns.play('ffwd' if self.speed > 0 else 'rew', True, self.speed_map[self.speed]) if self.speed < 0:
patterns.play('rew', True, self.speed_map[self.speed])
elif self.speed > 0:
patterns.play('ffwd', True, self.speed_map[self.speed])
else: else:
patterns.stop() patterns.stop()
#OR: patterns.play('play') ???
def onPlayBackStarted(self): def onPlayBackStarted(self):
'Will be called when Kodi starts playing a file' 'Will be called when Kodi starts playing a file'
@ -234,4 +246,4 @@ if (__name__ == "__main__"):
del SliceMonitor del SliceMonitor
del SlicePlayer del SlicePlayer
del PNGPatternPlayer del PNGPatternPlayer