@@ -66,7 +66,7 @@ public class ZigBeeTimeExtension implements ZigBeeNetworkExtension, ZigBeeNetwor
66
66
/**
67
67
* Our time server that handles any requests from remote clients
68
68
*/
69
- private ZclTimeServer timeServer ;
69
+ private ZclTimeServer localTimeServer ;
70
70
71
71
private ZigBeeUtcTime dstStart ;
72
72
private ZigBeeUtcTime dstEnd ;
@@ -90,7 +90,6 @@ public class ZigBeeTimeExtension implements ZigBeeNetworkExtension, ZigBeeNetwor
90
90
* The worker thread that is scheduled periodically to check the synchronisation of remote devices
91
91
*/
92
92
private ScheduledFuture <?> workerJob ;
93
-
94
93
/**
95
94
* A map of all the time clients on the network
96
95
*/
@@ -100,6 +99,7 @@ public class ZigBeeTimeExtension implements ZigBeeNetworkExtension, ZigBeeNetwor
100
99
public ZigBeeStatus extensionInitialize (ZigBeeNetworkManager networkManager ) {
101
100
this .networkManager = networkManager ;
102
101
networkManager .addSupportedClientCluster (ZclTimeCluster .CLUSTER_ID );
102
+ networkManager .addSupportedServerCluster (ZclTimeCluster .CLUSTER_ID );
103
103
networkManager .addNetworkNodeListener (this );
104
104
105
105
return ZigBeeStatus .SUCCESS ;
@@ -109,9 +109,9 @@ public ZigBeeStatus extensionInitialize(ZigBeeNetworkManager networkManager) {
109
109
public ZigBeeStatus extensionStartup () {
110
110
logger .debug ("Time extension: startup" );
111
111
112
- timeServer = new ZclTimeServer (networkManager );
113
- timeServer .setMaster (master );
114
- timeServer .setSuperceding (superceding );
112
+ localTimeServer = new ZclTimeServer (networkManager );
113
+ localTimeServer .setMaster (master );
114
+ localTimeServer .setSuperceding (superceding );
115
115
116
116
startWorker ();
117
117
return ZigBeeStatus .SUCCESS ;
@@ -121,8 +121,8 @@ public ZigBeeStatus extensionStartup() {
121
121
public void extensionShutdown () {
122
122
networkManager .removeNetworkNodeListener (this );
123
123
124
- if (timeServer != null ) {
125
- timeServer .shutdown ();
124
+ if (localTimeServer != null ) {
125
+ localTimeServer .shutdown ();
126
126
}
127
127
128
128
logger .debug ("Time extension: shutdown" );
@@ -135,8 +135,8 @@ public void extensionShutdown() {
135
135
*/
136
136
public void setMaster (boolean master ) {
137
137
this .master = master ;
138
- if (timeServer != null ) {
139
- timeServer .setMaster (master );
138
+ if (localTimeServer != null ) {
139
+ localTimeServer .setMaster (master );
140
140
}
141
141
}
142
142
@@ -147,8 +147,8 @@ public void setMaster(boolean master) {
147
147
*/
148
148
public void setSuperceding (boolean superceding ) {
149
149
this .superceding = superceding ;
150
- if (timeServer != null ) {
151
- timeServer .setSuperceding (superceding );
150
+ if (localTimeServer != null ) {
151
+ localTimeServer .setSuperceding (superceding );
152
152
}
153
153
}
154
154
@@ -158,7 +158,7 @@ public void setSuperceding(boolean superceding) {
158
158
* @return true if the server is a master clock source.
159
159
*/
160
160
public boolean isMaster () {
161
- return timeServer .isMaster ();
161
+ return localTimeServer .isMaster ();
162
162
}
163
163
164
164
/**
@@ -167,7 +167,7 @@ public boolean isMaster() {
167
167
* @return true of the server is marked as a superceding server.
168
168
*/
169
169
public boolean isSuperceding () {
170
- return timeServer .isSuperceding ();
170
+ return localTimeServer .isSuperceding ();
171
171
}
172
172
173
173
/**
@@ -185,7 +185,7 @@ public void setDst(ZigBeeUtcTime dstStart, ZigBeeUtcTime dstEnd, int dstOffset)
185
185
186
186
logger .debug ("Time extension: set DST start={}, end={}, offset={}" , dstStart , dstEnd , dstOffset );
187
187
188
- timeServer .setDst (dstStart , dstEnd , dstOffset );
188
+ localTimeServer .setDst (dstStart , dstEnd , dstOffset );
189
189
190
190
// Update all the clients
191
191
synchronized (timeClients ) {
@@ -208,7 +208,7 @@ public ZigBeeUtcTime getLastUpdateTime(ZigBeeEndpointAddress address) {
208
208
case CLIENT :
209
209
return timeClients .get (address ).getLastUpdate ();
210
210
case SERVER :
211
- return timeServer .getLastUpdateTime (address .getAddress ());
211
+ return localTimeServer .getLastUpdateTime (address .getAddress ());
212
212
case NONE :
213
213
default :
214
214
return null ;
@@ -224,7 +224,7 @@ public ZigBeeUtcTime getLastUpdateTime(ZigBeeEndpointAddress address) {
224
224
*/
225
225
public ZigBeeTimeSetMethod getLastUpdateMethod (ZigBeeEndpointAddress address ) {
226
226
ZigBeeUtcTime clientTime = null ;
227
- ZigBeeUtcTime serverTime = timeServer .getLastUpdateTime (address .getAddress ());
227
+ ZigBeeUtcTime serverTime = localTimeServer .getLastUpdateTime (address .getAddress ());
228
228
229
229
ZclTimeClient client = timeClients .get (address );
230
230
if (client != null ) {
@@ -253,6 +253,10 @@ public void nodeAdded(ZigBeeNode node) {
253
253
timeClients .put (timeServer .getZigBeeAddress (), timeClient );
254
254
}
255
255
}
256
+ ZclTimeCluster timeClient = (ZclTimeCluster ) endpoint .getOutputCluster (ZclTimeCluster .CLUSTER_ID );
257
+ if (timeClient != null ) {
258
+ localTimeServer .addRemote (timeClient );
259
+ }
256
260
}
257
261
258
262
startWorker ();
0 commit comments