DMX Library for STM devices

Dependents:   DISCO-F746NG_DMX-Test

Fork of DMX by Suga koubou

Committer:
Gottfried
Date:
Sat Dec 12 13:16:07 2015 +0000
Revision:
17:b87addd12d20
Parent:
15:4ea4a31c7609
Child:
18:e5e5eca21b4a
working for STM32 port of DMX library; Library does'nt work by now

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:cbff6bf41542 1 /*
okini3939 0:cbff6bf41542 2 * DMX512 send/recv library
okini3939 6:9e7b4eeac6ec 3 * Copyright (c) 2013 Hiroshi Suga
okini3939 0:cbff6bf41542 4 * Released under the MIT License: http://mbed.org/license/mit
okini3939 0:cbff6bf41542 5 */
okini3939 0:cbff6bf41542 6
okini3939 7:16d6874076dd 7 /** @file
okini3939 0:cbff6bf41542 8 * @brief DMX512 send/recv
okini3939 0:cbff6bf41542 9 */
okini3939 0:cbff6bf41542 10
okini3939 0:cbff6bf41542 11 #ifndef DMX_H
okini3939 0:cbff6bf41542 12 #define DMX_H
okini3939 0:cbff6bf41542 13
okini3939 0:cbff6bf41542 14 #include "mbed.h"
okini3939 14:cef8749fd54d 15 #include "RawSerial.h"
okini3939 0:cbff6bf41542 16
Gottfried 17:b87addd12d20 17 //#define DMX_UART_DIRECT
okini3939 0:cbff6bf41542 18
okini3939 9:e687f321c428 19 #define DMX_TIME_BREAK 100 // 100us (88us-1s)
okini3939 9:e687f321c428 20 #define DMX_TIME_MAB 10 // 10us (8us-1s)
okini3939 15:4ea4a31c7609 21 #define DMX_TIME_BETWEEN 200 // 10us (0-1s)
okini3939 9:e687f321c428 22 #define DMX_START_CODE 0
okini3939 0:cbff6bf41542 23
Gottfried 17:b87addd12d20 24 enum DMX_MODE
Gottfried 17:b87addd12d20 25 {
okini3939 0:cbff6bf41542 26 DMX_MODE_BEGIN,
okini3939 0:cbff6bf41542 27 DMX_MODE_START,
okini3939 0:cbff6bf41542 28 DMX_MODE_BREAK,
okini3939 0:cbff6bf41542 29 DMX_MODE_MAB,
okini3939 0:cbff6bf41542 30 DMX_MODE_DATA,
okini3939 0:cbff6bf41542 31 DMX_MODE_ERROR,
okini3939 4:dd0544c80096 32 DMX_MODE_STOP,
okini3939 0:cbff6bf41542 33 };
okini3939 0:cbff6bf41542 34
okini3939 0:cbff6bf41542 35 /** DMX512 class (sender/client)
okini3939 0:cbff6bf41542 36 */
Gottfried 17:b87addd12d20 37 class DMX
Gottfried 17:b87addd12d20 38 {
okini3939 0:cbff6bf41542 39 public:
okini3939 0:cbff6bf41542 40 /** init DMX class
Gottfried 17:b87addd12d20 41 * @param p_tx TX serial port (PC_2, PA_2)
Gottfried 17:b87addd12d20 42 * @param p_rx RX serial port (PC_2, PA_2)
Gottfried 17:b87addd12d20 43 * @param size dmx size, default = 512
okini3939 0:cbff6bf41542 44 */
Gottfried 17:b87addd12d20 45 DMX(PinName p_tx, PinName p_rx, unsigned int size = 512);
Gottfried 17:b87addd12d20 46 ~DMX();
okini3939 0:cbff6bf41542 47
okini3939 6:9e7b4eeac6ec 48 /** Send the data
okini3939 6:9e7b4eeac6ec 49 * @param addr DMX data address (0-511)
okini3939 0:cbff6bf41542 50 * @param data DMX data (0-255)
okini3939 0:cbff6bf41542 51 */
Gottfried 17:b87addd12d20 52 void put(int addr, int data);
okini3939 6:9e7b4eeac6ec 53 /** Send the data
okini3939 6:9e7b4eeac6ec 54 * @param buf DMX data buffer
okini3939 6:9e7b4eeac6ec 55 * @param addr DMX data address
okini3939 6:9e7b4eeac6ec 56 * @param len data length
okini3939 6:9e7b4eeac6ec 57 */
Gottfried 17:b87addd12d20 58 void put(unsigned char *buf, int addr = 0, int len = 0);
okini3939 0:cbff6bf41542 59
okini3939 6:9e7b4eeac6ec 60 /** Send the data
okini3939 7:16d6874076dd 61 * @param addr DMX data address (0-511)
okini3939 0:cbff6bf41542 62 * @return DMX data (0-255)
okini3939 0:cbff6bf41542 63 */
Gottfried 17:b87addd12d20 64 int get(int addr);
okini3939 6:9e7b4eeac6ec 65 /** Send the data
okini3939 6:9e7b4eeac6ec 66 * @param buf DMX data buffer
okini3939 6:9e7b4eeac6ec 67 * @param addr DMX data address
okini3939 6:9e7b4eeac6ec 68 * @param len data length
okini3939 6:9e7b4eeac6ec 69 */
Gottfried 17:b87addd12d20 70 void get(unsigned char *buf, int addr = 0, int len = 0);
okini3939 0:cbff6bf41542 71
okini3939 6:9e7b4eeac6ec 72 /** Start DMX send operation
okini3939 4:dd0544c80096 73 */
Gottfried 17:b87addd12d20 74 void start();
okini3939 6:9e7b4eeac6ec 75 /** Stop DMX send operation
okini3939 4:dd0544c80096 76 */
Gottfried 17:b87addd12d20 77 void stop();
okini3939 12:1f176eee2d28 78 /** Clear DMX data
okini3939 12:1f176eee2d28 79 */
Gottfried 17:b87addd12d20 80 void clear();
okini3939 3:2eb66b4d99bd 81
Gottfried 17:b87addd12d20 82 volatile int is_recived;
Gottfried 17:b87addd12d20 83 volatile int is_sent;
okini3939 0:cbff6bf41542 84
okini3939 0:cbff6bf41542 85 protected:
okini3939 0:cbff6bf41542 86
Gottfried 17:b87addd12d20 87 void int_timer();
Gottfried 17:b87addd12d20 88 void int_tx();
Gottfried 17:b87addd12d20 89 void int_rx();
okini3939 0:cbff6bf41542 90
okini3939 14:cef8749fd54d 91 // Serial _dmx;
okini3939 13:9841af9ac344 92 RawSerial _dmx;
okini3939 0:cbff6bf41542 93 Timeout timeout01;
Gottfried 17:b87addd12d20 94 volatile DMX_MODE mode_tx;
Gottfried 17:b87addd12d20 95 volatile DMX_MODE mode_rx;
Gottfried 17:b87addd12d20 96 volatile int addr_tx;
Gottfried 17:b87addd12d20 97 volatile int addr_rx;
Gottfried 17:b87addd12d20 98 char *data_tx;
Gottfried 17:b87addd12d20 99 char *data_rx;
okini3939 6:9e7b4eeac6ec 100
okini3939 6:9e7b4eeac6ec 101 private:
Gottfried 17:b87addd12d20 102 unsigned int myDMXSize;
Gottfried 17:b87addd12d20 103 // struct recreated from LPC port -> must be converted to STM32 port
Gottfried 17:b87addd12d20 104 typedef struct
Gottfried 17:b87addd12d20 105 {
Gottfried 17:b87addd12d20 106 uint8_t LCR; // ?
Gottfried 17:b87addd12d20 107 uint8_t LSR; // flg
Gottfried 17:b87addd12d20 108 uint8_t RBR; // read port
Gottfried 17:b87addd12d20 109 uint8_t THR; // ?
Gottfried 17:b87addd12d20 110 }DUMMY_UART_TypeDef;
Gottfried 17:b87addd12d20 111
Gottfried 17:b87addd12d20 112 DUMMY_UART_TypeDef *_uart;
okini3939 0:cbff6bf41542 113 };
okini3939 0:cbff6bf41542 114
okini3939 0:cbff6bf41542 115 #endif