Skip to content

Commit 4039b88

Browse files
committed
Fixed Functionality + See Descr.
- Bug fix for hot removing/adding of luminaires - Major Refactor of many components - Everything is basically a function now - Added comments
1 parent 68b12d2 commit 4039b88

File tree

36 files changed

+610
-389
lines changed

36 files changed

+610
-389
lines changed
Binary file not shown.

leshan-client-cf/target/classes/META-INF/MANIFEST.MF

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Manifest-Version: 1.0
2-
Bnd-LastModified: 1670956966638
2+
Bnd-LastModified: 1671049511996
33
Build-Jdk-Spec: 19
44
Bundle-Description: A transport implementation for leshan client based o
55
n CoAP Californium
Binary file not shown.

leshan-client-core/target/classes/META-INF/MANIFEST.MF

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Manifest-Version: 1.0
2-
Bnd-LastModified: 1670956966324
2+
Bnd-LastModified: 1671049511731
33
Build-Jdk-Spec: 19
44
Bundle-Description: A LWM2M client implementation which abstracts transp
55
ort layer. A transport implementation like "leshan-client-cf" is needed
Binary file not shown.

leshan-client-demo/src/main/java/org/eclipse/leshan/client/demo/Luminaire.java

+164-142
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@
55

66
import java.math.BigDecimal;
77
import java.math.RoundingMode;
8-
import java.util.Random;
9-
import java.util.List;
10-
import java.util.Arrays;
8+
import java.util.*;
119
import java.util.concurrent.Executors;
1210
import java.util.concurrent.ScheduledExecutorService;
1311
import java.util.concurrent.TimeUnit;
14-
import java.util.Scanner;
1512

