215 lines
11 KiB
C
215 lines
11 KiB
C
#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
|