OSC: Add group name feedback to strips
[ardour.git] / libs / surfaces / osc / osc_route_observer.h
index 779640af400accf16be1b6573e3f8784a493ce6b..2fb040bedb80efb92c347ba1ff11644cbb43c21c 100644 (file)
@@ -1,6 +1,6 @@
 /*
     Copyright (C) 2009 Paul Davis
+
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
@@ -21,6 +21,7 @@
 #define __osc_oscrouteobserver_h__
 
 #include <string>
+#include <bitset>
 #include <boost/shared_ptr.hpp>
 #include <sigc++/sigc++.h>
 #include <lo/lo.h>
 #include "pbd/stateful.h"
 #include "ardour/types.h"
 
-namespace ARDOUR {
-       class Route;
-}
+#include "osc.h"
 
 class OSCRouteObserver
 {
 
   public:
-       OSCRouteObserver (lo_address addr, const std::string& path, boost::shared_ptr<ARDOUR::Route>);
+       OSCRouteObserver (ArdourSurface::OSC& o, uint32_t sid, ArdourSurface::OSC::OSCSurface* sur);
        ~OSCRouteObserver ();
 
-       boost::shared_ptr<ARDOUR::Route> route() const { return _route; }
+       boost::shared_ptr<ARDOUR::Stripable> strip () const { return _strip; }
+       uint32_t strip_id () const { return ssid; }
+       lo_address address () const { return addr; };
+       void tick (void);
+       void send_select_status (const PBD::PropertyChange&);
+       void refresh_strip (boost::shared_ptr<ARDOUR::Stripable> strip, bool force);
+       void set_expand (uint32_t expand);
+       void set_link_ready (uint32_t not_ready);
+       void clear_strip ();
 
   private:
-       boost::shared_ptr<ARDOUR::Route> _route;
-       
-       PBD::ScopedConnection changed_connection;
+       boost::shared_ptr<ARDOUR::Stripable> _strip;
+
+       PBD::ScopedConnectionList strip_connections;
+
+       ArdourSurface::OSC& _osc;
        lo_address addr;
        std::string path;
+       uint32_t gainmode;
+       std::bitset<32> feedback;
+       uint32_t ssid;
+       ArdourSurface::OSC::OSCSurface* sur;
+       float _last_meter;
+       uint32_t gain_timeout;
+       float _last_gain;
+       float _last_trim;
+       bool _init;
+       uint32_t _expand;
+       bool in_line;
+       ARDOUR::AutoState as;
+       bool _tick_busy;
+
 
        void name_changed (const PBD::PropertyChange& what_changed);
+       void group_name ();
+       void pi_changed (PBD::PropertyChange const&);
+       void send_change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
+       void send_monitor_status (boost::shared_ptr<PBD::Controllable> controllable);
+       void send_gain_message ();
+       void gain_automation ();
+       void send_trim_message ();
+       void no_strip ();
 };
 
 #endif /* __osc_oscrouteobserver_h__ */