DALI Library for Arduino/AVR
Loading...
Searching...
No Matches
Dali.h
Go to the documentation of this file.
1/***********************************************************************
2 * This library is free software; you can redistribute it and/or *
3 * modify it under the terms of the GNU Lesser General Public *
4 * License as published by the Free Software Foundation; either *
5 * version 2.1 of the License, or (at your option) any later version. *
6 * *
7 * This library is distributed in the hope that it will be useful, *
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
10 * Lesser General Public License for more details. *
11 * *
12 * You should have received a copy of the GNU Lesser General Public *
13 * License along with this library; if not, write to the Free Software *
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
15 * MA 02110-1301 USA *
16 ***********************************************************************/
17
41#ifndef DALI_H
42#define DALI_H
43
44#include <arduino.h>
45#include "dalibus.h"
46
50class DaliClass {
51 public:
53 enum daliCmd {
54 CMD_OFF = 0, CMD_UP = 1, CMD_DOWN = 2, CMD_STEP_UP = 3, CMD_STEP_DOWN = 4,
55 CMD_RECALL_MAX = 5, CMD_RECALL_MIN = 6, CMD_STEP_DOWN_AND_OFF = 7, CMD_ON_AND_STEP_UP = 8,
56 CMD_GO_TO_LAST = 10, // DALI-2
57 CMD_GO_TO_SCENE = 16,
58 CMD_RESET = 32, CMD_ARC_TO_DTR = 33,
59 CMD_SAVE_VARS = 34, CMD_SET_OPMODE = 35, CMD_RESET_MEM = 36, CMD_IDENTIFY = 37, // DALI-2
60 CMD_DTR_AS_MAX = 42, CMD_DTR_AS_MIN = 43, CMD_DTR_AS_FAIL = 44, CMD_DTR_AS_POWER_ON = 45, CMD_DTR_AS_FADE_TIME = 46, CMD_DTR_AS_FADE_RATE = 47,
61 CMD_DTR_AS_EXT_FADE_TIME = 48, // DALI-2
62 CMD_DTR_AS_SCENE = 64, CMD_REMOVE_FROM_SCENE = 80,
63 CMD_ADD_TO_GROUP = 96, CMD_REMOVE_FROM_GROUP = 112,
64 CMD_DTR_AS_SHORT = 128,
65 CMD_QUERY_STATUS = 144, CMD_QUERY_BALLAST = 145, CMD_QUERY_LAMP_FAILURE = 146, CMD_QUERY_LAMP_POWER_ON = 147, CMD_QUERY_LIMIT_ERROR = 148,
66 CMD_QUERY_RESET_STATE = 149, CMD_QUERY_MISSING_SHORT = 150, CMD_QUERY_VERSION = 151, CMD_QUERY_DTR = 152, CMD_QUERY_DEVICE_TYPE = 153,
67 CMD_QUERY_PHYS_MIN = 154, CMD_QUERY_POWER_FAILURE = 155,
68 CMD_QUERY_OPMODE = 158, CMD_QUERY_LIGHTTYPE = 159, // DALI-2
69 CMD_QUERY_ACTUAL_LEVEL = 160, CMD_QUERY_MAX_LEVEL = 161, CMD_QUERY_MIN_LEVEL = 162, CMD_QUERY_POWER_ON_LEVEL = 163, CMD_QUERY_FAIL_LEVEL = 164, CMD_QUERY_FADE_SPEEDS = 165,
70 CMD_QUERY_SPECMODE = 166, CMD_QUERY_NEXT_DEVTYPE = 167, CMD_QUERY_EXT_FADE_TIME = 168, CMD_QUERY_CTRL_GEAR_FAIL = 169, // DALI-2
71 CMD_QUERY_SCENE_LEVEL = 176,
72 CMD_QUERY_GROUPS_0_7 = 192, CMD_QUERY_GROUPS_8_15 = 193,
73 CMD_QUERY_ADDRH = 194, CMD_QUERY_ADDRM = 195, CMD_QUERY_ADDRL = 196
74 };
75
78 CMD_TERMINATE = 256, CMD_SET_DTR = 257,
79 CMD_INITIALISE = 258, CMD_RANDOMISE = 259, CMD_COMPARE = 260, CMD_WITHDRAW = 261,
80 CMD_SEARCHADDRH = 264, CMD_SEARCHADDRM = 265, CMD_SEARCHADDRL = 266,
81 CMD_PROGRAMSHORT = 267, CMD_VERIFYSHORT = 268, CMD_QUERY_SHORT = 269, CMD_PHYS_SEL = 270,
82 CMD_ENABLE_DT = 272, CMD_LOAD_DTR1 = 273, CMD_LOAD_DTR2 = 274, CMD_WRITE_MEM_LOC = 275,
83 CMD_WRITE_MEM_LOC_NOREPLY = 276 // DALI-2
84 };
85
88 FLUORESCENT_LAMP,
89 EMERGENCY_LIGHT,
90 DISCHARGE_LAMP,
91 HALOGEN_LAMP,
92 INCANDESCENT_LAMP,
93 DC_CONVERTER,
94 LED_MODULE,
95 SWITCH,
96 COLOUR_CTRL,
97 SEQUENCER,
98 OPTICAL_CTRL
99 };
100
103 DALI_SHORT_ADDRESS = 0,
104 DALI_GROUP_ADDRESS = 1
105 };
106
116 void begin(byte tx_pin, byte rx_pin, bool active_low = true);
117
127 daliReturnValue sendArc(byte address, byte value, byte addr_type = DALI_SHORT_ADDRESS);
128
137 daliReturnValue sendArcWait(byte address, byte value, byte addr_type = DALI_SHORT_ADDRESS, byte timeout = 50);
138
149 daliReturnValue sendCmd(byte address, byte command, byte addr_type = DALI_SHORT_ADDRESS);
150
157 int sendCmdWait(byte address, byte command, byte addr_type = DALI_SHORT_ADDRESS, byte timeout = 50);
158
169 daliReturnValue sendSpecialCmd(word command, byte value = 0);
170
183 int sendSpecialCmdWait(word command, byte value = 0, byte timeout = 50);
184
193 int sendRawWait(const byte * message, byte length, byte timeout = 50);
194
207 void commission(byte startAddress = 0, bool onlyNew = false);
208
210 void commission_tick();
211
214
217
220 COMMISSION_OFF, COMMISSION_INIT, COMMISSION_INIT2, COMMISSION_WRITE_DTR, COMMISSION_REMOVE_SHORT, COMMISSION_REMOVE_SHORT2, COMMISSION_RANDOM, COMMISSION_RANDOM2, COMMISSION_RANDOMWAIT,
221 COMMISSION_STARTSEARCH, COMMISSION_SEARCHHIGH, COMMISSION_SEARCHMID, COMMISSION_SEARCHLOW,
222 COMMISSION_COMPARE, COMMISSION_CHECKFOUND, COMMISSION_PROGRAMSHORT,
223 COMMISSION_VERIFYSHORT, COMMISSION_VERIFYSHORTRESPONSE, COMMISSION_QUERYDEVICETYPE, COMMISSION_QUERYDEVICETYPERESPONSE,
224 COMMISSION_WITHDRAW, COMMISSION_TERMINATE
225 };
228 protected:
230 byte * prepareCmd(byte * message, byte address, byte command, byte type, byte selector);
231
233 byte * prepareSpecialCmd(byte * message, word command, byte value);
234};
235
237extern DaliClass Dali;
238
239#endif // DALI_H
DaliClass Dali
Definition: Dali.cpp:233
DALI low level interface.
daliReturnValue
Definition: DaliBus.h:42
Definition: Dali.h:50
void commission_tick()
Definition: Dali.cpp:121
int sendRawWait(const byte *message, byte length, byte timeout=50)
Definition: Dali.cpp:40
daliReturnValue sendArc(byte address, byte value, byte addr_type=DALI_SHORT_ADDRESS)
Definition: Dali.cpp:64
daliReturnValue sendSpecialCmd(word command, byte value=0)
Definition: Dali.cpp:102
byte nextShortAddress
Definition: Dali.h:213
int sendSpecialCmdWait(word command, byte value=0, byte timeout=50)
Definition: Dali.cpp:108
daliAddressTypes
Definition: Dali.h:102
daliReturnValue sendArcWait(byte address, byte value, byte addr_type=DALI_SHORT_ADDRESS, byte timeout=50)
Definition: Dali.cpp:69
int sendCmdWait(byte address, byte command, byte addr_type=DALI_SHORT_ADDRESS, byte timeout=50)
Definition: Dali.cpp:79
void begin(byte tx_pin, byte rx_pin, bool active_low=true)
Definition: Dali.cpp:36
daliDevTypes
Definition: Dali.h:87
bool commissionOnlyNew
Definition: Dali.h:216
void commission(byte startAddress=0, bool onlyNew=false)
Definition: Dali.cpp:113
commissionStateEnum
Definition: Dali.h:219
daliSpecialCmd
Definition: Dali.h:77
daliReturnValue sendCmd(byte address, byte command, byte addr_type=DALI_SHORT_ADDRESS)
Definition: Dali.cpp:74
commissionStateEnum commissionState
Definition: Dali.h:226
daliCmd
Definition: Dali.h:53
byte * prepareSpecialCmd(byte *message, word command, byte value)
Definition: Dali.cpp:94
byte * prepareCmd(byte *message, byte address, byte command, byte type, byte selector)
Definition: Dali.cpp:55