agrobot_base/AgroBase/AgroBase/Models/Operadores/ManagerWorkerModel.cs

154 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using static AgroBase.Models.Enums;
namespace AgroBase.Models.Operadores
{
public class ManagerWorkerModel
{
public bool Iniciado { get; set; }
public DateTime IniciadoEm { get; set; }
public bool Pronto { get; set; }
public DateTime ProntoEm { get; set; }
public DateTime UltimaMensagem { get; set; }
//public WorkerMessageModel<ManagerWorkerMessageResponseModel> Leitura { get; set; }
public ManagerWorkerModel Clone()
{
return new ManagerWorkerModel()
{
Iniciado = Iniciado,
IniciadoEm = IniciadoEm,
Pronto = Pronto,
ProntoEm = ProntoEm,
//Leitura = Leitura.Clone()
};
}
public void ReiniciarEstado()
{
Iniciado = false;
IniciadoEm = DateTime.MinValue;
Pronto = false;
ProntoEm = DateTime.MinValue;
//Leitura = new WorkerMessageModel<ManagerWorkerMessageResponseModel>();
}
}
public class ManagerWorkerMessageResponseModel
{
public bool configurado { get; set; }
public long tempo_aguardando { get; set; }
public StatusOperacao status_operacao { get; set; }
public bool operacao_liberada { get; set; }
public ManagerWorkerMessageResponseComandoModel comando { get; set; }
public List<ManagerWorkerMessageResponseModulosPendentesModel> status_modulos { get; set; }
}
public class ManagerWorkerMessageResponseComandoModel
{
public double percentual_velocidade { get; set; }
public bool em_freio { get; set; }
public double angulo { get; set; }
public TipoMovimentoDirecional tipo_movimento { get; set; }
public List<double[]> simulacao { get; set; }
public int heartbeat { get; set; }
public double latencia { get; set; }
public double erro_lateral { get; set; }
public Dictionary<string, ManagerWorkerMessageResponseDebugCustoModel> debug_custo { get; set; }
}
public class ManagerWorkerMessageResponseDebugCustoModel
{
public double angulo { get; set; }
public TipoMovimentoDirecional tipo { get; set; }
public double omega { get; set; }
public double x_sim { get; set; }
public double y_sim { get; set; }
public double theta_sim { get; set; }
public double x_alvo { get; set; }
public double y_alvo { get; set; }
public double peso_posicao { get; set; }
public double peso_orientacao { get; set; }
public double peso_suavizacao { get; set; }
public double peso_re { get; set; }
public double peso_ideal { get; set; }
public double peso_lateral { get; set; }
public Dictionary<TipoMovimentoDirecional, double> peso_tipo_movimento { get; set; }
public double erro_posicao { get; set; }
public double erro_posicao_n { get; set; }
public double erro_orientacao { get; set; }
public double erro_orientacao_n { get; set; }
public double erro_suavizacao { get; set; }
public double erro_re { get; set; }
public double erro_lateral { get; set; }
public double erro_lateral_n { get; set; }
public double custo_posicao { get; set; }
public double custo_orientacao { get; set; }
public double custo_suavizacao { get; set; }
public double custo_tipo_movimento { get; set; }
public double custo_re { get; set; }
public double custo_lateral { get; set; }
public double custo_lateral_d { get; set; }
public double custo_flip { get; set; }
public double custo_visual_worker { get; set; }
public double custo_map { get; set; }
public double custo_total { get; set; }
public bool melhor { get; set; }
}
public class CandMpcKey
{
public TipoMovimentoDirecional Tipo { get; set; }
public double AngDeg { get; set; }
public static CandMpcKey ParseKey(string k)
{
var partes = k.Split('_');
TipoMovimentoDirecional tipo = (TipoMovimentoDirecional)(Convert.ToInt32(partes[0]));
double ang = (Convert.ToDouble(partes[1].Replace(".", ",")));
return new CandMpcKey() { Tipo = tipo, AngDeg = ang };
}
}
public class ManagerWorkerMessageResponseModulosPendentesModel
{
public T_Code modulo { get; set; }
public StatusModulo status { get; set; }
public bool conectado { get; set; }
public double saude { get; set; }
public List<string> motivos { get; set; }
public List<ManagerWorkerMessageResponseModulosPendentesSaudeModel> saude_individual { get; set; }
public List<ManagerWorkerMessageResponseModulosPendentesSaudeCondicoesModel> condicoes_operacionais { get; set; }
}
public class ManagerWorkerMessageResponseModulosPendentesSaudeModel
{
public string id { get; set; }
public string label { get; set; }
public StatusModulo status { get; set; }
public double saude { get; set; }
public List<string> motivos { get; set; }
public List<ManagerWorkerMessageResponseModulosPendentesSaudeCondicoesModel> condicoes_operacionais { get; set; }
public bool em_uso { get; set; }
}
public class ManagerWorkerMessageResponseModulosPendentesSaudeCondicoesModel
{
public double valor { get; set; }
public double severidade { get; set; }
public string descricao { get; set; }
}
public enum ManagerWorkerCommandType
{
ScriptCarregado = 1,
IniciarMPC = 2,
AtualizarDadosControle = 3,
EnviarDadosControle = 4,
FinalizarOperacao = 5,
}
}