Mercurial > louis > kiibohd-controller
annotate Scan/UARTConnect/connect_scan.c @ 412:e7a3be42ae1e
Debug code for interconnect cable debugging
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sat, 20 Feb 2016 13:27:49 -0800 |
parents | a3825c7fc651 |
children | 23a1868b4ac2 |
rev | line source |
---|---|
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1 /* Copyright (C) 2014-2015 by Jacob Alexander |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
2 * |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
3 * This file is free software: you can redistribute it and/or modify |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
4 * it under the terms of the GNU General Public License as published by |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
5 * the Free Software Foundation, either version 3 of the License, or |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
6 * (at your option) any later version. |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
7 * |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
8 * This file is distributed in the hope that it will be useful, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
11 * GNU General Public License for more details. |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
12 * |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
13 * You should have received a copy of the GNU General Public License |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
14 * along with this file. If not, see <http://www.gnu.org/licenses/>. |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
15 */ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
16 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
17 // ----- Includes ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
18 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
19 // Compiler Includes |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
20 #include <Lib/ScanLib.h> |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
21 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
22 // Project Includes |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
23 #include <cli.h> |
357
86b937945313
Fixing CMake dependency checking for kll_defs.h
Jacob Alexander <haata@kiibohd.com>
parents:
348
diff
changeset
|
24 #include <kll_defs.h> |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
25 #include <led.h> |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
26 #include <print.h> |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
27 #include <macro.h> |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
28 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
29 // Local Includes |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
30 #include "connect_scan.h" |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
31 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
32 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
33 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
34 // ----- Defines ----- |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
36 #define UART_Num_Interfaces 2 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
37 #define UART_Master 1 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
38 #define UART_Slave 0 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
39 #define UART_Buffer_Size UARTConnectBufSize_define |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
40 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
41 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
42 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
43 // ----- Macros ----- |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
44 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
45 // Macro for popping from Tx ring buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 #define uart_fillTxFifo( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
48 uint8_t fifoSize = ( ( UART##uartNum##_PFIFO & UART_PFIFO_TXFIFOSIZE ) >> 2 ); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
49 if ( fifoSize == 0 ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 fifoSize = 1; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
51 if ( Connect_debug ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
52 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
53 print( "TxFIFO " #uartNum " - " ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
54 printHex( fifoSize ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
55 print("/"); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
56 printHex( UART##uartNum##_TCFIFO ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
57 print("/"); \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
58 printHex( uart_tx_buf[ uartNum ].items ); \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
59 print( NL ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
60 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
61 /* XXX Doesn't work well */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
62 /* while ( UART##uartNum##_TCFIFO < fifoSize ) */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
63 /* More reliable, albeit slower */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
64 fifoSize -= UART##uartNum##_TCFIFO; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
65 while ( fifoSize-- != 0 ) \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
66 { \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
67 if ( uart_tx_buf[ uartNum ].items == 0 ) \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
68 break; \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
69 UART##uartNum##_D = uart_tx_buf[ uartNum ].buffer[ uart_tx_buf[ uartNum ].head++ ]; \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
70 uart_tx_buf[ uartNum ].items--; \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
71 if ( uart_tx_buf[ uartNum ].head >= UART_Buffer_Size ) \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
72 uart_tx_buf[ uartNum ].head = 0; \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
75 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
76 // Macros for locking/unlock Tx buffers |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
77 #define uart_lockTx( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
79 /* First, secure place in line for the resource */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
80 while ( uart_tx_status[ uartNum ].lock ); \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
81 uart_tx_status[ uartNum ].lock = 1; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
82 /* Next, wait unit the UART is ready */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
83 while ( uart_tx_status[ uartNum ].status != UARTStatus_Ready ); \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
84 uart_tx_status[ uartNum ].status = UARTStatus_Wait; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
85 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
86 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
87 #define uart_lockBothTx( uartNum1, uartNum2 ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
88 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
89 /* First, secure place in line for the resource */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
90 while ( uart_tx_status[ uartNum1 ].lock || uart_tx_status[ uartNum2 ].lock ); \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
91 uart_tx_status[ uartNum1 ].lock = 1; \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
92 uart_tx_status[ uartNum2 ].lock = 1; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
93 /* Next, wait unit the UARTs are ready */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
94 while ( uart_tx_status[ uartNum1 ].status != UARTStatus_Ready || uart_tx_status[ uartNum2 ].status != UARTStatus_Ready ); \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
95 uart_tx_status[ uartNum1 ].status = UARTStatus_Wait; \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
96 uart_tx_status[ uartNum2 ].status = UARTStatus_Wait; \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
97 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
98 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
99 #define uart_unlockTx( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
101 /* Ready the UART */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
102 uart_tx_status[ uartNum ].status = UARTStatus_Ready; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
103 /* Unlock the resource */ \ |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
104 uart_tx_status[ uartNum ].lock = 0; \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
106 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
107 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 // ----- Function Declarations ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
110 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
111 // CLI Functions |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
112 void cliFunc_connectCmd ( char *args ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
113 void cliFunc_connectDbg ( char *args ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
114 void cliFunc_connectIdl ( char *args ); |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
115 void cliFunc_connectLst ( char *args ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
116 void cliFunc_connectMst ( char *args ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
117 void cliFunc_connectRst ( char *args ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 void cliFunc_connectSts ( char *args ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
119 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
120 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
121 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
122 // ----- Structs ----- |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
123 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
124 typedef struct UARTRingBuf { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
125 uint8_t head; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
126 uint8_t tail; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
127 uint8_t items; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
128 uint8_t buffer[UART_Buffer_Size]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
129 } UARTRingBuf; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
130 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
131 typedef struct UARTDMABuf { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
132 uint8_t buffer[UART_Buffer_Size]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
133 uint16_t last_read; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
134 } UARTDMABuf; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
135 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
136 typedef struct UARTStatusRx { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
137 UARTStatus status; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
138 Command command; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
139 uint16_t bytes_waiting; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
140 } UARTStatusRx; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
141 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
142 typedef struct UARTStatusTx { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
143 UARTStatus status; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
144 uint8_t lock; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
145 } UARTStatusTx; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
146 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
147 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
148 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
149 // ----- Variables ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
150 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
151 // Connect Module command dictionary |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
152 CLIDict_Entry( connectCmd, "Sends a command via UART Connect, first arg is which uart, next arg is the command, rest are the arguments." ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
153 CLIDict_Entry( connectDbg, "Toggle UARTConnect debug mode." ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
154 CLIDict_Entry( connectIdl, "Sends N number of Idle commands, 2 is the default value, and should be sufficient in most cases." ); |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
155 CLIDict_Entry( connectLst, "Lists available UARTConnect commands and index id" ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
156 CLIDict_Entry( connectMst, "Sets the device as master. Use argument of s to set as slave." ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
157 CLIDict_Entry( connectRst, "Resets both Rx and Tx connect buffers and state variables." ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
158 CLIDict_Entry( connectSts, "UARTConnect status." ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
159 CLIDict_Def( uartConnectCLIDict, "UARTConnect Module Commands" ) = { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
160 CLIDict_Item( connectCmd ), |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
161 CLIDict_Item( connectDbg ), |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
162 CLIDict_Item( connectIdl ), |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
163 CLIDict_Item( connectLst ), |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
164 CLIDict_Item( connectMst ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
165 CLIDict_Item( connectRst ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
166 CLIDict_Item( connectSts ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
167 { 0, 0, 0 } // Null entry for dictionary end |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
168 }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
169 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
170 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
171 // -- Connect Device Id Variables -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
172 uint8_t Connect_id = 255; // Invalid, unset |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
173 uint8_t Connect_master = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
174 uint8_t Connect_maxId = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
175 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
176 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
177 // -- Control Variables -- |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
178 uint32_t Connect_lastCheck = 0; // Cable Check scheduler |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
179 uint8_t Connect_debug = 0; // Set 1 for debug |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
180 uint8_t Connect_override = 0; // Prevents master from automatically being set |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
181 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
182 volatile uint8_t uarts_configured = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
183 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
184 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
185 // -- Rx Variables -- |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
186 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
187 volatile UARTDMABuf uart_rx_buf[UART_Num_Interfaces]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
188 volatile UARTStatusRx uart_rx_status[UART_Num_Interfaces]; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
189 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
190 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
191 // -- Tx Variables -- |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
192 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
193 UARTRingBuf uart_tx_buf [UART_Num_Interfaces]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
194 UARTStatusTx uart_tx_status[UART_Num_Interfaces]; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
195 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
196 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
197 // -- Ring Buffer Convenience Functions -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
198 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
199 void Connect_addBytes( uint8_t *buffer, uint8_t count, uint8_t uart ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
200 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
201 // Too big to fit into buffer |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
202 if ( count > UART_Buffer_Size ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
203 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
204 erro_msg("Too big of a command to fit into the buffer..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
205 return; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
206 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
207 |
390
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
208 // Invalid UART |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
209 if ( uart >= UART_Num_Interfaces ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
210 { |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
211 erro_print("Invalid UART to send from..."); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
212 return; |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
213 } |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
214 |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
215 // Delay UART copy until there's some space left |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
216 while ( uart_tx_buf[ uart ].items + count > UART_Buffer_Size ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
217 { |
390
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
218 warn_msg("Too much data to send on UART"); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
219 printInt8( uart ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
220 print( ", waiting..." NL ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
221 delay( 1 ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
222 } |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
223 |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
224 // Append data to ring buffer |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
225 for ( uint8_t c = 0; c < count; c++ ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
226 { |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
227 if ( Connect_debug ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
228 { |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
229 printHex( buffer[ c ] ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
230 print(" +"); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
231 printInt8( uart ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
232 print( NL ); |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
233 } |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
234 |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
235 uart_tx_buf[ uart ].buffer[ uart_tx_buf[ uart ].tail++ ] = buffer[ c ]; |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
236 uart_tx_buf[ uart ].items++; |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
237 if ( uart_tx_buf[ uart ].tail >= UART_Buffer_Size ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
238 uart_tx_buf[ uart ].tail = 0; |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
239 if ( uart_tx_buf[ uart ].head == uart_tx_buf[ uart ].tail ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
240 uart_tx_buf[ uart ].head++; |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
241 if ( uart_tx_buf[ uart ].head >= UART_Buffer_Size ) |
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
242 uart_tx_buf[ uart ].head = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
243 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
244 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
245 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
246 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
247 // -- Connect send functions -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
248 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
249 // patternLen defines how many bytes should the incrementing pattern have |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
250 void Connect_send_CableCheck( uint8_t patternLen ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
251 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
252 // Wait until the Tx buffers are ready, then lock them |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
253 uart_lockBothTx( UART_Master, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
254 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
255 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
256 uint8_t header[] = { 0x16, 0x01, CableCheck, patternLen }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
257 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
258 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
259 Connect_addBytes( header, sizeof( header ), UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
260 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
261 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
262 // Send 0xD2 (11010010) for each argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
263 uint8_t value = 0xD2; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
264 for ( uint8_t c = 0; c < patternLen; c++ ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
265 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
266 Connect_addBytes( &value, 1, UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
267 Connect_addBytes( &value, 1, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
268 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
269 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
270 // Release Tx buffers |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
271 uart_unlockTx( UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
272 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
273 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
274 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
275 void Connect_send_IdRequest() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
276 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
277 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
278 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
279 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
280 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
281 uint8_t header[] = { 0x16, 0x01, IdRequest }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
282 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
283 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
284 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
285 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
286 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
287 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
288 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
289 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
290 // id is the value the next slave should enumerate as |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
291 void Connect_send_IdEnumeration( uint8_t id ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
292 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
293 // Lock slave bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
294 uart_lockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
295 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
296 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
297 uint8_t header[] = { 0x16, 0x01, IdEnumeration, id }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
298 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
299 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
300 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
301 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
302 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
303 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
304 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
305 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
306 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
307 void Connect_send_IdReport( uint8_t id ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
308 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
309 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
310 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
311 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
312 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
313 uint8_t header[] = { 0x16, 0x01, IdReport, id }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
314 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
315 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
316 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
317 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
318 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
319 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
320 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
321 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
322 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
323 // scanCodeStateList is an array of [scancode, state]'s (8 bit values) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
324 // numScanCodes is the number of scan codes to parse from array |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
325 void Connect_send_ScanCode( uint8_t id, TriggerGuide *scanCodeStateList, uint8_t numScanCodes ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
326 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
327 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
328 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
329 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
330 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
331 uint8_t header[] = { 0x16, 0x01, ScanCode, id, numScanCodes }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
332 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
333 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
334 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
335 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
336 // Send each of the scan codes |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
337 Connect_addBytes( (uint8_t*)scanCodeStateList, numScanCodes * TriggerGuideSize, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
338 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
339 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
340 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
341 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
342 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
343 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
344 // paramList is an array of [param, value]'s (8 bit values) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
345 // numParams is the number of params to parse from the array |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
346 void Connect_send_Animation( uint8_t id, uint8_t *paramList, uint8_t numParams ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
347 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
348 // Lock slave bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
349 uart_lockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
350 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
351 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
352 uint8_t header[] = { 0x16, 0x01, Animation, id, numParams }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
353 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
354 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
355 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
356 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
357 // Send each of the scan codes |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
358 Connect_addBytes( paramList, numParams, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
359 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
360 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
361 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
362 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
363 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
364 // Send a remote capability command using capability index |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
365 // This may not be what's expected (especially if the firmware is not the same on each node) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
366 // To broadcast to all slave nodes, set id to 255 instead of a specific id |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
367 void Connect_send_RemoteCapability( uint8_t id, uint8_t capabilityIndex, uint8_t state, uint8_t stateType, uint8_t numArgs, uint8_t *args ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
368 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
369 // Prepare header |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
370 uint8_t header[] = { 0x16, 0x01, RemoteCapability, id, capabilityIndex, state, stateType, numArgs }; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
371 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
372 // Ignore current id |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
373 if ( id == Connect_id ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
374 return; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
375 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
376 // Send towards slave node |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
377 if ( id > Connect_id ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
378 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
379 // Lock slave bound Tx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
380 uart_lockTx( UART_Slave ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
381 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
382 // Send header |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
383 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
384 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
385 // Send arguments |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
386 Connect_addBytes( args, numArgs, UART_Slave ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
387 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
388 // Unlock Tx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
389 uart_unlockTx( UART_Slave ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
390 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
391 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
392 // Send towards master node |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
393 if ( id < Connect_id || id == 255 ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
394 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
395 // Lock slave bound Tx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
396 uart_lockTx( UART_Master ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
397 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
398 // Send header |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
399 Connect_addBytes( header, sizeof( header ), UART_Master ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
400 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
401 // Send arguments |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
402 Connect_addBytes( args, numArgs, UART_Master ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
403 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
404 // Unlock Tx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
405 uart_unlockTx( UART_Master ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
406 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
407 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
408 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
409 void Connect_send_Idle( uint8_t num ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
410 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
411 // Wait until the Tx buffers are ready, then lock them |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
412 uart_lockBothTx( UART_Slave, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
413 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
414 // Send n number of idles to reset link status (if in a bad state) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
415 uint8_t value = 0x16; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
416 for ( uint8_t c = 0; c < num; c++ ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
417 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
418 Connect_addBytes( &value, 1, UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
419 Connect_addBytes( &value, 1, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
420 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
421 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
422 // Release Tx buffers |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
423 uart_unlockTx( UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
424 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
425 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
426 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
427 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
428 // -- Connect receive functions -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
429 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
430 // - Cable Check variables - |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
431 uint32_t Connect_cableFaultsMaster = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
432 uint32_t Connect_cableFaultsSlave = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
433 uint32_t Connect_cableChecksMaster = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
434 uint32_t Connect_cableChecksSlave = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
435 uint8_t Connect_cableOkMaster = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
436 uint8_t Connect_cableOkSlave = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
437 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
438 uint8_t Connect_receive_CableCheck( uint8_t byte, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
439 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
440 // Check if this is the first byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
441 if ( *pending_bytes == 0xFFFF ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
442 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
443 *pending_bytes = byte; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
444 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
445 if ( Connect_debug ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
446 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
447 dbug_msg("PENDING SET -> "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
448 printHex( byte ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
449 print(" "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
450 printHex( *pending_bytes ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
451 print( NL ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
452 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
453 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
454 // Verify byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
455 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
456 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
457 (*pending_bytes)--; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
458 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
459 // The argument bytes are always 0xD2 (11010010) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
460 if ( byte != 0xD2 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
461 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
462 warn_print("Cable Fault!"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
463 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
464 // Check which side of the chain |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
465 if ( uart_num == UART_Slave ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
466 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
467 Connect_cableFaultsSlave++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
468 Connect_cableOkSlave = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
469 print(" Slave "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
470 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
471 else |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
472 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
473 Connect_cableFaultsMaster++; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
474 Connect_cableOkMaster = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
475 print(" Master "); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
476 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
477 printHex( byte ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
478 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
479 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
480 // Signal that the command should wait for a SYN again |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
481 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
482 } |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
483 else |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
484 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
485 // Check which side of the chain |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
486 if ( uart_num == UART_Slave ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
487 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
488 Connect_cableChecksSlave++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
489 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
490 else |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
491 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
492 Connect_cableChecksMaster++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
493 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
494 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
495 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
496 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
497 // If cable check was successful, set cable ok |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
498 if ( *pending_bytes == 0 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
499 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
500 if ( uart_num == UART_Slave ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
501 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
502 Connect_cableOkSlave = 1; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
503 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
504 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
505 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
506 Connect_cableOkMaster = 1; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
507 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
508 } |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
509 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
510 if ( Connect_debug ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
511 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
512 dbug_msg("CABLECHECK RECEIVE - "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
513 printHex( byte ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
514 print(" "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
515 printHex( *pending_bytes ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
516 print( NL ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
517 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
518 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
519 // Check whether the cable check has finished |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
520 return *pending_bytes == 0 ? 1 : 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
521 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
522 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
523 uint8_t Connect_receive_IdRequest( uint8_t byte, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
524 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
525 dbug_print("IdRequest"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
526 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
527 if ( uart_num == UART_Master ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
528 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
529 erro_print("Invalid IdRequest direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
530 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
531 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
532 // Check if master, begin IdEnumeration |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
533 if ( Connect_master ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
534 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
535 // The first device is always id 1 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
536 // Id 0 is reserved for the master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
537 Connect_send_IdEnumeration( 1 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
538 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
539 // Propagate IdRequest |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
540 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
541 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
542 Connect_send_IdRequest(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
543 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
544 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
545 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
546 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
547 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
548 uint8_t Connect_receive_IdEnumeration( uint8_t id, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
549 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
550 dbug_print("IdEnumeration"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
551 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
552 if ( uart_num == UART_Slave ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
553 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
554 erro_print("Invalid IdEnumeration direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
555 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
556 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
557 // Set the device id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
558 Connect_id = id; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
559 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
560 // Send reponse back to master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
561 Connect_send_IdReport( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
562 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
563 // Propogate next Id if the connection is ok |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
564 if ( Connect_cableOkSlave ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
565 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
566 Connect_send_IdEnumeration( id + 1 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
567 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
568 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
569 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
570 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
571 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
572 uint8_t Connect_receive_IdReport( uint8_t id, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
573 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
574 dbug_print("IdReport"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
575 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
576 if ( uart_num == UART_Master ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
577 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
578 erro_print("Invalid IdRequest direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
579 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
580 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
581 // Track Id response if master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
582 if ( Connect_master ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
583 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
584 info_msg("Id Reported: "); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
585 printHex( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
586 print( NL ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
587 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
588 // Check if this is the highest ID |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
589 if ( id > Connect_maxId ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
590 Connect_maxId = id; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
591 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
592 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
593 // Propagate id if yet another slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
594 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
595 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
596 Connect_send_IdReport( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
597 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
598 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
599 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
600 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
601 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
602 // - Scan Code Variables - |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
603 TriggerGuide Connect_receive_ScanCodeBuffer; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
604 uint8_t Connect_receive_ScanCodeBufferPos; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
605 uint8_t Connect_receive_ScanCodeDeviceId; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
606 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
607 uint8_t Connect_receive_ScanCode( uint8_t byte, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
608 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
609 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
610 if ( uart_num == UART_Master ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
611 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
612 erro_print("Invalid ScanCode direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
613 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
614 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
615 // Master node, trigger scan codes |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
616 if ( Connect_master ) switch ( (*pending_bytes)-- ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
617 { |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
618 // Byte count always starts at 0xFFFF |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
619 case 0xFFFF: // Device Id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
620 Connect_receive_ScanCodeDeviceId = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
621 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
622 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
623 case 0xFFFE: // Number of TriggerGuides in bytes (byte * 3) |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
624 *pending_bytes = byte * sizeof( TriggerGuide ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
625 Connect_receive_ScanCodeBufferPos = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
626 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
627 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
628 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
629 // Set the specific TriggerGuide entry |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
630 ((uint8_t*)&Connect_receive_ScanCodeBuffer)[ Connect_receive_ScanCodeBufferPos++ ] = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
631 |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
632 // Reset the BufferPos if higher than sizeof TriggerGuide |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
633 // And send the TriggerGuide to the Macro Module |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
634 if ( Connect_receive_ScanCodeBufferPos >= sizeof( TriggerGuide ) ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
635 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
636 Connect_receive_ScanCodeBufferPos = 0; |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
637 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
638 // Adjust ScanCode offset |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
639 if ( Connect_receive_ScanCodeDeviceId > 0 ) |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
640 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
641 // Check if this node is too large |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
642 if ( Connect_receive_ScanCodeDeviceId >= InterconnectNodeMax ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
643 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
644 warn_msg("Not enough interconnect layout nodes configured: "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
645 printHex( Connect_receive_ScanCodeDeviceId ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
646 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
647 break; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
648 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
649 |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
650 // This variable is in generatedKeymaps.h |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
651 extern uint8_t InterconnectOffsetList[]; |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
652 Connect_receive_ScanCodeBuffer.scanCode = Connect_receive_ScanCodeBuffer.scanCode + InterconnectOffsetList[ Connect_receive_ScanCodeDeviceId - 1 ]; |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
653 } |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
654 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
655 // ScanCode receive debug |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
656 if ( Connect_debug ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
657 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
658 dbug_msg(""); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
659 printHex( Connect_receive_ScanCodeBuffer.type ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
660 print(" "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
661 printHex( Connect_receive_ScanCodeBuffer.state ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
662 print(" "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
663 printHex( Connect_receive_ScanCodeBuffer.scanCode ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
664 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
665 } |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
666 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
667 // Send ScanCode to macro module |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
668 Macro_interconnectAdd( &Connect_receive_ScanCodeBuffer ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
669 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
670 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
671 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
672 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
673 // Propagate ScanCode packet |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
674 // XXX It would be safer to buffer the scancodes first, before transmitting the packet -Jacob |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
675 // The current method is the more efficient/aggressive, but could cause issues if there were errors during transmission |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
676 else switch ( (*pending_bytes)-- ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
677 { |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
678 // Byte count always starts at 0xFFFF |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
679 case 0xFFFF: // Device Id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
680 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
681 Connect_receive_ScanCodeDeviceId = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
682 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
683 // Lock the master Tx buffer |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
684 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
685 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
686 // Send header + Id byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
687 uint8_t header[] = { 0x16, 0x01, ScanCode, byte }; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
688 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
689 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
690 } |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
691 case 0xFFFE: // Number of TriggerGuides in bytes |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
692 *pending_bytes = byte * sizeof( TriggerGuide ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
693 Connect_receive_ScanCodeBufferPos = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
694 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
695 // Pass through byte |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
696 Connect_addBytes( &byte, 1, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
697 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
698 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
699 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
700 // Pass through byte |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
701 Connect_addBytes( &byte, 1, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
702 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
703 // Unlock Tx Buffer after sending last byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
704 if ( *pending_bytes == 0 ) |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
705 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
706 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
707 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
708 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
709 // Check whether the scan codes have finished sending |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
710 return *pending_bytes == 0 ? 1 : 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
711 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
712 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
713 uint8_t Connect_receive_Animation( uint8_t byte, uint16_t *pending_bytes, uint8_t uart_num ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
714 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
715 dbug_print("Animation"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
716 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
717 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
718 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
719 // - Remote Capability Variables - |
390
a3825c7fc651
Adding remote capability LED control
Jacob Alexander <haata@kiibohd.com>
parents:
389
diff
changeset
|
720 #define Connect_receive_RemoteCapabilityMaxArgs 25 // XXX Calculate the max using kll |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
721 RemoteCapabilityCommand Connect_receive_RemoteCapabilityBuffer; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
722 uint8_t Connect_receive_RemoteCapabilityArgs[Connect_receive_RemoteCapabilityMaxArgs]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
723 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
724 uint8_t Connect_receive_RemoteCapability( uint8_t byte, uint16_t *pending_bytes, uint8_t uart_num ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
725 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
726 // Check which byte in the packet we are at |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
727 switch ( (*pending_bytes)-- ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
728 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
729 // Byte count always starts at 0xFFFF |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
730 case 0xFFFF: // Device Id |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
731 Connect_receive_RemoteCapabilityBuffer.id = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
732 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
733 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
734 case 0xFFFE: // Capability Index |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
735 Connect_receive_RemoteCapabilityBuffer.capabilityIndex = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
736 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
737 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
738 case 0xFFFD: // State |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
739 Connect_receive_RemoteCapabilityBuffer.state = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
740 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
741 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
742 case 0xFFFC: // StateType |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
743 Connect_receive_RemoteCapabilityBuffer.stateType = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
744 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
745 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
746 case 0xFFFB: // Number of args |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
747 Connect_receive_RemoteCapabilityBuffer.numArgs = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
748 *pending_bytes = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
749 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
750 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
751 default: // Args (# defined by previous byte) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
752 Connect_receive_RemoteCapabilityArgs[ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
753 Connect_receive_RemoteCapabilityBuffer.numArgs - *pending_bytes + 1 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
754 ] = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
755 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
756 // If entire packet has been fully received |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
757 if ( *pending_bytes == 0 ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
758 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
759 // Determine if this is the node to run the capability on |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
760 // Conditions: Matches or broadcast (0xFF) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
761 if ( Connect_receive_RemoteCapabilityBuffer.id == 0xFF |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
762 || Connect_receive_RemoteCapabilityBuffer.id == Connect_id ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
763 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
764 extern const Capability CapabilitiesList[]; // See generatedKeymap.h |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
765 void (*capability)(uint8_t, uint8_t, uint8_t*) = (void(*)(uint8_t, uint8_t, uint8_t*))( |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
766 CapabilitiesList[ Connect_receive_RemoteCapabilityBuffer.capabilityIndex ].func |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
767 ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
768 capability( |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
769 Connect_receive_RemoteCapabilityBuffer.state, |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
770 Connect_receive_RemoteCapabilityBuffer.stateType, |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
771 &Connect_receive_RemoteCapabilityArgs[2] |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
772 ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
773 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
774 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
775 // If this is not the correct node, keep sending it in the same direction (doesn't matter if more nodes exist) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
776 // or if this is a broadcast |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
777 if ( Connect_receive_RemoteCapabilityBuffer.id == 0xFF |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
778 || Connect_receive_RemoteCapabilityBuffer.id != Connect_id ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
779 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
780 // Prepare outgoing packet |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
781 Connect_receive_RemoteCapabilityBuffer.command = RemoteCapability; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
782 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
783 // Send to the other UART (not the one receiving the packet from |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
784 uint8_t uart_direction = uart_num == UART_Master ? UART_Slave : UART_Master; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
785 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
786 // Lock Tx UART |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
787 switch ( uart_direction ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
788 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
789 case UART_Master: uart_lockTx( UART_Master ); break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
790 case UART_Slave: uart_lockTx( UART_Slave ); break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
791 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
792 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
793 // Send header |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
794 uint8_t header[] = { 0x16, 0x01 }; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
795 Connect_addBytes( header, sizeof( header ), uart_direction ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
796 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
797 // Send Remote Capability and arguments |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
798 Connect_addBytes( (uint8_t*)&Connect_receive_RemoteCapabilityBuffer, sizeof( RemoteCapabilityCommand ), uart_direction ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
799 Connect_addBytes( Connect_receive_RemoteCapabilityArgs, Connect_receive_RemoteCapabilityBuffer.numArgs, uart_direction ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
800 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
801 // Unlock Tx UART |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
802 switch ( uart_direction ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
803 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
804 case UART_Master: uart_unlockTx( UART_Master ); break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
805 case UART_Slave: uart_unlockTx( UART_Slave ); break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
806 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
807 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
808 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
809 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
810 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
811 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
812 // Check whether the scan codes have finished sending |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
813 return *pending_bytes == 0 ? 1 : 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
814 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
815 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
816 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
817 // Baud Rate |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
818 // NOTE: If finer baud adjustment is needed see UARTx_C4 -> BRFA in the datasheet |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
819 uint16_t Connect_baud = UARTConnectBaud_define; // Max setting of 8191 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
820 uint16_t Connect_baudFine = UARTConnectBaudFine_define; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
821 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
822 // Connect receive function lookup |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
823 void *Connect_receiveFunctions[] = { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
824 Connect_receive_CableCheck, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
825 Connect_receive_IdRequest, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
826 Connect_receive_IdEnumeration, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
827 Connect_receive_IdReport, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
828 Connect_receive_ScanCode, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
829 Connect_receive_Animation, |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
830 Connect_receive_RemoteCapability, |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
831 }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
832 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
833 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
834 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
835 // ----- Functions ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
836 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
837 // Resets the state of the UART buffers and state variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
838 void Connect_reset() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
839 { |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
840 // Reset Rx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
841 memset( (void*)uart_rx_status, 0, sizeof( UARTStatusRx ) * UART_Num_Interfaces ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
842 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
843 // Reset Tx |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
844 memset( (void*)uart_tx_buf, 0, sizeof( UARTRingBuf ) * UART_Num_Interfaces ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
845 memset( (void*)uart_tx_status, 0, sizeof( UARTStatusTx ) * UART_Num_Interfaces ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
846 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
847 // Set Rx/Tx buffers as ready |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
848 for ( uint8_t inter = 0; inter < UART_Num_Interfaces; inter++ ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
849 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
850 uart_tx_status[ inter ].status = UARTStatus_Ready; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
851 uart_rx_buf[ inter ].last_read = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
852 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
853 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
854 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
855 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
856 // Setup connection to other side |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
857 // - Only supports a single slave and master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
858 // - If USB has been initiallized at this point, this side is the master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
859 // - If both sides assert master, flash error leds |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
860 void Connect_setup( uint8_t master ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
861 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
862 // Indication that UARTs are not ready |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
863 uarts_configured = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
864 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
865 // Register Connect CLI dictionary |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
866 CLI_registerDictionary( uartConnectCLIDict, uartConnectCLIDictName ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
867 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
868 // Check if master |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
869 Connect_master = master; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
870 if ( Connect_master ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
871 Connect_id = 0; // 0x00 is always the master Id |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
872 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
873 // UART0 setup |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
874 // UART1 setup |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
875 // Setup the the UART interface for keyboard data input |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
876 SIM_SCGC4 |= SIM_SCGC4_UART0; // Disable clock gating |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
877 SIM_SCGC4 |= SIM_SCGC4_UART1; // Disable clock gating |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
878 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
879 // Pin Setup for UART0 / UART1 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
880 PORTA_PCR1 = PORT_PCR_PE | PORT_PCR_PS | PORT_PCR_PFE | PORT_PCR_MUX(2); // RX Pin |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
881 PORTA_PCR2 = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(2); // TX Pin |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
882 PORTE_PCR0 = PORT_PCR_PE | PORT_PCR_PS | PORT_PCR_PFE | PORT_PCR_MUX(3); // RX Pin |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
883 PORTE_PCR1 = PORT_PCR_DSE | PORT_PCR_SRE | PORT_PCR_MUX(3); // TX Pin |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
884 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
885 // Baud Rate setting |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
886 UART0_BDH = (uint8_t)(Connect_baud >> 8); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
887 UART0_BDL = (uint8_t)Connect_baud; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
888 UART0_C4 = Connect_baudFine; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
889 UART1_BDH = (uint8_t)(Connect_baud >> 8); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
890 UART1_BDL = (uint8_t)Connect_baud; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
891 UART1_C4 = Connect_baudFine; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
892 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
893 // 8 bit, Even Parity, Idle Character bit after stop |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
894 // NOTE: For 8 bit with Parity you must enable 9 bit transmission (pg. 1065) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
895 // You only need to use UART0_D for 8 bit reading/writing though |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
896 // UART_C1_M UART_C1_PE UART_C1_PT UART_C1_ILT |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
897 UART0_C1 = UART_C1_M | UART_C1_PE | UART_C1_ILT; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
898 UART1_C1 = UART_C1_M | UART_C1_PE | UART_C1_ILT; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
899 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
900 // Only using Tx Fifos |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
901 UART0_PFIFO = UART_PFIFO_TXFE; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
902 UART1_PFIFO = UART_PFIFO_TXFE; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
903 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
904 // Setup DMA clocks |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
905 SIM_SCGC6 |= SIM_SCGC6_DMAMUX; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
906 SIM_SCGC7 |= SIM_SCGC7_DMA; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
907 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
908 // Start with channels disabled first |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
909 DMAMUX0_CHCFG0 = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
910 DMAMUX0_CHCFG1 = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
911 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
912 // Configure DMA channels |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
913 //DMA_DSR_BCR0 |= DMA_DSR_BCR_DONE_MASK; // TODO What's this? |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
914 DMA_TCD0_CSR = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
915 DMA_TCD1_CSR = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
916 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
917 // Default control register |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
918 DMA_CR = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
919 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
920 // DMA Priority |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
921 DMA_DCHPRI0 = 0; // Ch 0, priority 0 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
922 DMA_DCHPRI1 = 1; // ch 1, priority 1 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
923 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
924 // Clear error interrupts |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
925 DMA_EEI = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
926 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
927 // Setup TCD |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
928 DMA_TCD0_SADDR = (uint32_t*)&UART0_D; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
929 DMA_TCD1_SADDR = (uint32_t*)&UART1_D; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
930 DMA_TCD0_SOFF = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
931 DMA_TCD1_SOFF = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
932 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
933 // No modulo, 8-bit transfer size |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
934 DMA_TCD0_ATTR = DMA_TCD_ATTR_SMOD(0) | DMA_TCD_ATTR_SSIZE(0) | DMA_TCD_ATTR_DMOD(0) | DMA_TCD_ATTR_DSIZE(0); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
935 DMA_TCD1_ATTR = DMA_TCD_ATTR_SMOD(0) | DMA_TCD_ATTR_SSIZE(0) | DMA_TCD_ATTR_DMOD(0) | DMA_TCD_ATTR_DSIZE(0); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
936 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
937 // One byte transferred at a time |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
938 DMA_TCD0_NBYTES_MLNO = 1; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
939 DMA_TCD1_NBYTES_MLNO = 1; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
940 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
941 // Source address does not change |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
942 DMA_TCD0_SLAST = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
943 DMA_TCD1_SLAST = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
944 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
945 // Destination buffer |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
946 DMA_TCD0_DADDR = (uint32_t*)uart_rx_buf[0].buffer; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
947 DMA_TCD1_DADDR = (uint32_t*)uart_rx_buf[1].buffer; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
948 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
949 // Incoming byte, increment by 1 in the rx buffer |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
950 DMA_TCD0_DOFF = 1; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
951 DMA_TCD1_DOFF = 1; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
952 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
953 // Single major loop, must be the same value |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
954 DMA_TCD0_CITER_ELINKNO = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
955 DMA_TCD1_CITER_ELINKNO = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
956 DMA_TCD0_BITER_ELINKNO = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
957 DMA_TCD1_BITER_ELINKNO = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
958 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
959 // Reset buffer when full |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
960 DMA_TCD0_DLASTSGA = -( UART_Buffer_Size ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
961 DMA_TCD1_DLASTSGA = -( UART_Buffer_Size ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
962 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
963 // Enable DMA channels |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
964 DMA_ERQ |= DMA_ERQ_ERQ0 | DMA_ERQ_ERQ1; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
965 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
966 // Setup DMA channel routing |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
967 DMAMUX0_CHCFG0 = DMAMUX_ENABLE | DMAMUX_SOURCE_UART0_RX; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
968 DMAMUX0_CHCFG1 = DMAMUX_ENABLE | DMAMUX_SOURCE_UART1_RX; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
969 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
970 // Enable DMA requests (requires Rx interrupts) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
971 UART0_C5 = UART_C5_RDMAS; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
972 UART1_C5 = UART_C5_RDMAS; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
973 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
974 // TX Enabled, RX Enabled, RX Interrupt Enabled |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
975 UART0_C2 = UART_C2_TE | UART_C2_RE | UART_C2_RIE; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
976 UART1_C2 = UART_C2_TE | UART_C2_RE | UART_C2_RIE; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
977 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
978 // Add interrupts to the vector table |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
979 NVIC_ENABLE_IRQ( IRQ_UART0_STATUS ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
980 NVIC_ENABLE_IRQ( IRQ_UART1_STATUS ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
981 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
982 // UARTs are now ready to go |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
983 uarts_configured = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
984 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
985 // Reset the state of the UART variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
986 Connect_reset(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
987 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
988 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
989 |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
990 #define DMA_BUF_POS( x, pos ) \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
991 case x: \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
992 pos = DMA_TCD##x##_CITER_ELINKNO; \ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
993 break |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
994 void Connect_rx_process( uint8_t uartNum ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
995 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
996 // Determine current position to read until |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
997 uint16_t bufpos = 0; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
998 switch ( uartNum ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
999 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1000 DMA_BUF_POS( 0, bufpos ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1001 DMA_BUF_POS( 1, bufpos ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1002 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1003 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1004 // Process each of the new bytes |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1005 // Even if we receive more bytes during processing, wait until the next check so we don't starve other tasks |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1006 while ( bufpos != uart_rx_buf[ uartNum ].last_read ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1007 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1008 // If the last_read byte is at the buffer edge, roll back to beginning |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1009 if ( uart_rx_buf[ uartNum ].last_read == 0 ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1010 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1011 uart_rx_buf[ uartNum ].last_read = UART_Buffer_Size; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1012 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1013 // Check to see if we're at the boundary |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1014 if ( bufpos == UART_Buffer_Size ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1015 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1016 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1017 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1018 // Read the byte out of Rx DMA buffer |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1019 uint8_t byte = uart_rx_buf[ uartNum ].buffer[ UART_Buffer_Size - uart_rx_buf[ uartNum ].last_read-- ]; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1020 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1021 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1022 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1023 printHex( byte ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1024 print(" "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1025 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1026 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1027 // Process UART byte |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1028 switch ( uart_rx_status[ uartNum ].status ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1029 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1030 // Every packet must start with a SYN / 0x16 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1031 case UARTStatus_Wait: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1032 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1033 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1034 print(" Wait "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1035 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1036 uart_rx_status[ uartNum ].status = byte == 0x16 ? UARTStatus_SYN : UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1037 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1038 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1039 // After a SYN, there must be a SOH / 0x01 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1040 case UARTStatus_SYN: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1041 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1042 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1043 print(" SYN "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1044 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1045 uart_rx_status[ uartNum ].status = byte == 0x01 ? UARTStatus_SOH : UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1046 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1047 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1048 // After a SOH the packet structure may diverge a bit |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1049 // This is the packet type field (refer to the Command enum) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1050 // For very small packets (e.g. IdRequest) this is all that's required to take action |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1051 case UARTStatus_SOH: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1052 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1053 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1054 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1055 print(" SOH "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1056 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1057 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1058 // Check if this is actually a reserved CMD 0x16 (Error condition) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1059 if ( byte == Command_SYN ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1060 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1061 uart_rx_status[ uartNum ].status = UARTStatus_SYN; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1062 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1063 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1064 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1065 // Otherwise process the command |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1066 if ( byte < Command_TOP ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1067 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1068 uart_rx_status[ uartNum ].status = UARTStatus_Command; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1069 uart_rx_status[ uartNum ].command = byte; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1070 uart_rx_status[ uartNum ].bytes_waiting = 0xFFFF; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1071 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1072 // Invalid packet type, ignore |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1073 else |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1074 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1075 uart_rx_status[ uartNum ].status = UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1076 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1077 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1078 // Check if this is a very short packet |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1079 switch ( uart_rx_status[ uartNum ].command ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1080 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1081 case IdRequest: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1082 Connect_receive_IdRequest( 0, (uint16_t*)&uart_rx_status[ uartNum ].bytes_waiting, uartNum ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1083 uart_rx_status[ uartNum ].status = UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1084 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1085 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1086 default: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1087 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1088 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1089 print(" ### "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1090 printHex( uart_rx_status[ uartNum ].command ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1091 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1092 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1093 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1094 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1095 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1096 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1097 // After the packet type has been deciphered do Command specific processing |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1098 // Until the Command has received all the bytes it requires the UART buffer stays in this state |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1099 case UARTStatus_Command: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1100 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1101 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1102 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1103 print(" CMD "); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1104 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1105 /* Call specific UARTConnect command receive function */ |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1106 uint8_t (*rcvFunc)(uint8_t, uint16_t(*), uint8_t) = (uint8_t(*)(uint8_t, uint16_t(*), uint8_t))(Connect_receiveFunctions[ uart_rx_status[ uartNum ].command ]); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1107 if ( rcvFunc( byte, (uint16_t*)&uart_rx_status[ uartNum ].bytes_waiting, uartNum ) ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1108 uart_rx_status[ uartNum ].status = UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1109 break; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1110 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1111 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1112 // Unknown status, should never get here |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1113 default: |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1114 erro_msg("Invalid UARTStatus..."); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1115 uart_rx_status[ uartNum ].status = UARTStatus_Wait; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1116 continue; |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1117 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1118 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1119 if ( Connect_debug ) |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1120 { |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1121 print( NL ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1122 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1123 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1124 } |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1125 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1126 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1127 // Scan for updates in the master/slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1128 // - Interrupts will deal with most input functions |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1129 // - Used to send queries |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1130 // - SyncEvent is sent immediately once the current command is sent |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1131 // - SyncEvent is also blocking until sent |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1132 void Connect_scan() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1133 { |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1134 // Check if initially configured as a slave and usb comes up |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1135 // Then reconfigure as a master |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1136 if ( !Connect_master && Output_Available && !Connect_override ) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1137 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1138 Connect_setup( Output_Available ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1139 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1140 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1141 // Limit how often we do cable checks |
412
e7a3be42ae1e
Debug code for interconnect cable debugging
Jacob Alexander <haata@kiibohd.com>
parents:
390
diff
changeset
|
1142 //uint32_t time_compare = 0x007; // Used for debugging cables -HaaTa |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1143 uint32_t time_compare = 0x7FF; // Must be all 1's, 0x3FF is valid, 0x4FF is not |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1144 uint32_t current_time = systick_millis_count; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1145 if ( Connect_lastCheck != current_time |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1146 && ( current_time & time_compare ) == time_compare |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1147 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1148 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1149 // Make sure we don't double check if the clock speed is too high |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1150 Connect_lastCheck = current_time; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1151 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1152 // Send a cable check command of 2 bytes |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1153 Connect_send_CableCheck( UARTConnectCableCheckLength_define ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1154 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1155 // If this is a slave, and we don't have an id yeth |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1156 // Don't bother sending if there are cable issues |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1157 if ( !Connect_master && Connect_id == 0xFF && Connect_cableOkMaster ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1158 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1159 Connect_send_IdRequest(); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1160 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1161 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1162 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1163 // Only process commands if uarts have been configured |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1164 if ( uarts_configured ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1165 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1166 // Check if Tx Buffers are empty and the Tx Ring buffers have data to send |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1167 // This happens if there was previously nothing to send |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1168 if ( uart_tx_buf[ 0 ].items > 0 && UART0_TCFIFO == 0 ) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1169 uart_fillTxFifo( 0 ); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1170 if ( uart_tx_buf[ 1 ].items > 0 && UART1_TCFIFO == 0 ) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1171 uart_fillTxFifo( 1 ); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1172 |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1173 // Process Rx Buffers |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1174 Connect_rx_process( 0 ); |
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1175 Connect_rx_process( 1 ); |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1176 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1177 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1178 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1179 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1180 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1181 // ----- CLI Command Functions ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1182 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1183 void cliFunc_connectCmd( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1184 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1185 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1186 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1187 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1188 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1189 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1190 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1191 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1192 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1193 switch ( numToInt( &arg1Ptr[0] ) ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1194 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1195 case CableCheck: |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1196 Connect_send_CableCheck( UARTConnectCableCheckLength_define ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1197 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1198 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1199 case IdRequest: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1200 Connect_send_IdRequest(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1201 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1202 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1203 case IdEnumeration: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1204 Connect_send_IdEnumeration( 5 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1205 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1206 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1207 case IdReport: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1208 Connect_send_IdReport( 8 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1209 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1210 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1211 case ScanCode: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1212 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1213 TriggerGuide scanCodes[] = { { 0x00, 0x01, 0x05 }, { 0x00, 0x03, 0x16 } }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1214 Connect_send_ScanCode( 10, scanCodes, 2 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1215 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1216 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1217 case Animation: |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1218 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1219 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1220 case RemoteCapability: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1221 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1222 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1223 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1224 case RemoteOutput: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1225 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1226 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1227 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1228 case RemoteInput: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1229 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1230 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1231 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1232 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1233 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1234 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1235 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1236 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1237 void cliFunc_connectDbg( char* args ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1238 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1239 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1240 info_msg("Connect Debug Mode Toggle"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1241 Connect_debug = !Connect_debug; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1242 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1243 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1244 void cliFunc_connectIdl( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1245 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1246 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1247 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1248 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1249 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1250 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1251 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1252 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1253 info_msg("Sending Sync Idles..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1254 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1255 uint8_t count = numToInt( &arg1Ptr[0] ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1256 // Default to 2 idles |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1257 if ( count == 0 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1258 count = 2; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1259 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1260 Connect_send_Idle( count ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1261 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1262 |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1263 void cliFunc_connectLst( char* args ) |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1264 { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1265 const char *Command_strs[] = { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1266 "CableCheck", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1267 "IdRequest", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1268 "IdEnumeration", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1269 "IdReport", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1270 "ScanCode", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1271 "Animation", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1272 "RemoteCapability", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1273 "RemoteOutput", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1274 "RemoteInput", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1275 }; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1276 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1277 print( NL ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1278 info_msg("List of UARTConnect commands"); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1279 for ( uint8_t cmd = 0; cmd < Command_TOP; cmd++ ) |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1280 { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1281 print( NL ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1282 printInt8( cmd ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1283 print(" - "); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1284 dPrint( (char*)Command_strs[ cmd ] ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1285 } |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1286 } |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1287 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1288 void cliFunc_connectMst( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1289 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1290 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1291 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1292 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1293 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1294 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1295 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1296 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1297 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1298 // Set override |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1299 Connect_override = 1; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1300 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1301 switch ( arg1Ptr[0] ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1302 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1303 // Disable override |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1304 case 'd': |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1305 case 'D': |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1306 Connect_override = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1307 case 's': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1308 case 'S': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1309 info_msg("Setting device as slave."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1310 Connect_master = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1311 Connect_id = 0xFF; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1312 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1313 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1314 case 'm': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1315 case 'M': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1316 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1317 info_msg("Setting device as master."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1318 Connect_master = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1319 Connect_id = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1320 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1321 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1322 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1323 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1324 void cliFunc_connectRst( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1325 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1326 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1327 info_msg("Resetting UARTConnect state..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1328 Connect_reset(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1329 |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1330 // Reset node id |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1331 Connect_id = 0xFF; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1332 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1333 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1334 void cliFunc_connectSts( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1335 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1336 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1337 info_msg("UARTConnect Status"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1338 print( NL "Device Type:\t" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1339 print( Connect_master ? "Master" : "Slave" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1340 print( NL "Device Id:\t" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1341 printHex( Connect_id ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1342 print( NL "Max Id:\t" ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1343 printHex( Connect_maxId ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1344 print( NL "Master <=" NL "\tStatus:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1345 printHex( Connect_cableOkMaster ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1346 print( NL "\tFaults:\t"); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1347 printHex32( Connect_cableFaultsMaster ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1348 print("/"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1349 printHex32( Connect_cableChecksMaster ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1350 print( NL "\tRx:\t"); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1351 printHex( uart_rx_status[UART_Master].status ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1352 print( NL "\tTx:\t"); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1353 printHex( uart_tx_status[UART_Master].status ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1354 print( NL "Slave <=" NL "\tStatus:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1355 printHex( Connect_cableOkSlave ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1356 print( NL "\tFaults:\t"); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1357 printHex32( Connect_cableFaultsSlave ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1358 print("/"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1359 printHex32( Connect_cableChecksSlave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1360 print( NL "\tRx:\t"); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1361 printHex( uart_rx_status[UART_Slave].status ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1362 print( NL "\tTx:\t"); |
389
fc2c2a1e9615
Adding basic remote capabilities + UART Rx DMA buffers
Jacob Alexander <haata@kiibohd.com>
parents:
361
diff
changeset
|
1363 printHex( uart_tx_status[UART_Slave].status ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1364 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1365 |