#pragma once #define paramDelay(time) (uint32_t)( \ (time & 0xC000) == 0xC000 ? (time & 0x3FFF) * 100 : \ (time & 0xC000) == 0x0000 ? (time & 0x3FFF) * 1000 : \ (time & 0xC000) == 0x4000 ? (time & 0x3FFF) * 60000 : \ (time & 0xC000) == 0x8000 ? ((time & 0x3FFF) > 1000 ? 3600000 : \ (time & 0x3FFF) * 3600000 ) : 0 ) #define MAIN_FirmwareName "SmartHomeDisplay" #define MAIN_OpenKnxId 0xAB #define MAIN_ApplicationNumber 206 #define MAIN_ApplicationVersion 4 #define MAIN_ApplicationEncoding iso-8859-15 #define MAIN_ParameterSize 2 #define MAIN_MaxKoNumber 1020 #define MAIN_OrderNumber "IA4313" // Parameter with single occurrence #define SC_Section_Count 0 // uint8_t // Anzahl Bereiche #define ParamSC_Section_Count (knx.paramByte(SC_Section_Count)) #define SC_ChannelCount 1 // Parameter per channel #define SC_ParamBlockOffset 1 #define SC_ParamBlockSize 1 #define SC_ParamCalcIndex(index) (index + SC_ParamBlockOffset + _channelIndex * SC_ParamBlockSize) #define SC_fAFunctionType 0 // 1 Bit, Bit 7 #define SC_fAFunctionTypeMask 0x80 #define SC_fAFunctionTypeShift 7 #define SC_fAOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fBFunctionType 0 // 1 Bit, Bit 7 #define SC_fBFunctionTypeMask 0x80 #define SC_fBFunctionTypeShift 7 #define SC_fBOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fCFunctionType 0 // 1 Bit, Bit 7 #define SC_fCFunctionTypeMask 0x80 #define SC_fCFunctionTypeShift 7 #define SC_fCOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fDFunctionType 0 // 1 Bit, Bit 7 #define SC_fDFunctionTypeMask 0x80 #define SC_fDFunctionTypeShift 7 #define SC_fDOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fEFunctionType 0 // 1 Bit, Bit 7 #define SC_fEFunctionTypeMask 0x80 #define SC_fEFunctionTypeShift 7 #define SC_fEOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fFFunctionType 0 // 1 Bit, Bit 7 #define SC_fFFunctionTypeMask 0x80 #define SC_fFFunctionTypeShift 7 #define SC_fFOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fGFunctionType 0 // 1 Bit, Bit 7 #define SC_fGFunctionTypeMask 0x80 #define SC_fGFunctionTypeShift 7 #define SC_fGOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fHFunctionType 0 // 1 Bit, Bit 7 #define SC_fHFunctionTypeMask 0x80 #define SC_fHFunctionTypeShift 7 #define SC_fHOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fIFunctionType 0 // 1 Bit, Bit 7 #define SC_fIFunctionTypeMask 0x80 #define SC_fIFunctionTypeShift 7 #define SC_fIOOnKODpt 1 // 8 Bits, Bit 7-0 #define SC_fJFunctionType 0 // 1 Bit, Bit 7 #define SC_fJFunctionTypeMask 0x80 #define SC_fJFunctionTypeShift 7 #define SC_fJOOnKODpt 1 // 8 Bits, Bit 7-0 // Funktionstyp #define ParamSC_fAFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fAFunctionType)) & SC_fAFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fAOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fAOOnKODpt))) // Funktionstyp #define ParamSC_fBFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fBFunctionType)) & SC_fBFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fBOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fBOOnKODpt))) // Funktionstyp #define ParamSC_fCFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fCFunctionType)) & SC_fCFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fCOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fCOOnKODpt))) // Funktionstyp #define ParamSC_fDFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fDFunctionType)) & SC_fDFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fDOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fDOOnKODpt))) // Funktionstyp #define ParamSC_fEFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fEFunctionType)) & SC_fEFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fEOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fEOOnKODpt))) // Funktionstyp #define ParamSC_fFFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fFFunctionType)) & SC_fFFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fFOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fFOOnKODpt))) // Funktionstyp #define ParamSC_fGFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fGFunctionType)) & SC_fGFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fGOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fGOOnKODpt))) // Funktionstyp #define ParamSC_fHFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fHFunctionType)) & SC_fHFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fHOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fHOOnKODpt))) // Funktionstyp #define ParamSC_fIFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fIFunctionType)) & SC_fIFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fIOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fIOOnKODpt))) // Funktionstyp #define ParamSC_fJFunctionType ((bool)(knx.paramByte(SC_ParamCalcIndex(SC_fJFunctionType)) & SC_fJFunctionTypeMask)) // DPT des Kommunikationsobjekts #define ParamSC_fJOOnKODpt (knx.paramByte(SC_ParamCalcIndex(SC_fJOOnKODpt))) // deprecated #define SC_KoOffset 20 // Communication objects per channel (multiple occurrence) #define SC_KoBlockOffset 20 #define SC_KoBlockSize 20 #define SC_KoCalcNumber(index) (index + SC_KoBlockOffset + _channelIndex * SC_KoBlockSize) #define SC_KoCalcIndex(number) ((number >= SC_KoCalcNumber(0) && number < SC_KoCalcNumber(SC_KoBlockSize)) ? (number - SC_KoBlockOffset) % SC_KoBlockSize : -1) #define SC_KoCalcChannel(number) ((number >= SC_KoBlockOffset && number < SC_KoBlockOffset + SC_ChannelCount * SC_KoBlockSize) ? (number - SC_KoBlockOffset) / SC_KoBlockSize : -1) #define SC_KoKOf-%TT%%CC%100__ %CC%001 #define SC_KoKOf-%TT%%CC%101__ %CC%002 #define SC_KoKOf-%TT%%CC%200__ %CC%003 #define SC_KoKOf-%TT%%CC%201__ %CC%004 #define SC_KoKOf-%TT%%CC%300__ %CC%005 #define SC_KoKOf-%TT%%CC%301__ %CC%006 #define SC_KoKOf-%TT%%CC%400__ %CC%007 #define SC_KoKOf-%TT%%CC%401__ %CC%008 #define SC_KoKOf-%TT%%CC%500__ %CC%009 #define SC_KoKOf-%TT%%CC%501__ %CC%010 #define SC_KoKOf-%TT%%CC%600__ %CC%011 #define SC_KoKOf-%TT%%CC%601__ %CC%012 #define SC_KoKOf-%TT%%CC%700__ %CC%013 #define SC_KoKOf-%TT%%CC%701__ %CC%014 #define SC_KoKOf-%TT%%CC%800__ %CC%015 #define SC_KoKOf-%TT%%CC%801__ %CC%016 #define SC_KoKOf-%TT%%CC%900__ %CC%017 #define SC_KoKOf-%TT%%CC%901__ %CC%018 #define SC_KoKOf-%TT%%CC%1000__ %CC%019 #define SC_KoKOf-%TT%%CC%1001__ %CC%020 // Eingang %CC%001 #define KoSC_KOf-%TT%%CC%100__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%100__))) // Ausgang %CC%002 #define KoSC_KOf-%TT%%CC%101__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%101__))) // Eingang %CC%003 #define KoSC_KOf-%TT%%CC%200__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%200__))) // Ausgang %CC%004 #define KoSC_KOf-%TT%%CC%201__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%201__))) // Eingang %CC%005 #define KoSC_KOf-%TT%%CC%300__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%300__))) // Ausgang %CC%006 #define KoSC_KOf-%TT%%CC%301__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%301__))) // Eingang %CC%007 #define KoSC_KOf-%TT%%CC%400__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%400__))) // Ausgang %CC%008 #define KoSC_KOf-%TT%%CC%401__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%401__))) // Eingang %CC%009 #define KoSC_KOf-%TT%%CC%500__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%500__))) // Ausgang %CC%010 #define KoSC_KOf-%TT%%CC%501__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%501__))) // Eingang %CC%011 #define KoSC_KOf-%TT%%CC%600__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%600__))) // Ausgang %CC%012 #define KoSC_KOf-%TT%%CC%601__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%601__))) // Eingang %CC%013 #define KoSC_KOf-%TT%%CC%700__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%700__))) // Ausgang %CC%014 #define KoSC_KOf-%TT%%CC%701__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%701__))) // Eingang %CC%015 #define KoSC_KOf-%TT%%CC%800__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%800__))) // Ausgang %CC%016 #define KoSC_KOf-%TT%%CC%801__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%801__))) // Eingang %CC%017 #define KoSC_KOf-%TT%%CC%900__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%900__))) // Ausgang %CC%018 #define KoSC_KOf-%TT%%CC%901__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%901__))) // Eingang %CC%019 #define KoSC_KOf-%TT%%CC%1000__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%1000__))) // Ausgang %CC%020 #define KoSC_KOf-%TT%%CC%1001__ (knx.getGroupObject(SC_KoCalcNumber(SC_KoKOf-%TT%%CC%1001__))) #define BASE_KoTime 1 #define BASE_KoDate 2 #define BASE_KoDateTime 3 #define BASE_KoNight/Day 4 // Uhrzeit #define KoBASE_Time (knx.getGroupObject(BASE_KoTime)) // Datum #define KoBASE_Date (knx.getGroupObject(BASE_KoDate)) // Uhrzeit/Datum #define KoBASE_DateTime (knx.getGroupObject(BASE_KoDateTime)) // Nacht/Tag #define KoBASE_Night/Day (knx.getGroupObject(BASE_KoNight/Day)) #ifdef MAIN_FirmwareRevision #ifndef FIRMWARE_REVISION #define FIRMWARE_REVISION MAIN_FirmwareRevision #endif #endif #ifdef MAIN_FirmwareName #ifndef FIRMWARE_NAME #define FIRMWARE_NAME MAIN_FirmwareName #endif #endif