1 package org.ocera.orte.demo.Subscribers;
3 import java.util.concurrent.locks.ReentrantReadWriteLock;
4 import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock;
5 import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock;
7 import org.ocera.orte.DomainApp;
8 import org.ocera.orte.Subscription;
9 import org.ocera.orte.SubscriptionCallback;
10 import org.ocera.orte.demo.DataTypes.PwrVoltageType;
11 import org.ocera.orte.types.MessageData;
12 import org.ocera.orte.types.NtpTime;
13 import org.ocera.orte.types.RecvInfo;
14 import org.ocera.orte.types.SubsProp;
15 import org.ocera.orte.types.ORTEConstant;
17 import android.os.Bundle;
18 import android.os.Handler;
19 import android.os.Message;
21 public class PwrVoltageSubscribe extends SubscriptionCallback{
23 static Handler handler;
25 private Subscription sub;
26 private PwrVoltageType voltagemsg;
27 private DomainApp domainApp;
28 private SubsProp subProps;
30 private boolean isCancelled = true;
31 private final ReentrantReadWriteLock controlRrwl = new ReentrantReadWriteLock(true);
32 private final ReadLock rcLock = controlRrwl.readLock();
33 private final WriteLock wcLock = controlRrwl.writeLock();
35 public PwrVoltageSubscribe(DomainApp domainApp, Handler dialogHandler) {
36 handler = dialogHandler;
37 this.domainApp = domainApp;
39 NtpTime deadline = new NtpTime(0,1288490189);
40 NtpTime minSeparation = new NtpTime(1);
42 voltagemsg = new PwrVoltageType(domainApp, "pwr_voltage");
44 subProps = new SubsProp(voltagemsg.getTopic(),
48 ORTEConstant.IMMEDIATE,
49 ORTEConstant.BEST_EFFORTS,
57 sub = domainApp.createSubscription(subProps, voltagemsg, this);
63 public void cancel() {
73 public boolean isCancelled() {
82 public void callback(RecvInfo info, MessageData msg) {
83 if (info.getRecvStatus() == ORTEConstant.NEW_DATA) {
84 Message message = handler.obtainMessage();
85 Bundle bundle = new Bundle();
87 bundle.putDoubleArray("voltages", ((PwrVoltageType)msg).voltage.clone());
88 message.setData(bundle);
89 handler.sendMessage(message);