using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crestron.SimplSharp;
using PepperDash.Essentials.Core.Config;
using Newtonsoft.Json;
namespace PepperDash.Essentials.Core
{
public static class JoinMapHelper
{
///
/// Attempts to get the serialized join map from config
///
///
///
public static string GetJoinMapForDevice(string joinMapKey)
{
if (string.IsNullOrEmpty(joinMapKey))
return null;
var joinMap = ConfigReader.ConfigObject.JoinMaps[joinMapKey];
if (joinMap != null)
{
return joinMap;
}
else
return null;
}
}
public abstract class JoinMapBase
{
///
/// Modifies all the join numbers by adding the offset. This should never be called twice
///
///
public abstract void OffsetJoinNumbers(uint joinStart);
public Dictionary Joins { get; set; }
}
///
/// Read = Provides feedback to SIMPL
/// Write = Responds to sig values from SIMPL
///
public enum eJoinCapabilities
{
Read = 1,
Write = 2
}
public enum eJoinType
{
Digital = 1,
Analog = 2,
Serial = 4
}
///
/// Data describing the join
///
public class JoinMetadata
{
///
/// A label for the join to better describe it's usage
///
[JsonProperty("label")]
public string Label { get; set; }
///
/// Signal type(s)
///
[JsonProperty("joinType")]
public eJoinType JoinType { get; set; }
///
/// Join number (based on join offset value)
///
[JsonProperty("joinNumber")]
public uint JoinNumber { get; set; }
///
/// Join range span. If join indicates the start of a range of joins, this indicated the maximum number of joins in the range
///
[JsonProperty("joinSpan")]
public uint JoinSpan { get; set; }
///
/// Indicates whether the join is read and/or write
///
[JsonProperty("joinCapabilities")]
public eJoinCapabilities JoinCapabilities { get; set; }
}
}