Exemplo n.º 1
0
        /// <summary>
        /// This method is responsible for informing the unknown equivalent driverss.
        /// </summary>
        /// <param name="serviceCall"></param>
        /// <param name="serviceResponse"></param>
        /// <param name="messageContext"></param>
        public void TellEquivalentDrivers(Call serviceCall, Response serviceResponse, CallContext messageContext)
        {
            try
            {
                string         equivalentDrivers     = serviceCall.GetParameterString(DRIVERS_NAME_KEY);
                IList <object> equivalentDriversJson = Json.Deserialize(equivalentDrivers) as IList <object>;
                List <object>  jsonList = new List <object>();
                IDictionary <string, object> responseData = new Dictionary <string, object>();

                for (int i = 0; i < equivalentDriversJson.Count; i++)
                {
                    string   equivalentDriver = equivalentDriversJson[i] as string;
                    UpDriver driver           = gateway.driverManager.GetDriverFromEquivalanceTree(equivalentDriver);

                    if (driver != null)
                    {
                        AddToEquivalanceList(jsonList, driver);
                    }
                }

                responseData[INTERFACES_KEY] = Json.Serialize(jsonList);
                serviceResponse.responseData = responseData;
            }
            catch (System.Exception e)
            {
                logger.LogError("Problems on equivalent drivers. " + e.StackTrace);
            }
        }
Exemplo n.º 2
0
 public void Animate(Call call, Response response, CallContext context)
 {
     JSON js = new JSON();
     js.serialized = call.GetParameterString("animation");
     lock (queueLock) {
         callQueue.Enqueue(new GuideCall(AvatarGuide.State.ANIMATING, (AvatarAnimation)js.ToJSON("avatarAnimation")));
     }
 }
Exemplo n.º 3
0
    public void RotateQuaternion(Call call, Response response, CallContext context)
    {
        string paramMember = call.GetParameterString("member");
        float[] paramRotation = (float[])call.GetParameter("rotation");

        lock (rotationLock) {
            memberRotations.Add(paramMember, paramRotation);
            eulerAngles = false;
        }
    }
Exemplo n.º 4
0
        public void Handshake(Call serviceCall, Response serviceResponse, CallContext messageContext)
        {
            string deviceParameter = serviceCall.GetParameterString(DEVICE_KEY);

            if (deviceParameter == null)
            {
                serviceResponse.error = "No 'device' parameter informed.";
                return;
            }

            try
            {
                UpDevice device = UpDevice.FromJSON(Json.Deserialize(deviceParameter));

                gateway.deviceManager.RegisterDevice(device);

                serviceResponse.AddParameter(DEVICE_KEY, Json.Serialize(gateway.currentDevice.ToJSON()));

                //TODO: actually implement the driver register for other devices...
                //Response driversResponse = gateway.CallService(device, new Call("uos.DeviceDriver", "listDrivers"));
                //object driverList = driversResponse.GetResponseData("driverList");
                //if (driverList != null)
                //{
                //    var driverMap = (IDictionary<string, object>)Json.Deserialize(driverList.ToString());
                //    // TODO: this is duplicated with DeviceManager.registerRemoteDriverInstances
                //    foreach (string id in driverMap.Keys)
                //    {
                //        UpDriver upDriver = UpDriver.FromJSON(Json.Deserialize(driverMap[id].ToString()));
                //        DriverModel driverModel = new DriverModel(id, upDriver, device.name);
                //        gateway.driverManager.Insert(driverModel);
                //    }
                //}
            }
            catch (System.Exception e)
            {
                serviceResponse.error = e.Message;
                logger.LogError("Problems on handshake: " + e.Message + "," + e.StackTrace);
            }
        }
Exemplo n.º 5
0
        public void Handshake(Call serviceCall, Response serviceResponse, CallContext messageContext)
        {
            string deviceParameter = serviceCall.GetParameterString(DEVICE_KEY);

            if (deviceParameter == null)
            {
                serviceResponse.error = "No 'device' parameter informed.";
                return;
            }

            try
            {
                UpDevice device = UpDevice.FromJSON(Json.Deserialize(deviceParameter));

                gateway.deviceManager.RegisterDevice(device);

                serviceResponse.AddParameter(DEVICE_KEY, Json.Serialize(gateway.currentDevice.ToJSON()));

                //TODO: actually implement the driver register for other devices...
                //Response driversResponse = gateway.CallService(device, new Call("uos.DeviceDriver", "listDrivers"));
                //object driverList = driversResponse.GetResponseData("driverList");
                //if (driverList != null)
                //{
                //    var driverMap = (IDictionary<string, object>)Json.Deserialize(driverList.ToString());
                //    // TODO: this is duplicated with DeviceManager.registerRemoteDriverInstances
                //    foreach (string id in driverMap.Keys)
                //    {
                //        UpDriver upDriver = UpDriver.FromJSON(Json.Deserialize(driverMap[id].ToString()));
                //        DriverModel driverModel = new DriverModel(id, upDriver, device.name);
                //        gateway.driverManager.Insert(driverModel);
                //    }
                //}
            }
            catch (System.Exception e)
            {
                serviceResponse.error = e.Message;
                logger.LogError("Problems on handshake: " + e.Message + "," + e.StackTrace);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// This method is responsible for informing the unknown equivalent driverss.
        /// </summary>
        /// <param name="serviceCall"></param>
        /// <param name="serviceResponse"></param>
        /// <param name="messageContext"></param>
        public void TellEquivalentDrivers(Call serviceCall, Response serviceResponse, CallContext messageContext)
        {
            try
            {
                string equivalentDrivers = serviceCall.GetParameterString(DRIVERS_NAME_KEY);
                IList<object> equivalentDriversJson = Json.Deserialize(equivalentDrivers) as IList<object>;
                List<object> jsonList = new List<object>();
                IDictionary<string, object> responseData = new Dictionary<string, object>();

                for (int i = 0; i < equivalentDriversJson.Count; i++)
                {
                    string equivalentDriver = equivalentDriversJson[i] as string;
                    UpDriver driver = gateway.driverManager.GetDriverFromEquivalanceTree(equivalentDriver);

                    if (driver != null)
                        AddToEquivalanceList(jsonList, driver);
                }

                responseData[INTERFACES_KEY] = Json.Serialize(jsonList);
                serviceResponse.responseData = responseData;
            }
            catch (System.Exception e)
            {
                logger.LogError("Problems on equivalent drivers. " + e.StackTrace);
            }
        }
Exemplo n.º 7
0
    public void Connect(Call call, Response response, CallContext context)
    {
        UpDevice device = context.callerDevice;
        if (device == null)
            throw new System.ArgumentNullException("device");

        string pinName = call.GetParameterString(PIN_PARAM_NAME);
        if (string.IsNullOrEmpty(pinName))
        {
            response.error = "no pin informed";
            return;
        }
        UhpPin pin;
        if (!pins.TryGetValue(pinName, out pin))
        {
            response.error = "informed pin does not exist";
            return;
        }

        lock (_lock)
        {
            HashSet<UpDevice> devices;
            if (!driverListeners.TryGetValue(pinName, out devices))
                devices = new HashSet<UpDevice>();
            devices.Add(device);
            driverListeners[pinName] = devices;
            response.AddParameter("result", "ok");
        }
    }