Package org.cybergarage.upnp

Examples of org.cybergarage.upnp.Service


     */
    private void unsubscribeListenerForSid(String sid, UPnPEventListener listener, MyCtrlPoint ctrl) {
        Vector listeners = sidListSid.getListenersFromSid(sid);
        listeners.remove(listener);
        if(listeners.size()==0){
      Service service = ctrl.serviceFromSid(sid);
      if (service != null) {
        boolean ok = ctrl.unsubscribe(service);
        if (!ok) {
            //TODO Log?
          service.clearSID();
        }
      }
      sidListSid.setAlreadyFirst(sid,false);
      sidStateVars.remove(sid);
    }
View Full Code Here


    while (running) {
      Object msg = subQueue.dequeue();
      if (running) {
        if (msg instanceof FirstMessage) {
          FirstMessage firstmsg = (FirstMessage) msg;
          Service service = firstmsg.getService();
          if (!service.isSubscribed()) {//is not subscribe
            boolean ok = ctrl.subscribe(service,120000);
            String sid = "";
            if (ok) {//subcribe ok                         
              sid = service.getSID();
              firstmsg.setSid(sid);                       
              monitor.addListener(sid,firstmsg.getListener());           
            } else {//subscribe not ok
              Activator.logger.log(LogService.LOG_ERROR,"Sucribe failed");
            }
          } else {// already subscribe
            monitor.addListener(service.getSID(),firstmsg.getListener());
          }
        } else if (msg instanceof ListenerModified) {
          monitor.updateListener((ListenerModified)msg,subQueue,ctrl);
        } else if (msg instanceof ListenerUnRegistration) {
          ListenerUnRegistration unreg=(ListenerUnRegistration)msg;
View Full Code Here

                          (String[]) (device.getDescriptions(null).get(UPnPService.TYPE));
                     
            Device cyberDevice = findDeviceCtrl(this, udn);
            Vector vec = new Vector();
            for (int i = 0; i < oldServiceType.length; i++) {
              Service ser = cyberDevice.getService(oldServicesID[i]);
              if (!(ser.getServiceType().equals(parseUSN.getServiceType())))
                          {
                vec.add(oldServicesID[i]);
              }
            }
 
View Full Code Here

   * notifierQueue.enqueue(msg); }
   */

  public Service serviceFromSid(String sid) {
    Enumeration e = devices.elements();
    Service cyberService = null;
    while (e.hasMoreElements()) {
      OSGiDeviceInfo deviceinfo = (OSGiDeviceInfo) e.nextElement();
      UPnPDevice device = deviceinfo.getOSGiDevice();
      UPnPService[] services = (UPnPService[]) device.getServices();
      UPnPServiceImpl[] servicesImpl = new UPnPServiceImpl[services.length];
      for (int i = 0; i < servicesImpl.length; i++) {
        servicesImpl[i] = (UPnPServiceImpl) services[i];
      }
      for (int i = 0; i < servicesImpl.length; i++) {
        cyberService = servicesImpl[i].getCyberService();
        boolean bool = cyberService.isSubscribed();
        if (bool) {
          if (cyberService.getSID().equals(sid)) {
            return cyberService;
          }
        }
      }
    }
View Full Code Here

   * @see org.apache.felix.upnpbase.importer.MyEventListener#newEventArrived(java.lang.String,
   *      long, java.util.Dictionary)
   */
  public void newEventArrived(String uuid, long seq, PropertyList props) {
        Activator.logger.DEBUG("[Importer] newEventArrived");
    Service service = serviceFromSid(uuid);
    if (service != null) {
            int size = props.size();
            Hashtable hash = new Hashtable();
            for (int i = 0; i < size; i++) {
                Property prop = props.getProperty(i);
                String varName = prop.getName();
                String varValue = prop.getValue();
                String upnpType = service.getStateVariable(varName).getDataType();
                Object valueObj;
                try {
                    valueObj = Converter.parseString(varValue,upnpType);
                } catch (Exception e) {
                    Activator.logger.ERROR("[Importer] Bad data value in Notify event: "
                            +"var name="+varName +" value="+varValue +" type="+upnpType + "\n"+e);
                    return;
                }
                hash.put(varName, valueObj);
            }
          
      Device device = service.getDevice();
      StateChanged msg = new StateChanged(uuid, seq, hash, device, service);
      notifierQueue.enqueue(msg);
    }
  }
View Full Code Here

      hash.put(UPnPDevice.TYPE, deviceType);
      ServiceList services = device.getServiceList();
      Vector eventedSers = new Vector();

      for (int i = 0; i < services.size(); i++) {
        Service service = (Service) services.elementAt(i);
        ServiceStateTable vars = service.getServiceStateTable();
        for (int j = 0; j < vars.size(); j++) {
          StateVariable var = (StateVariable) vars.elementAt(j);
          if (var.isSendEvents()) {
            eventedSers.add(service);
            break;
          }
        }
      }

      for (int i = 0; i < listeners.length; i++) {
        UPnPEventListener listener = (UPnPEventListener) context
            .getService(listeners[i]);
        Filter filter = (Filter) listeners[i]
            .getProperty(UPnPEventListener.UPNP_FILTER);
        if (filter == null) {
          for (int j = 0; j < eventedSers.size(); j++) {
            Service ser = (Service) eventedSers.elementAt(j);
            subQueue.enqueue(new FirstMessage(ser, listener));
          }
        } else {
          for (int j = 0; j < eventedSers.size(); j++) {
            Service ser = (Service) eventedSers.elementAt(j);
            serviceID = ser.getServiceID();
            serviceType = ser.getServiceType();
            hash.put(UPnPService.ID, serviceID);
            hash.put(UPnPService.TYPE, serviceType);
            boolean bool = filter.match(hash);
            if (bool) {
              subQueue.enqueue(new FirstMessage(ser, listener));
View Full Code Here

      return;
   
   
   
    for (int i = 0; i < services.length; i++) {
      Service ser = new Service();
      devUPnP.addService(ser);
      ser.setServiceType(services[i].getType() );
      ser.setServiceID(services[i].getId());
      ser.setSCPDURL(id+"/service/"+i+"/gen-desc.xml");
      ser.setDescriptionURL(id+"/service/"+i+"/gen-desc.xml");
      ser.setControlURL(id+"/service/"+i+"/ctrl");
      ser.setEventSubURL(id+"/service/"+i+"/event");

      UPnPAction[] actions = services[i].getActions();
      for (int j = 0; j < actions.length; j++) {
                boolean valid=true;
        Action act = new Action(ser.getServiceNode());
        act.setName(actions[j].getName());
        ArgumentList al = new ArgumentList();
       
        String[] names=actions[j].getInputArgumentNames();       
        if(names!=null){
          for (int k = 0; k < names.length; k++) {
                        UPnPStateVariable variable = actions[j].getStateVariable(names[k]);
                        if(variable==null){
                            /*
                             * //TODO Create a stict and relaxed behavior of the base driver which
                             * export as much it can or export only 100% complaint UPnPDevice service
                             */
                            Activator.logger.WARNING(
                                "UPnP Device that cotains serviceId="+id+" contains the action "
                                +actions[j].getName()+" with the Input argument "+names[k]
                                +" not related to any UPnPStateVariable. Thus this action won't be exported");
                            valid=false;
                            break;
                        }
                        Argument a = new Argument();
            a.setDirection(Argument.IN);
            a.setName(names[k]);
            a.setRelatedStateVariableName(variable.getName());           
            al.add(a);           
          }
        }
        names=actions[j].getOutputArgumentNames();
        if(names!=null && valid){
          for (int k = 0; k < names.length; k++) {
                        UPnPStateVariable variable = actions[j].getStateVariable(names[k]);
                        if(variable==null){
                            /*
                             * //TODO Create a stict and relaxed behavior of the base driver which
                             * export as much it can or export only 100% complaint UPnPDevice service
                             */
                            Activator.logger.WARNING(
                                "UPnP Device that cotains serviceId="+id+" contains the action "
                                +actions[j].getName()+" with the Output argument "+names[k]
                                +" not related to any UPnPStateVariable. Thus this action won't be exported");                           
                        }
            Argument a = new Argument();
            a.setDirection(Argument.OUT);
            a.setName(names[k]);
            a.setRelatedStateVariableName(variable.getName());           
            al.add(a);           
          }
        }
                if(valid) {
            act.setArgumentList(al);
            ser.addAction(act);
                }
      }     
     
      UPnPStateVariable[] vars = services[i].getStateVariables();
      for (int j = 0; j < vars.length; j++) {
        StateVariable var = new StateVariable();
        var.setDataType(vars[j].getUPnPDataType());
        var.setName(vars[j].getName());
        var.setSendEvents(vars[j].sendsEvents());
        String[] values = vars[j].getAllowedValues();
        if(values!=null){
          AllowedValueList avl = new AllowedValueList(values);
          var.setAllowedValueList(avl);
        }else if(vars[j].getMaximum()!= null){
          AllowedValueRange avr = new AllowedValueRange(
              vars[j].getMaximum(),
              vars[j].getMinimum(),
              vars[j].getStep()
            );
          var.setAllowedValueRange(avr);
        }
        if(vars[j].getDefaultValue()!=null)
          try {
            var.setDefaultValue(Converter.toString(
                vars[j].getDefaultValue(),vars[j].getUPnPDataType()
              ));
          } catch (Exception ignored) {
          }
        ser.addStateVariable(var);       
      }
           
      Activator.bc.ungetService(sr);
    }
   
View Full Code Here

        Device device= myCtrl.getDevice(udn);
        if (device == null) {
            logger.WARNING("getSCPDURL():: No device data available for UDN: "+udn);
            return null;
        }
        Service service = device.getService(serviceId);
        if (service == null) {
            logger.WARNING("getSCPDURL():: No service data available for serviceId:"+serviceId + " of UDN " + udn);
            return null;
        }
        String scpd = service.getSCPDURL().trim();
        return resolveRelativeLink(device,scpd);
    }
View Full Code Here

TOP

Related Classes of org.cybergarage.upnp.Service

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.