private void SetDeviceStateProperties(DeviceStatePropertiesQueue parameters) { lock (state) { try { if (Devices.NetworkSpine.State == SpineClientWrap.States.DISCONNECTED || parameters.Count == 0) { // silenciosamente, ignoro el commit pues no tengo spine a la vista. // o no nay nada en la cola de actualizacion. STrace.Debug(typeof(DeviceStateWrap).FullName, String.Format("SetDeviceStateProperty[DESCARTA]: id={0} SpineState={1} Paramenters_Count={2}", id, Devices.NetworkSpine.State, parameters.Count)); return; } STrace.Debug(typeof(DeviceStateWrap).FullName, String.Format("SetDeviceStateProperty[INICIA]: id={0} Properties_Count={1} QueryState={2}", id, parameters.Count, State)); var asyncCallback = new AsyncCallback(SetDeviceStatePropertyAsyncCallbackHandler); // preparo el cliente. var remoteAsyncDelegate = new SetDeviceStatePropertiesHandler(Devices.NetworkSpine.SetDeviceStateProperties); var asyncCallBackData = new SetDeviceStatePropertiesData { RemoteProperties = parameters, RemoteAsyncDelegate = remoteAsyncDelegate }; // lanzamos el evento. remoteAsyncDelegate.BeginInvoke(id, parameters, asyncCallback, asyncCallBackData); } catch (Exception e) { STrace.Exception(typeof(DeviceStateWrap).FullName, e); } } }
public void Commit() { var queue = new DeviceStatePropertiesQueue(); var counters_queue = new DeviceStateCountersQueue(); EnqueueProperty(queue, qTreeState); EnqueueProperty(queue, type); EnqueueProperty(queue, storageMediaFailure); EnqueueProperty(queue, transientDeviceNetworkPath); EnqueueProperty(queue, state); EnqueueProperty(queue, lastLoginGPSPoint); EnqueueProperty(queue, lastKnownGPSPoint); EnqueueProperty(queue, lastLogin); EnqueueProperty(queue, lastReceivedTrackingData); EnqueueProperty(queue, lastReceivedEventData); EnqueueProperty(queue, clockSlice); EnqueueProperty(queue, qtreeRevision); EnqueueProperty(queue, firmwareVersion); EnqueueProperty(queue, xbeeFirmware); EnqueueProperty(queue, haveDisplay); SetDeviceStateProperties(queue); // contadores EnqueueCounter(counters_queue, flashCounter); EnqueueCounter(counters_queue, crapReceivedCounter); UpdateDeviceStateCounters(counters_queue); changes_to_commit = ChangesToCommit; //STrace.Trace(typeof(DeviceStateWrap).FullName,0, "DS[{0}]: COMMIT", id); }
private static void EnqueueProperty <FTYPE>(DeviceStatePropertiesQueue queue, WrappedProperty <FTYPE> property) { if (property.DeviceStateProperty.PendingCommits <= 0 || !property.Initialized) { return; } queue.Enqueue(property.DeviceStateProperty); }
public bool SetDeviceStateProperties(short device_id, DeviceStatePropertiesQueue properties) { try { return(State != States.DISCONNECTED && SpineClient.Spine.SetDeviceStateProperties(device_id, properties)); } catch (Exception e) { STrace.Exception(GetType().FullName, e); STrace.Debug(GetType().FullName, String.Format("SPINE_CLIENT_WRAP/ERROR: No se pudo actualizar las propiedades del dispositivo {0}", device_id)); State = States.DISCONNECTED; SpineClient = null; } return(false); }