| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- #pragma once
 
- #include <stdint.h>  // for uint8_t, uint32_t
 
- #include <memory>    // for shared_ptr
 
- #include <string>    // for string
 
- #include <vector>    // for vector
 
- #include "TrackReference.h"
 
- #include "protobuf/spirc.pb.h"  // for Frame, TrackRef, CapabilityType, Mess...
 
- namespace cspot {
 
- struct Context;
 
- class PlaybackState {
 
-  private:
 
-   std::shared_ptr<cspot::Context> ctx;
 
-   uint32_t seqNum = 0;
 
-   uint8_t capabilityIndex = 0;
 
-   std::vector<uint8_t> frameData;
 
-   void addCapability(
 
-       CapabilityType typ, int intValue = -1,
 
-       std::vector<std::string> stringsValue = std::vector<std::string>());
 
-  public:
 
-   Frame innerFrame;
 
-   Frame remoteFrame;
 
-   std::vector<TrackReference> remoteTracks;
 
-   enum class State { Playing, Stopped, Loading, Paused };
 
-   /**
 
-      * @brief Player state represents the current state of player.
 
-      *
 
-      * Responsible for keeping track of player's state. Doesn't control the playback itself.
 
-      *
 
-      * @param timeProvider synced time provider
 
-      */
 
-   PlaybackState(std::shared_ptr<cspot::Context> ctx);
 
-   ~PlaybackState();
 
-   /**
 
-      * @brief Updates state according to current playback state.
 
-      *
 
-      * @param state playback state
 
-      */
 
-   void setPlaybackState(const PlaybackState::State state);
 
-   /**
 
-      * @brief Sets player activity
 
-      *
 
-      * @param isActive activity status
 
-      */
 
-   void setActive(bool isActive);
 
-   /**
 
-      * @brief Simple getter
 
-      *
 
-      * @return true player is active
 
-      * @return false player is inactive
 
-      */
 
-   bool isActive();
 
-   /**
 
-      * @brief Updates local track position.
 
-      *
 
-      * @param position position in milliseconds
 
-      */
 
-   void updatePositionMs(uint32_t position);
 
-   /**
 
-      * @brief Sets local volume on internal state.
 
-      *
 
-      * @param volume volume between 0 and UINT16 max
 
-      */
 
-   void setVolume(uint32_t volume);
 
-   /**
 
-    * @brief Updates local track queue from remote data.
 
-      */
 
-   void syncWithRemote();
 
-   /**
 
-      * @brief Encodes current frame into binary data via protobuf.
 
-      *
 
-      * @param typ message type to include in frame type
 
-      * @return std::vector<uint8_t> binary frame data
 
-      */
 
-   std::vector<uint8_t> encodeCurrentFrame(MessageType typ);
 
-   bool decodeRemoteFrame(std::vector<uint8_t>& data);
 
- };
 
- }  // namespace cspot
 
 
  |