/// <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); } }
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"))); } }
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; } }
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); } }
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); } }
/// <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); } }
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"); } }