DALI send/recv library.
DALI send/recv library
lighting control protocol.
設備照明の調光プロトコル DALI を送受信するライブラリです。
DALI インターフェースの回路図などは次を参照。
- http://ww1.microchip.com/downloads/jp/AppNotes/01465A_JP.pdf
- https://www.mouser.com/pdfdocs/AN11174.pdf
DALI.h@0:6cb7026982fc, 2020-07-22 (annotated)
- Committer:
- okini3939
- Date:
- Wed Jul 22 03:04:04 2020 +0000
- Revision:
- 0:6cb7026982fc
- Child:
- 1:319d52b5116b
1st build;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:6cb7026982fc | 1 | /* |
okini3939 | 0:6cb7026982fc | 2 | * DALI send/recv library |
okini3939 | 0:6cb7026982fc | 3 | * Copyright (c) 2020 Hiroshi Suga |
okini3939 | 0:6cb7026982fc | 4 | * Released under the MIT License: http://mbed.org/license/mit |
okini3939 | 0:6cb7026982fc | 5 | */ |
okini3939 | 0:6cb7026982fc | 6 | |
okini3939 | 0:6cb7026982fc | 7 | /** @file |
okini3939 | 0:6cb7026982fc | 8 | * @brief DALI send/recv |
okini3939 | 0:6cb7026982fc | 9 | */ |
okini3939 | 0:6cb7026982fc | 10 | |
okini3939 | 0:6cb7026982fc | 11 | #ifndef _DALI_H_ |
okini3939 | 0:6cb7026982fc | 12 | #define _DALI_H_ |
okini3939 | 0:6cb7026982fc | 13 | |
okini3939 | 0:6cb7026982fc | 14 | #include "CBuffer.h" |
okini3939 | 0:6cb7026982fc | 15 | |
okini3939 | 0:6cb7026982fc | 16 | class DALI { |
okini3939 | 0:6cb7026982fc | 17 | public: |
okini3939 | 0:6cb7026982fc | 18 | enum DALI_FRAME { |
okini3939 | 0:6cb7026982fc | 19 | DALI_FORWARD_SHORT_DAP, |
okini3939 | 0:6cb7026982fc | 20 | DALI_FORWARD_SHORT_IAP, |
okini3939 | 0:6cb7026982fc | 21 | DALI_FORWARD_GROUP_DAP, |
okini3939 | 0:6cb7026982fc | 22 | DALI_FORWARD_GROUP_IAP, |
okini3939 | 0:6cb7026982fc | 23 | DALI_BACKWARD, |
okini3939 | 0:6cb7026982fc | 24 | }; |
okini3939 | 0:6cb7026982fc | 25 | |
okini3939 | 0:6cb7026982fc | 26 | DALI (PinName tx, PinName rx); |
okini3939 | 0:6cb7026982fc | 27 | |
okini3939 | 0:6cb7026982fc | 28 | int read (enum DALI_FRAME *frame, int *addr, int *value); |
okini3939 | 0:6cb7026982fc | 29 | int readable (); |
okini3939 | 0:6cb7026982fc | 30 | |
okini3939 | 0:6cb7026982fc | 31 | int write (enum DALI_FRAME frame, int addr, int value); |
okini3939 | 0:6cb7026982fc | 32 | |
okini3939 | 0:6cb7026982fc | 33 | private: |
okini3939 | 0:6cb7026982fc | 34 | InterruptIn _rx; |
okini3939 | 0:6cb7026982fc | 35 | DigitalOut _tx; |
okini3939 | 0:6cb7026982fc | 36 | Timeout _timer; |
okini3939 | 0:6cb7026982fc | 37 | Ticker _ticker; |
okini3939 | 0:6cb7026982fc | 38 | |
okini3939 | 0:6cb7026982fc | 39 | CircBuffer<int> *recv_buf; |
okini3939 | 0:6cb7026982fc | 40 | CircBuffer<int> *send_buf; |
okini3939 | 0:6cb7026982fc | 41 | |
okini3939 | 0:6cb7026982fc | 42 | int mode; |
okini3939 | 0:6cb7026982fc | 43 | int count; |
okini3939 | 0:6cb7026982fc | 44 | int timeflg; |
okini3939 | 0:6cb7026982fc | 45 | int recv_bit; |
okini3939 | 0:6cb7026982fc | 46 | int recv_data; |
okini3939 | 0:6cb7026982fc | 47 | |
okini3939 | 0:6cb7026982fc | 48 | int send_data; |
okini3939 | 0:6cb7026982fc | 49 | int send_bit; |
okini3939 | 0:6cb7026982fc | 50 | int halfbit; |
okini3939 | 0:6cb7026982fc | 51 | int busy; |
okini3939 | 0:6cb7026982fc | 52 | |
okini3939 | 0:6cb7026982fc | 53 | void isr_rx (); |
okini3939 | 0:6cb7026982fc | 54 | void isr_timer (); |
okini3939 | 0:6cb7026982fc | 55 | void isr_timeout (); |
okini3939 | 0:6cb7026982fc | 56 | void isr_send (); |
okini3939 | 0:6cb7026982fc | 57 | |
okini3939 | 0:6cb7026982fc | 58 | }; |
okini3939 | 0:6cb7026982fc | 59 | |
okini3939 | 0:6cb7026982fc | 60 | #endif |