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