namespace CommonConsole { using Common.Hardware.SIRT; using Common.Hardware.SIRT.Parameters; using Common.Hardware.SIRT.Tasks; using Common.Hardware.WaterMeter.eRegister.Features; using Common.Hardware.WaterMeter.eRegister.Telegrams; using System; using System.Collections.Concurrent; using System.Linq; using System.Threading.Tasks; public static class Program { private static uint[] addresses433 = new uint[] { 4291024821, 4291175952, 4291318920, 4291369854, 4291577251, 4291721523, 4291796136, 4291922942, 4291922963, 4291011837, }; private static uint[] addresses868 = new uint[] { 0309018341, 0309023213, 0309023279, 4291094212, 4291134308, 4291657730, 4291759578, 4291808024, 4291868627, 4291922821, 4291923131, }; private static readonly ConcurrentDictionary addressesWithFrequencies = new ConcurrentDictionary(); internal enum AlarmMask { ALARM_REBOOT = 1 << 0, ALARM_LOW_BATTERY = 1 << 1, ALARM_VERY_LOW_BATTERY = 1 << 2, /* For consistency with st_alarm_bit_t only */ ALARM_CONFIG_ERROR = 1 << 3, ALARM_EMPTY_PIPE = 1 << 4, ALARM_MAGNETIC_TAMPER = 1 << 5, /* For consistency with st_alarm_bit_t only */ ALARM_REVERSE_FLOW = 1 << 6, ALARM_SUSPECT_LEAK = 1 << 7, ALARM_BROKEN_PIPE = 1 << 8, ALARM_LOW_PRESSURE = 1 << 9, ALARM_HIGH_PRESSURE = 1 << 10, ALARM_LOW_TEMPERATURE = 1 << 11, ALARM_HIGH_TEMPERATURE = 1 << 12, ALARM_RADIO_ERROR = 1 << 13, ALARM_METROLOGY_PARAMS = 1 << 14, ALARM_METROLOGY_MEASURE = 1 << 15, ALARM_MAX = 1 << 16 }; internal enum FDRMask { LOG_BILLING_COUNTER = 0x00000002, //!< BillingCounter LOG_FORWARD_COUNTER = 0x00001000, //!< ForwardCounter LOG_REVERSE_COUNTER = 0x00000004, //!< Backward or ReverseCounter LOG_MIN_FLOW_TIME = 0x00000800, //!< Date/Time of FlowMin LOG_MIN_FLOW_VAL = 0x00000400, //!< Value of FlowMin LOG_BROKEN_PIPE_FLOW_TIME = 0x00000200, //!< Date/Time of BrokenPipe LOG_BROKEN_PIPE_FLOW_VAL = 0x00000100, //!< Value of BrokenPipe LOG_CUR_FLOW_VAL = 0x00000080, //!< Current Flow Value (Average of Period) LOG_PEAK_FLOW_TIME = 0x00000040, //!< Date/Time of PeakFlow LOG_PEAK_FLOW_VAL = 0x00000020, //!< Value of PeakFlow LOG_MAX_FLOW_TIME = 0x00000010, //!< Date/Time of MaxFlow LOG_MAX_FLOW_VAL = 0x00000008, //!< Value of MaxFlow LOG_CUR_TEMP_VAL = 0x02000000, //!< Temperature Current Value LOG_MAX_TEMP_TIME = 0x00800000, //!< Temperature Maximum LOG_MAX_TEMP_VAL = 0x00400000, //!< Temperature Maximum LOG_MIN_TEMP_TIME = 0x00200000, //!< Temperature Minimum LOG_MIN_TEMP_VAL = 0x00100000, //!< Temperature Minimum LOG_CUR_PRESS_VAL = 0x01000000, //!< Pressure Current Value LOG_MAX_PRESS_TIME = 0x00080000, //!< Pressure Maximum Time LOG_MAX_PRESS_VAL = 0x00040000, //!< Pressure Maximum LOG_MIN_PRESS_TIME = 0x00020000, //!< Pressure Minimum Time LOG_MIN_PRESS_VAL = 0x00010000, //!< Pressure Minimum LOG_ALARM_STATE = 0x00000001, //!< AlarmState (16 bits) LOG_EXT_ALARM_STATE = 0x04000000,    //