88#ifndef  _SINRIC_H_
99#define  _SINRIC_H_ 
1010
11- #include  " SinricProEventSender .h" 
12- #include  " SinricProDevice .h" 
11+ #include  " SinricProInterface .h" 
12+ #include  " SinricProDeviceInterface .h" 
1313#include  " SinricProWebsocket.h" 
1414#include  " SinricProUDP.h" 
1515#include  " SinricProSignature.h" 
1919
2020#include  " extralib/ESPTrueRandom/ESPTrueRandom.h" 
2121
22- class  SinricProClass  : public  EventSender  {
22+ class  SinricProClass  : public  SinricProInterface  {
2323  public: 
2424    void  begin (String socketAuthToken, String signingKey, String serverURL = SERVER_URL);
2525    template  <typename  DeviceType>
2626    DeviceType& add (const  char * deviceId, unsigned  long  eventWaitTime = 1000 );
2727
28-     void  add (SinricProDevice & newDevice);
29-     void  add (SinricProDevice * newDevice);
28+     void  add (SinricProDeviceInterface & newDevice);
29+     void  add (SinricProDeviceInterface * newDevice);
3030    void  handle ();
3131    void  stop ();
3232    bool  isConnected ();
@@ -40,7 +40,9 @@ class SinricProClass : public EventSender {
4040      SinricProClass* ptr;
4141      String deviceId;
4242      template  <typename  DeviceType>
43-       operator  DeviceType&() { return  ptr->getDeviceInstance <DeviceType>(deviceId); }
43+       operator  DeviceType&() { return  as<DeviceType>(); }
44+       template  <typename  DeviceType>
45+       DeviceType& as () { return  ptr->getDeviceInstance <DeviceType>(deviceId); }
4446    };
4547
4648    proxy operator [](const  String deviceId) { return  proxy (this , deviceId); }
@@ -53,12 +55,12 @@ class SinricProClass : public EventSender {
5355    void  reconnect ();
5456    bool  checkDeviceId (String deviceId);
5557
56-     SinricProDevice * getDevice (String deviceId);
58+     SinricProDeviceInterface * getDevice (String deviceId);
5759
5860    template  <typename  DeviceType>
5961    DeviceType& getDeviceInstance (String deviceId) { return  (DeviceType&) *getDevice (deviceId); }
6062
61-     std::vector<SinricProDevice *> devices;
63+     std::vector<SinricProDeviceInterface *> devices;
6264    String socketAuthToken;
6365    String signingKey;
6466    String serverURL;
@@ -70,7 +72,7 @@ class SinricProClass : public EventSender {
7072    SinricProQueue_t sendQueue;
7173};
7274
73- SinricProDevice * SinricProClass::getDevice (String deviceId) {
75+ SinricProDeviceInterface * SinricProClass::getDevice (String deviceId) {
7476  for  (auto & device : devices) {
7577    if  (deviceId == String (device->getDeviceId ())) return  device;
7678  }
@@ -94,14 +96,18 @@ DeviceType& SinricProClass::add(const char* deviceId, unsigned long eventWaitTim
9496  return  *newDevice;
9597}
9698
97- void  SinricProClass::add (SinricProDevice* newDevice) {
99+ __attribute__  ((deprecated(" Please use DeviceType& myDevice = SinricPro.add<DeviceType>(DeviceId);"  )))
100+ void SinricProClass::add(SinricProDeviceInterface* newDevice) {
98101  if  (!checkDeviceId (String (newDevice->getDeviceId ()))) return ;
99102  newDevice->begin (this );
100103  devices.push_back (newDevice);
101104}
102105
103- void  SinricProClass::add (SinricProDevice& newDevice) {
104-   add (&newDevice);
106+ __attribute__  ((deprecated(" Please use DeviceType& myDevice = SinricPro.add<DeviceType>(DeviceId);"  )))
107+ void SinricProClass::add(SinricProDeviceInterface& newDevice) {
108+   if  (!checkDeviceId (String (newDevice.getDeviceId ()))) return ;
109+   newDevice.begin (this );
110+   devices.push_back (&newDevice);
105111}
106112
107113void  SinricProClass::handle () {
0 commit comments