13+
import jdk.internal.net.http.frame.SettingsFrame;
1614
import org.eclipse.leshan.client.servers.ServerIdentity;
1715
import org.eclipse.leshan.client.resource.BaseInstanceEnabler;
1816
import org.eclipse.leshan.core.model.ResourceModel.Type;
@@ -45,181 +43,205 @@ public class Luminaire extends BaseInstanceEnabler {
4543
private static final int RES_PEAK_POWER = 30003;
4644
private static final int RES_DIM_LEVEL = 30004;
4745
private static final List<Integer> supportedResources =
48-
Arrays.asList(
49-
RES_POWER
50-
, RES_TYPE
51-
, RES_PEAK_POWER
52-
, RES_DIM_LEVEL
53-
);
46+
Arrays.asList(
47+
RES_POWER
48+
, RES_TYPE
49+
, RES_PEAK_POWER
50+
, RES_DIM_LEVEL
51+
);
5452
// Variables storing current values.
5553

5654
private boolean vPower = false;
5755

5856
// LED, Halogen
59-
private String vType = "";
57+
private String vType;
6058

61-
private long vPeakPower = 0;
59+
private long vPeakPower;
6260

6361
// 0..100
6462
private long vDimLevel = 0;
6563

66-
//
67-
// 2IMN15: TODO : fill in
68-
//
69-
// Add state variables for the user interface.
70-
private JLabel glPower;
71-
private JLabel gvPower;
72-
private JLabel glDimLevel;
73-
private JLabel gvDimLevel;
74-
private JLabel glInstantPower;
75-
private JLabel gvInstantPower;
76-
private JFrame guiFrame;
77-
64+
/**
65+
* Variables for values in GUI
66+
* Power, Dim Level, Type, Peak Power and frame declaration itself
67+
*/
68+
private final JLabel gvPower;
69+
private final JLabel gvDimLevel;
70+
71+
private final JLabel gvType;
72+
73+
private final JLabel gvPeakPower;
74+
private final JFrame guiFrame;
75+
7876
public Luminaire() {
79-
//
80-
// 2IMN15: TODO : fill in
81-
//
82-
// Create an interface to display the luminaire state.
83-
// Options:
84-
// * GUI (see DemandResponse.java for an Swing/AWT example)
85-
// * external application
86-
// * ...
87-
//
88-
// Automatically generated GUI code.
89-
guiFrame = new JFrame();
90-
guiFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
91-
guiFrame.setTitle("Luminaire");
92-
93-
// Power
94-
glPower = new JLabel();
95-
glPower.setText("Power");
96-
gvPower = new JLabel();
97-
gvPower.setText(Boolean.toString(vPower));
98-
99-
//Dim Level
100-
glDimLevel = new JLabel();
101-
glDimLevel.setText("Dim Level");
102-
gvDimLevel = new JLabel();
103-
gvDimLevel.setText(Long.toString(vDimLevel));
104-
105-
//Instant Power
106-
glInstantPower = new JLabel();
107-
glInstantPower.setText("Instant Power");
108-
gvInstantPower = new JLabel();
109-
gvInstantPower.setText(Long.toString((100-vDimLevel)/100 * vPeakPower));
110-
111-
// Create layout of labels, inputs and values.
112-
GridLayout layout = new GridLayout(0,6,10,10);
113-
guiFrame.getContentPane().setLayout(layout);
114-
Container guiPane = guiFrame.getContentPane();
115-
guiPane.add(glPower);
116-
guiPane.add(gvPower);
117-
guiPane.add(glDimLevel);
118-
guiPane.add(gvDimLevel);
119-
guiPane.add(glInstantPower);
120-
guiPane.add(gvInstantPower);
121-
122-
guiFrame.pack();
123-
// Code to make the frame visible.
124-
java.awt.EventQueue.invokeLater(new Runnable() {
125-
public void run() {
126-
guiFrame.setVisible(true);
127-
}
128-
});
77+
//
78+
// 2IMN15: TODO : fill in
79+
//
80+
// Create an interface to display the luminaire state.
81+
// Options:
82+
// * GUI (see DemandResponse.java for an Swing/AWT example)
83+
// * external application
84+
// * ...
85+
//
86+
// Automatically generated GUI code.
87+
guiFrame = new JFrame();
88+
guiFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
89+
guiFrame.setTitle("Luminaire");
90+
91+
// Power
92+
//
93+
// 2IMN15: TODO : fill in
94+
//
95+
// Add state variables for the user interface.
96+
JLabel glPower = new JLabel();
97+
98+
// Power field (TRUE/FALSE corresponding to ON/OFF)
99+
glPower.setText("Power");
100+
gvPower = new JLabel();
101+
gvPower.setText(Boolean.toString(vPower));
102+
103+
//Dim Level (0-100)
104+
JLabel glDimLevel = new JLabel();
105+
glDimLevel.setText("Dim Level");
106+
gvDimLevel = new JLabel();
107+
gvDimLevel.setText(Long.toString(vDimLevel));
108+
109+
//Type of luminaire
110+
JLabel glType = new JLabel();
111+
glType.setText("Type");
112+
gvType = new JLabel();
113+
114+
//Peak power of luminaire
115+
JLabel glPeakPower = new JLabel();
116+
glPeakPower.setText("Peak Power");
117+
gvPeakPower = new JLabel();
118+
119+
// Create layout of labels, inputs and values.
120+
GridLayout layout = new GridLayout(0, 8, 10, 10);
121+
guiFrame.getContentPane().setLayout(layout);
122+
Container guiPane = guiFrame.getContentPane();
123+
guiPane.add(glPower);
124+
guiPane.add(gvPower);
125+
guiPane.add(glDimLevel);
126+
guiPane.add(gvDimLevel);
127+
guiPane.add(glType);
128+
guiPane.add(gvType);
129+
guiPane.add(glPeakPower);
130+
guiPane.add(gvPeakPower);
131+
132+
guiFrame.pack();
133+
// Code to make the frame visible.
134+
java.awt.EventQueue.invokeLater(new Runnable() {
135+
public void run() {
136+
guiFrame.setVisible(true);
137+
}
138+
});
129139
}
130140

131141
@Override
132142
public synchronized ReadResponse read(ServerIdentity identity, int resourceId) {
133-
switch (resourceId) {
134-
case RES_POWER:
135-
return ReadResponse.success(resourceId, vPower);
136-
case RES_TYPE:
137-
return ReadResponse.success(resourceId, vType);
138-
case RES_PEAK_POWER:
139-
return ReadResponse.success(resourceId, vPeakPower);
140-
case RES_DIM_LEVEL:
141-
return ReadResponse.success(resourceId, vDimLevel);
142-
default:
143-
return super.read(identity, resourceId);
144-
}
143+
switch (resourceId) {
144+
case RES_POWER:
145+
return ReadResponse.success(resourceId, vPower);
146+
case RES_TYPE:
147+
return ReadResponse.success(resourceId, vType);
148+
case RES_PEAK_POWER:
149+
return ReadResponse.success(resourceId, vPeakPower);
150+
case RES_DIM_LEVEL:
151+
return ReadResponse.success(resourceId, vDimLevel);
152+
default:
153+
return super.read(identity, resourceId);
154+
}
145155
}
146-
156+
147157
@Override
148158
public WriteResponse write(ServerIdentity identity, boolean replace, int resourceId, LwM2mResource value) {
149-
switch (resourceId) {
150-
case RES_POWER:
151-
//vPower = (Boolean) value.getValue();
152-
//fireResourceChange(resourceId);
153-
setPower((Boolean) value.getValue());
154-
return WriteResponse.success();
155-
case RES_DIM_LEVEL:
156-
// vDimLevel = (Integer) value.getValue();
157-
// fireResourceChange(resourceId);
158-
setDimLevel((Long) value.getValue());
159-
return WriteResponse.success();
160-
default:
161-
return super.write(identity, replace, resourceId,value);
162-
}
159+
switch (resourceId) {
160+
case RES_POWER:
161+
//vPower = (Boolean) value.getValue();
162+
//fireResourceChange(resourceId);
163+
setPower((Boolean) value.getValue());
164+
return WriteResponse.success();
165+
case RES_DIM_LEVEL:
166+
// vDimLevel = (Integer) value.getValue();
167+
// fireResourceChange(resourceId);
168+
setDimLevel((Long) value.getValue());
169+
return WriteResponse.success();
170+
case RES_TYPE:
171+
// case for luminaire type added by us
172+
setType((String) value.getValue());
173+
return WriteResponse.success();
174+
case RES_PEAK_POWER:
175+
// case for peak power added by us
176+
setPeakPower((long) value.getValue());
177+
System.out.println(value.getValue());
178+
return WriteResponse.success();
179+
default:
180+
return super.write(identity, replace, resourceId, value);
181+
}
163182
}
164-
183+
165184
@Override
166185
public synchronized ExecuteResponse execute(ServerIdentity identity, int resourceId, Arguments arguments) {
167-
switch (resourceId) {
168-
default:
169-
return super.execute(identity, resourceId,arguments);
170-
}
186+
return super.execute(identity, resourceId, arguments);
171187
}
172-
188+
173189
@Override
174190
public List<Integer> getAvailableResourceIds(ObjectModel model) {
175-
return supportedResources;
191+
return supportedResources;
176192
}
177-
193+
178194
// Configure before registration, don't fire.
179195
public void configure(String lumtype, long peakpower) {
180-
vType = lumtype;
181-
vPeakPower = peakpower;
182-
System.out.println(vType + " " + vPeakPower);
196+
vType = lumtype;
197+
// Set text here
198+
gvType.setText(lumtype);
199+
// Set text here
200+
vPeakPower = peakpower;
201+
gvPeakPower.setText(String.valueOf(peakpower));
202+
System.out.println(vType + " " + vPeakPower);
183203
}
184-
204+
185205
private synchronized void setPower(boolean value) {
186-
if (vPower != value) {
187-
vPower = value;
188-
//
189-
// 2IMN15: TODO : fill in
190-
//
191-
// RoomControl has change the power.
192-
// Update the UI.
193-
gvPower.setText(Boolean.toString(value));
194-
fireResourceChange(RES_POWER);
195-
}
206+
if (vPower != value) {
207+
vPower = value;
208+
//
209+
// 2IMN15: TODO : fill in
210+
//
211+
// RoomControl has changed the power.
212+
// Update the UI.
213+
gvPower.setText(Boolean.toString(value));
214+
fireResourceChange(RES_POWER);
215+
}
196216
}
197-
217+
198218
private synchronized void setType(String value) {
199-
if (vType != value) {
200-
vType = value;
201-
fireResourceChange(RES_TYPE);
202-
}
219+
if (!Objects.equals(vType, value)) {
220+
vType = value;
221+
gvType.setText(value);
222+
fireResourceChange(RES_TYPE);
223+
}
203224
}
204225

205226
private synchronized void setPeakPower(long value) {
206-
if (vPeakPower != value) {
207-
vPeakPower = value;
208-
fireResourceChange(RES_PEAK_POWER);
209-
}
227+
if (vPeakPower != value) {
228+
vPeakPower = value;
229+
gvPeakPower.setText(Long.toString(value));
230+
fireResourceChange(RES_PEAK_POWER);
231+
}
210232
}
211233

212234
private synchronized void setDimLevel(long value) {
213-
if (vDimLevel != value) {
214-
vDimLevel = value;
215-
//
216-
// 2IMN15: TODO : fill in
217-
//
218-
// RoomControl has change the dim level.
219-
// Update the UI.
220-
gvDimLevel.setText(Long.toString(value));
221-
fireResourceChange(RES_DIM_LEVEL);
222-
}
235+
if (vDimLevel != value) {
236+
vDimLevel = value;
237+
//
238+
// 2IMN15: TODO : fill in
239+
//
240+
// RoomControl has changed the dim level.
241+
// Update the UI.
242+
gvDimLevel.setText(Long.toString(value));
243+
fireResourceChange(RES_DIM_LEVEL);
244+
}
223245
}
224246

225247
}

0 commit comments

Comments
 (0)