protected async Task TurnOff(TurnOffCommand message) { byte[] package = PreparePackage(message, nameof(RemoteSocketCommand.TurnOff), out var dipswitchCode); var cmd = I2cCommand.Create(_I2cAddress, package); await MessageBroker.SendToService(cmd); await UpdateState(dipswitchCode); }
protected async Task TurnOn(TurnOnCommand message) { byte[] package = PreparePackage(message, nameof(RemoteSocketCommand.TurnOn), out var dipswitchCode); Logger.LogInformation($"Sending code {dipswitchCode.Code}"); var cmd = I2cCommand.Create(_I2cAddress, package); await MessageBroker.SendToService(cmd); await UpdateState(dipswitchCode); }
private void RegisterPinNumber(DiscoverQuery message) { var pin = message.AsByte(MessageProperties.PinNumber); var registrationMessage = new byte[] { 1, pin }; if (!_state.ContainsKey(pin)) { _state.Add(pin, 0); } MessageBroker.SendToService(I2cCommand.Create(_i2cAddress, registrationMessage)); }
protected void Handle(I2cCommand command) { var address = command.Address; var data = command.Body; CheckAddress(address); try { _nativeI2CBus.Write(address, data); } catch (Exception exception) { Logger.LogWarning(exception, $"Error while accessing I2C device with address {address}. {exception.Message}"); } }
private async Task SetPortState(int pinNumber, bool state) { var newState = _driver.GenerateNewState(pinNumber, state); try { await MessageBroker.SendToService(I2cCommand.Create(_i2cAddress, newState)); _driver.AcceptNewState(); } catch (Exception) { _driver.RevertNewState(); throw; } Logger.LogTrace("Board '" + Uid + "' committed state '" + _driver.GetState().ToBinaryString() + "'."); }
protected Task Handle(SendCodeCommand message) { var commandCode = message.AsUint(MessageProperties.Code); var system = message.AsInt(MessageProperties.System); var bits = message.AsInt(MessageProperties.Bits); var repeat = message.AsInt(MessageProperties.Repeat, DEAFULT_REPEAT); var package = new List <byte> { 3, (byte)repeat, (byte)system, (byte)bits }; package.AddRange(BitConverter.GetBytes(commandCode)); var code = package.ToArray(); var cmd = I2cCommand.Create(_I2cAddress, package.ToArray()); return(MessageBroker.SendToService(cmd)); }
private Task ConfigureDriver() { return(MessageBroker.SendToService(I2cCommand.Create(_i2cAddress, _driver.Configure(_firstPortWriteMode, _secondPortWriteMode)))); }