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 |