#pragma once #define ID(value) (value & 0x1F) #define STATE(value) ((value & 0x1) << 5) #define VCC(value) ((value & 0x1FFF) << 6) #define TEMP(value) (((unsigned long)value & 0x1FF) << 19) #define HUMIDITY(value) (((unsigned long)value & 0x7F) << 19) #define TYPE(value) (((unsigned long)value & 0xF) << 28) #define GET_TYPE(value) (((unsigned long)value >> 28) & 0xF) #define GET_TEMP(value) (((unsigned long)value >> 19) & 0x1FF) #define GET_HUMIDITY(value) (((unsigned long)value >> 19) & 0x7F) #define GET_VCC(value) ((value >> 6) & 0x1FFF) #define GET_STATE(value) ((value >> 5) & 0x1) enum SensorType { HUMIDITY = 5, TEMPERATURE = 6, CONTACT = 7 }; enum SensorId : int { WINDOW1 = 1, WINDOW2 = 2, WATER_SENSOR = 3, TEMP_SENSOR = 4, LIGHT_SENSOR = 5, MOVEMENT_SENSOR = 6 };