using System.Threading.Tasks; using Google.Protobuf.WellKnownTypes; using Grpc.Core; using Microsoft.Extensions.Logging; using NucuCarSensorsProto; namespace NucuCar.Sensors.EnvironmentSensor { /// /// EnvironmentSensor's gRPC service. /// It allows reading the sensor's data using remote procedure calls. /// public class Bme680GrpcService : EnvironmentSensorGrpcService.EnvironmentSensorGrpcServiceBase { private readonly ILogger _logger; private readonly ISensor _bme680Sensor; public Bme680GrpcService(ILogger logger, ISensor bme680Sensor) { _bme680Sensor = bme680Sensor; _logger = logger; } public override Task GetState(Empty request, ServerCallContext context) { _logger?.LogDebug($"Calling {nameof(GetState)}."); return Task.FromResult(new NucuCarSensorState() { State = _bme680Sensor.Object.GetState() }); } public override Task GetMeasurement(Empty request, ServerCallContext context) { _logger?.LogDebug($"Calling {nameof(GetMeasurement)}."); return Task.FromResult(_bme680Sensor.Object.GetMeasurement()); } } }