CLI "volumio seek minus" works wrong at beggining of a track

“volumio seek minus” command is handled incorrectly on beginning of a track, when less than 10 seconds passed:

  1. Command does not rewind anything, just does nothing
  2. Counter on UI is going to negative value - see screenshot

Expected behavior: rewind to beginning of the track.

Logs attached.

Prerequisites

Volumio Information

Volumio Version: 3.429
Hardware: RPi

Steps to reproduce

  1. Open any track
  2. Run CLI command volumio seek minus (not later than 10 seconds from beggining of the track)

Debug Log



info: CoreStateMachine::syncState   stateService play
info: CoreStateMachine::syncState   currentStatus play
info: Received an update from plugin. extracting info from payload
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::volumioPushState
info: ControllerMpd::pushState
info: CoreCommandRouter::servicePushState
info: CorePlayQueue::getTrack 5


info: CoreStateMachine::syncState   stateService play
info: CoreStateMachine::syncState   currentStatus play
info: Received an update from plugin. extracting info from payload
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::volumioPushState
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::volumioPushState
info: ------------------------------ 842ms
info: ------------------------------ 844ms
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -5.607
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -14.607
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -23.915
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -33.414
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -42.906
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -52.294
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -61.659
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)
info:
---------------------------- Client requests Position -
info: CoreCommandRouter::volumioSeek
info: CoreStateMachine::seek
info: CorePlayQueue::getTrack 5
info: CorePlayQueue::getTrack 5
info: CoreStateMachine::startPlaybackTimer
info: CorePlayQueue::getTrack 5
info: ControllerMpd::seek
info: CoreStateMachine::pushState
info: CorePlayQueue::getTrack 5
info: CoreCommandRouter::executeOnPlugin: volumiodiscovery , saveDeviceInfo
info: CoreCommandRouter::volumioPushState
error:  [2@0] {seek} Negative value not allowed: -68.831
info: [GPIO_Control] *** musicPlay ***
info: [GPIO_Control] Delaying: 0ms
info: [GPIO_Control] Turning GPIO 4 On (musicPlay)

Additional Information

Created pull request: fix: fix `seek minus` command on beginning of a track by phts · Pull Request #122 · volumio/volumio3-backend · GitHub