Subversion Repositories LedShow

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6 mjames 1
/*
2
 * dmx.c
3
 *
4
 *  Created on: 26 Jul 2019
5
 *      Author: Mike
6
 */
7
 
8
 
9
 
10
// DMX state variables
11
DMX_State_t DMX_State = DMX_IDLE;
12
uint8_t DMX_Buffer[512];
13
uint32_t DMX_Pointer;
14
 
15
void dmx_state(uint8_t* Buf, uint32_t *Len)
16
{
17
switch (DMX_State)
18
{
19
case    DMX_IDLE:  // nothing happening
20
          break;
21
case DMX_BREAK://
22
          if(*Len > 0)
23
          {
24
                  if( Buf[0] != 0)
25
                  DMX_State = DMX_IDLE;
26
                  else
27
                  {
28
                          memcpy(DMX_Buffer,Buf+1,*Len-1);
29
                          DMX_Pointer = *Len-1;
30
                          DMX_State = DMX_BYTES;
31
                  }
32
          }
33
          break;
34
case    DMX_BYTES:
35
{
36
    int count = *Len;
37
    int newPointer  = DMX_Pointer + count;
38
    if(newPointer >= 512)
39
          count = 512-count;
40
 
41
    memcpy(DMX_Buffer+ DMX_Pointer, Buf, count);
42
    DMX_Pointer += count;
43
    if (DMX_Pointer == 512)
44
    {
45
       DMX_State = DMX_DATA;
46
    }
47
}
48
break;
49
case DMX_DATA:
50
case DMX_DONE:
51
   break;
52
}
53