| Line 10... |
Line 10... |
| 10 |
|
10 |
|
| 11 |
#define GCS_REG_SIZE 36
|
11 |
#define GCS_REG_SIZE 36
|
| 12 |
#define GCS_LAYER_SIZE (GCS_REG_SIZE*CUBE_ROW_COUNT)
|
12 |
#define GCS_LAYER_SIZE (GCS_REG_SIZE*CUBE_ROW_COUNT)
|
| 13 |
|
13 |
|
| 14 |
// Color Definitions
|
14 |
// Color Definitions
|
| - |
|
15 |
#define CLEAR 0x000,0x000,0x000
|
| 15 |
#define RED 0x08F,0x000,0x000
|
16 |
#define RED 0x0FF,0x000,0x000
|
| 16 |
#define ORANGE 0x08F,0x020,0x000
|
17 |
#define ORANGE 0x0FF,0x040,0x000
|
| 17 |
#define YELLOW 0x08F,0x08F,0x000
|
18 |
#define YELLOW 0x0FF,0x0FF,0x000
|
| 18 |
#define GREEN 0x000,0x08F,0x000
|
19 |
#define GREEN 0x000,0x0FF,0x000
|
| 19 |
#define TEAL 0x000,0x08F,0x08F
|
20 |
#define TEAL 0x000,0x0FF,0x040
|
| 20 |
#define BLUE 0x000,0x000,0x08F
|
21 |
#define BLUE 0x000,0x000,0x0FF
|
| 21 |
#define PURPLE 0x08F,0x000,0x08F
|
22 |
#define PURPLE 0x0FF,0x000,0x0FF
|
| 22 |
#define WHITE 0x0FF,0x0FF,0x0FF
|
23 |
#define WHITE 0x0FF,0x0FF,0x0FF
|
| 23 |
|
24 |
|
| 24 |
// Control Pin Declarations
|
25 |
// Control Pin Declarations
|
| 25 |
#define SFT_D_TRIS TRISBbits.TRISB15
|
26 |
#define SFT_D_TRIS TRISBbits.TRISB15
|
| 26 |
#define SFT_S_TRIS TRISDbits.TRISD5
|
27 |
#define SFT_S_TRIS TRISDbits.TRISD5
|
| Line 37... |
Line 38... |
| 37 |
|
38 |
|
| 38 |
#define GSLAT PORTDbits.RD9
|
39 |
#define GSLAT PORTDbits.RD9
|
| 39 |
#define XBLNK PORTDbits.RD2
|
40 |
#define XBLNK PORTDbits.RD2
|
| 40 |
|
41 |
|
| 41 |
// String Overlay Buffer Size
|
42 |
// String Overlay Buffer Size
|
| 42 |
#define CUBE_STRING_MAX_LENGTH 32
|
43 |
#define CUBE_STRING_MAX_LENGTH 255
|
| 43 |
|
44 |
|
| 44 |
// Data Streaming In Buffer Size
|
45 |
// Data Streaming In Buffer Size
|
| 45 |
#define CUBE_FRAME_BUFFER_SIZE 3000
|
46 |
#define CUBE_FRAME_BUFFER_SIZE 3000
|
| 46 |
#define CUBE_START_CHAR 0x7E
|
47 |
#define CUBE_START_CHAR 0x7E
|
| 47 |
#define CUBE_ESCAPE_CHAR 0x7D
|
48 |
#define CUBE_ESCAPE_CHAR 0x7D
|
| Line 53... |
Line 54... |
| 53 |
#define CUBE_COMMAND_SET_PIXEL 0x10 // [Layer, Row, Column, R, G, B]
|
54 |
#define CUBE_COMMAND_SET_PIXEL 0x10 // [Layer, Row, Column, R, G, B]
|
| 54 |
#define CUBE_COMMAND_SET_ALL 0x11 // [R1, G1, B1, R2, ...]
|
55 |
#define CUBE_COMMAND_SET_ALL 0x11 // [R1, G1, B1, R2, ...]
|
| 55 |
#define CUBE_COMMAND_START_TEXT 0x20 // [R, G, B, Char1, Char2, Char3, ...]
|
56 |
#define CUBE_COMMAND_START_TEXT 0x20 // [R, G, B, Char1, Char2, Char3, ...]
|
| 56 |
#define CUBE_COMMAND_STOP_TEXT 0x21 // (no data)
|
57 |
#define CUBE_COMMAND_STOP_TEXT 0x21 // (no data)
|
| 57 |
|
58 |
|
| - |
|
59 |
// Ethernet Op-Codes
|
| - |
|
60 |
#define CUBE_ETH_RESET 0x01
|
| - |
|
61 |
#define CUBE_EHT_IDLE 0x02
|
| - |
|
62 |
#define CUBE_ETH_CLEAR 0x0A
|
| - |
|
63 |
#define CUBE_ETH_DCS 0x0B
|
| - |
|
64 |
#define CUBE_ETH_ROTATE 0x0C
|
| - |
|
65 |
#define CUBE_ETH_ROTATE_LAYER 0x0D
|
| - |
|
66 |
#define CUBE_ETH_WRITE_ALL 0x10
|
| - |
|
67 |
#define CUBE_ETH_WRITE_PIXEL 0x11
|
| - |
|
68 |
#define CUBE_ETH_WRITE_CHANNEL 0x12
|
| - |
|
69 |
#define CUBE_ETH_WRITE_TEXT 0x20
|
| - |
|
70 |
#define CUBE_ETH_WATERFALL 0x30
|
| - |
|
71 |
#define CUBE_ETH_SPHERE 0x31
|
| - |
|
72 |
|
| 58 |
typedef enum {
|
73 |
typedef enum {
|
| 59 |
IDLE,
|
74 |
IDLE,
|
| 60 |
READ_LENGTH_MSB,
|
75 |
READ_LENGTH_MSB,
|
| 61 |
READ_LENGTH_LSB,
|
76 |
READ_LENGTH_LSB,
|
| 62 |
READ_COMMAND,
|
77 |
READ_COMMAND,
|
| Line 99... |
Line 114... |
| 99 |
// Cube control functions
|
114 |
// Cube control functions
|
| 100 |
void Cube_Write_DCS(uint8_t BC);
|
115 |
void Cube_Write_DCS(uint8_t BC);
|
| 101 |
void Cube_Clear(void);
|
116 |
void Cube_Clear(void);
|
| 102 |
void Cube_Set_All(uint16_t R, uint16_t G, uint16_t B);
|
117 |
void Cube_Set_All(uint16_t R, uint16_t G, uint16_t B);
|
| 103 |
void Cube_Set_Layer(uint8_t layer, uint16_t R, uint16_t G, uint16_t B);
|
118 |
void Cube_Set_Layer(uint8_t layer, uint16_t R, uint16_t G, uint16_t B);
|
| - |
|
119 |
void Cube_Set_Row(uint8_t row, uint16_t R, uint16_t G, uint16_t B);
|
| - |
|
120 |
void Cube_Set_Column(uint8_t column, uint16_t R, uint16_t G, uint16_t B);
|
| 104 |
void Cube_Set_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t R, uint16_t G, uint16_t B);
|
121 |
void Cube_Set_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t R, uint16_t G, uint16_t B);
|
| 105 |
void Cube_Get_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t* R, uint16_t* G, uint16_t* B);
|
122 |
void Cube_Get_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t* R, uint16_t* G, uint16_t* B);
|
| 106 |
void Cube_Move_Pixel(uint8_t layer1, uint8_t row1, uint8_t column1, uint8_t layer2, uint8_t row2, uint8_t column2);
|
123 |
void Cube_Move_Pixel(uint8_t layer1, uint8_t row1, uint8_t column1, uint8_t layer2, uint8_t row2, uint8_t column2);
|
| - |
|
124 |
void Cube_Set_Sphere(uint8_t layer, uint8_t R, uint8_t G, uint8_t B);
|
| - |
|
125 |
void Cube_Set_Shell(uint8_t layer, uint8_t R, uint8_t G, uint8_t B);
|
| 107 |
void Cube_Rotate_Shell(uint8_t shell, uint8_t direction);
|
126 |
void Cube_Rotate_Shell(uint8_t shell, uint8_t direction);
|
| 108 |
void Cube_Rotate(uint8_t direction);
|
127 |
void Cube_Rotate(uint8_t direction);
|
| - |
|
128 |
void Cube_Shift_Row(uint8_t direction);
|
| - |
|
129 |
|
| - |
|
130 |
void Cube_Shift_Waterfall(uint8_t *values);
|
| - |
|
131 |
void Cube_Shift_Waterfall2(uint8_t *values);
|
| 109 |
|
132 |
|
| 110 |
// Overlay control functions
|
133 |
// Overlay control functions
|
| 111 |
void Cube_Overlay_Clear(void);
|
134 |
void Cube_Overlay_Clear(void);
|
| 112 |
void Cube_Overlay_Set_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t R, uint16_t G, uint16_t B);
|
135 |
void Cube_Overlay_Set_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t R, uint16_t G, uint16_t B);
|
| 113 |
void Cube_Overlay_Get_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t* R, uint16_t* G, uint16_t* B);
|
136 |
void Cube_Overlay_Get_Pixel(uint8_t layer, uint8_t row, uint8_t column, uint16_t* R, uint16_t* G, uint16_t* B);
|