using System.Threading.Tasks;
using Google.Protobuf.WellKnownTypes;
using Grpc.Core;
using Microsoft.Extensions.Logging;
using NucuCarSensorsProto;
namespace NucuCar.Sensors.Environment
{
///
/// 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());
}
}
}