Mercurial > louis > kiibohd-controller
annotate Scan/UARTConnect/connect_scan.c @ 361:7c6ac7b88cda
Working support for Interconnect
- Supports up to 255 slave nodes (you'll run into ScanCode limitations before then)
- Requires most recent kll compiler update
- Additional debugging output and stats counters
- Noise and parity checking
- Fixed TxFIFO issue when sending buffers larger than the FIFO
- Cleaned up defaultMap.kll
- Added ScanCode caching (reduces interconnect traffic significantly)
- Interconnect module code is conditionally compiled into PartialMap module if required
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Sat, 15 Aug 2015 21:53:59 -0700 |
parents | dbefb68411e1 |
children | fc2c2a1e9615 |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
34 // ----- Macros ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
35 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
36 #define UART_Master 1 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
37 #define UART_Slave 0 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
38 #define uart_lock_m( uartNum ) uart##uartNum##_lock |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
39 #define uart_buffer_items_m( uartNum ) uart##uartNum##_buffer_items |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
40 #define uart_buffer_m( uartNum ) uart##uartNum##_buffer |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
41 #define uart_buffer_head_m( uartNum ) uart##uartNum##_buffer_head |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
42 #define uart_buffer_tail_m( uartNum ) uart##uartNum##_buffer_tail |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
43 #define uart_tx_status_m( uartNum ) uart##uartNum##_tx_status |
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 adding to each uart Tx ring buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
46 #define uart_addTxBuffer( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
47 case uartNum: \ |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
48 /* Delay UART copy until there's some space left */ \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
49 while ( uart_buffer_items_m( uartNum ) + count > uart_buffer_size ) \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
50 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
51 warn_msg("Too much data to send on UART0, waiting..."); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
52 delay( 1 ); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
53 } \ |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
54 /* Append data to ring buffer */ \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
55 for ( uint8_t c = 0; c < count; c++ ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
56 { \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
57 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
58 { \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
59 printHex( buffer[ c ] ); \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
60 print( " +" #uartNum NL ); \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
61 } \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
62 uart_buffer_m( uartNum )[ uart_buffer_tail_m( uartNum )++ ] = buffer[ c ]; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
63 uart_buffer_items_m( uartNum )++; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
64 if ( uart_buffer_tail_m( uartNum ) >= uart_buffer_size ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
65 uart_buffer_tail_m( uartNum ) = 0; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
66 if ( uart_buffer_head_m( uartNum ) == uart_buffer_tail_m( uartNum ) ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
67 uart_buffer_head_m( uartNum )++; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
68 if ( uart_buffer_head_m( uartNum ) >= uart_buffer_size ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
69 uart_buffer_head_m( uartNum ) = 0; \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
70 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
71 break |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
72 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
73 // Macro for popping from Tx ring buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
74 #define uart_fillTxFifo( uartNum ) \ |
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 uint8_t fifoSize = ( ( UART##uartNum##_PFIFO & UART_PFIFO_TXFIFOSIZE ) >> 2 ); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
77 if ( fifoSize == 0 ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
78 fifoSize = 1; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
79 if ( Connect_debug ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
80 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
81 print( "TxFIFO " #uartNum " - " ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
82 printHex( fifoSize ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
83 print("/"); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
84 printHex( UART##uartNum##_TCFIFO ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
85 print("/"); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
86 printHex( uart##uartNum##_buffer_items ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
87 print( NL ); \ |
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 /* XXX Doesn't work well */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
90 /* while ( UART##uartNum##_TCFIFO < fifoSize ) */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
91 /* More reliable, albeit slower */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
92 fifoSize -= UART##uartNum##_TCFIFO; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
93 while ( fifoSize-- != 0 ) \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
94 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
95 if ( uart##uartNum##_buffer_items == 0 ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
96 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
97 UART##uartNum##_D = uart##uartNum##_buffer[ uart##uartNum##_buffer_head++ ]; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
98 uart##uartNum##_buffer_items--; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
99 if ( uart##uartNum##_buffer_head >= uart_buffer_size ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
100 uart##uartNum##_buffer_head = 0; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
101 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
102 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
103 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
104 // Macro for processing UART Rx |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
105 #define uart_processRx( uartNum ) \ |
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 if ( !( UART##uartNum##_S1 & UART_S1_RDRF ) ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
108 return; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
109 uint8_t available = UART##uartNum##_RCFIFO; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
110 if ( available == 0 ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
111 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
112 available = UART##uartNum##_D; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
113 UART##uartNum##_CFIFO = UART_CFIFO_RXFLUSH; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
114 return; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
115 } \ |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
116 /* Process each byte in the UART buffer */ \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
117 while ( available-- > 0 ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
118 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
119 /* First check if there was noise or Parity issues with current byte */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
120 uint8_t err_status = UART##uartNum##_ED; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
121 /* Read byte from Rx FIFO */ \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
122 uint8_t byteRead = UART##uartNum##_D; \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
123 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
124 { \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
125 printHex( byteRead ); \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
126 print("("); \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
127 printInt8( available ); \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
128 print(") <-"); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
129 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
130 /* Check error status */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
131 if ( err_status & 0x80 ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
132 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
133 print(" NOISY "); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
134 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
135 if ( err_status & 0x40 ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
136 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
137 print(" PARITY ERR "); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
138 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
139 /* Ignore current byte if there was an error */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
140 if ( err_status ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
141 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
142 uart##uartNum##_rx_status = UARTStatus_Wait; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
143 if ( Connect_debug ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
144 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
145 print( NL ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
146 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
147 continue; \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
148 } \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
149 switch ( uart##uartNum##_rx_status ) \ |
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 case UARTStatus_Wait: \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
152 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
153 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
154 print(" Wait "); \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
155 } \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
156 uart##uartNum##_rx_status = byteRead == 0x16 ? UARTStatus_SYN : UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
157 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
158 case UARTStatus_SYN: \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
159 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
160 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
161 print(" SYN "); \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
162 } \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
163 uart##uartNum##_rx_status = byteRead == 0x01 ? UARTStatus_SOH : UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
164 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
165 case UARTStatus_SOH: \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
166 { \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
167 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
168 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
169 print(" SOH "); \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
170 } \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
171 /* Check if this is actually a reserved CMD 0x16 */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
172 if ( byteRead == Command_SYN ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
173 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
174 uart##uartNum##_rx_status = UARTStatus_SYN; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
175 break; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
176 } \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
177 /* Otherwise process the command */ \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
178 uint8_t byte = byteRead; \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
179 if ( byte < Command_TOP ) \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
180 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
181 uart##uartNum##_rx_status = UARTStatus_Command; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
182 uart##uartNum##_rx_command = byte; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
183 uart##uartNum##_rx_bytes_waiting = 0xFFFF; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
184 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
185 else \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
186 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
187 uart##uartNum##_rx_status = UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
188 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
189 switch ( uart##uartNum##_rx_command ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
190 { \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
191 case IdRequest: \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
192 Connect_receive_IdRequest( 0, (uint16_t*)&uart##uartNum##_rx_bytes_waiting, uartNum ); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
193 uart##uartNum##_rx_status = UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
194 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
195 default: \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
196 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
197 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
198 print(" ### "); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
199 printHex( uart##uartNum##_rx_command ); \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
200 } \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
201 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
202 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
203 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
204 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
205 case UARTStatus_Command: \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
206 { \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
207 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
208 { \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
209 print(" CMD "); \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
210 } \ |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
211 /* Call specific UARTConnect command receive function */ \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
212 uint8_t (*rcvFunc)(uint8_t, uint16_t(*), uint8_t) = (uint8_t(*)(uint8_t, uint16_t(*), uint8_t))(Connect_receiveFunctions[ uart##uartNum##_rx_command ]); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
213 if ( rcvFunc( byteRead, (uint16_t*)&uart##uartNum##_rx_bytes_waiting, uartNum ) ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
214 uart##uartNum##_rx_status = UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
215 break; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
216 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
217 default: \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
218 erro_msg("Invalid UARTStatus..."); \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
219 uart##uartNum##_rx_status = UARTStatus_Wait; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
220 available++; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
221 continue; \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
222 } \ |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
223 if ( Connect_debug ) \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
224 { \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
225 print( NL ); \ |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
226 } \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
227 } \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
228 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
229 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
230 // Macros for locking/unlock Tx buffers |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
231 #define uart_lockTx( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
232 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
233 /* First, secure place in line for the resource */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
234 while ( uart_lock_m( uartNum ) ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
235 uart_lock_m( uartNum ) = 1; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
236 /* Next, wait unit the UART is ready */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
237 while ( uart_tx_status_m( uartNum ) != UARTStatus_Ready ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
238 uart_tx_status_m( uartNum ) = UARTStatus_Wait; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
239 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
240 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
241 #define uart_lockBothTx( uartNum1, uartNum2 ) \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
242 { \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
243 /* First, secure place in line for the resource */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
244 while ( uart_lock_m( uartNum1 ) || uart_lock_m( uartNum2 ) ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
245 uart_lock_m( uartNum1 ) = 1; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
246 uart_lock_m( uartNum2 ) = 1; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
247 /* Next, wait unit the UARTs are ready */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
248 while ( uart_tx_status_m( uartNum1 ) != UARTStatus_Ready || uart_tx_status_m( uartNum2 ) != UARTStatus_Ready ); \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
249 uart_tx_status_m( uartNum1 ) = UARTStatus_Wait; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
250 uart_tx_status_m( uartNum2 ) = UARTStatus_Wait; \ |
307
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
253 #define uart_unlockTx( uartNum ) \ |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
254 { \ |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
255 /* Ready the UART */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
256 uart_tx_status_m( uartNum ) = UARTStatus_Ready; \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
257 /* Unlock the resource */ \ |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
258 uart_lock_m( uartNum ) = 0; \ |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
259 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
260 |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
263 // ----- Function Declarations ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
264 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
265 // CLI Functions |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
266 void cliFunc_connectCmd ( char *args ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
267 void cliFunc_connectDbg ( char *args ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
268 void cliFunc_connectIdl ( char *args ); |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
269 void cliFunc_connectLst ( char *args ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
270 void cliFunc_connectMst ( char *args ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
271 void cliFunc_connectRst ( char *args ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
272 void cliFunc_connectSts ( char *args ); |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
276 // ----- Variables ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
277 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
278 // Connect Module command dictionary |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
279 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
|
280 CLIDict_Entry( connectDbg, "Toggle UARTConnect debug mode." ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
281 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
|
282 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
|
283 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
|
284 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
|
285 CLIDict_Entry( connectSts, "UARTConnect status." ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
286 CLIDict_Def( uartConnectCLIDict, "UARTConnect Module Commands" ) = { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
287 CLIDict_Item( connectCmd ), |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
288 CLIDict_Item( connectDbg ), |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
289 CLIDict_Item( connectIdl ), |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
290 CLIDict_Item( connectLst ), |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
291 CLIDict_Item( connectMst ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
292 CLIDict_Item( connectRst ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
293 CLIDict_Item( connectSts ), |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
294 { 0, 0, 0 } // Null entry for dictionary end |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
297 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
298 // -- Connect Device Id Variables -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
299 uint8_t Connect_id = 255; // Invalid, unset |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
300 uint8_t Connect_master = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
301 uint8_t Connect_maxId = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
302 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
303 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
304 // -- Control Variables -- |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
305 uint32_t Connect_lastCheck = 0; // Cable Check scheduler |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
306 uint8_t Connect_debug = 0; // Set 1 for debug |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
307 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
|
308 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
309 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
310 // -- Rx Status Variables -- |
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 volatile UARTStatus uart0_rx_status; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
313 volatile UARTStatus uart1_rx_status; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
314 volatile uint16_t uart0_rx_bytes_waiting; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
315 volatile uint16_t uart1_rx_bytes_waiting; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
316 volatile Command uart0_rx_command; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
317 volatile Command uart1_rx_command; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
318 volatile uint8_t uart0_lock; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
319 volatile uint8_t uart1_lock; |
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 // -- Tx Status Variables -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
323 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
324 volatile UARTStatus uart0_tx_status; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
325 volatile UARTStatus uart1_tx_status; |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
328 // -- Ring Buffer Variables -- |
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 #define uart_buffer_size UARTConnectBufSize_define |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
331 volatile uint8_t uart0_buffer_head; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
332 volatile uint8_t uart0_buffer_tail; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
333 volatile uint8_t uart0_buffer_items; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
334 volatile uint8_t uart0_buffer[uart_buffer_size]; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
335 volatile uint8_t uart1_buffer_head; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
336 volatile uint8_t uart1_buffer_tail; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
337 volatile uint8_t uart1_buffer_items; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
338 volatile uint8_t uart1_buffer[uart_buffer_size]; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
339 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
340 volatile uint8_t uarts_configured = 0; |
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 // -- Ring Buffer Convenience Functions -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
344 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
345 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
|
346 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
347 // Too big to fit into buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
348 if ( count > uart_buffer_size ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
349 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
350 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
|
351 return; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
352 } |
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 // Choose the uart |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
355 switch ( uart ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
356 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
357 uart_addTxBuffer( UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
358 uart_addTxBuffer( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
359 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
360 erro_msg("Invalid UART to send from..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
361 break; |
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 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
364 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
365 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
366 // -- Connect send functions -- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
367 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
368 // patternLen defines how many bytes should the incrementing pattern have |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
369 void Connect_send_CableCheck( uint8_t patternLen ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
370 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
371 // 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
|
372 uart_lockBothTx( UART_Master, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
373 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
374 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
375 uint8_t header[] = { 0x16, 0x01, CableCheck, patternLen }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
376 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
377 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
378 Connect_addBytes( header, sizeof( header ), UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
379 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
380 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
381 // Send 0xD2 (11010010) for each argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
382 uint8_t value = 0xD2; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
383 for ( uint8_t c = 0; c < patternLen; c++ ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
384 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
385 Connect_addBytes( &value, 1, UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
386 Connect_addBytes( &value, 1, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
387 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
388 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
389 // Release Tx buffers |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
390 uart_unlockTx( UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
391 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
392 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
393 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
394 void Connect_send_IdRequest() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
395 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
396 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
397 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
398 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
399 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
400 uint8_t header[] = { 0x16, 0x01, IdRequest }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
401 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
402 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
403 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
404 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
405 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
406 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
407 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
408 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
409 // id is the value the next slave should enumerate as |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
410 void Connect_send_IdEnumeration( uint8_t id ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
411 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
412 // Lock slave bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
413 uart_lockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
414 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
415 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
416 uint8_t header[] = { 0x16, 0x01, IdEnumeration, id }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
417 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
418 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
419 Connect_addBytes( header, sizeof( header ), 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 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
422 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
423 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
424 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
425 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
426 void Connect_send_IdReport( uint8_t id ) |
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 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
429 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
430 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
431 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
432 uint8_t header[] = { 0x16, 0x01, IdReport, id }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
433 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
434 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
435 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
436 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
437 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
438 uart_unlockTx( UART_Master ); |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
441 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
442 // 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
|
443 // 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
|
444 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
|
445 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
446 // Lock master bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
447 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
448 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
449 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
450 uint8_t header[] = { 0x16, 0x01, ScanCode, id, numScanCodes }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
451 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
452 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
453 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
454 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
455 // Send each of the scan codes |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
456 Connect_addBytes( (uint8_t*)scanCodeStateList, numScanCodes * TriggerGuideSize, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
457 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
458 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
459 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
460 } |
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 // id is the currently assigned id to the slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
463 // 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
|
464 // 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
|
465 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
|
466 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
467 // Lock slave bound Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
468 uart_lockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
469 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
470 // Prepare header |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
471 uint8_t header[] = { 0x16, 0x01, Animation, id, numParams }; |
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 // Send header |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
474 Connect_addBytes( header, sizeof( header ), UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
475 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
476 // Send each of the scan codes |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
477 Connect_addBytes( paramList, numParams, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
478 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
479 // Unlock Tx |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
480 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
481 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
482 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
483 void Connect_send_Idle( uint8_t num ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
484 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
485 // 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
|
486 uart_lockBothTx( UART_Slave, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
487 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
488 // 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
|
489 uint8_t value = 0x16; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
490 for ( uint8_t c = 0; c < num; c++ ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
491 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
492 Connect_addBytes( &value, 1, UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
493 Connect_addBytes( &value, 1, UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
494 } |
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 // Release Tx buffers |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
497 uart_unlockTx( UART_Master ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
498 uart_unlockTx( UART_Slave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
499 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
500 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
501 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
502 // -- Connect receive functions -- |
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 // - Cable Check variables - |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
505 uint32_t Connect_cableFaultsMaster = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
506 uint32_t Connect_cableFaultsSlave = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
507 uint32_t Connect_cableChecksMaster = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
508 uint32_t Connect_cableChecksSlave = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
509 uint8_t Connect_cableOkMaster = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
510 uint8_t Connect_cableOkSlave = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
511 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
512 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
|
513 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
514 // Check if this is the first byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
515 if ( *pending_bytes == 0xFFFF ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
516 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
517 *pending_bytes = byte; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
518 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
519 if ( Connect_debug ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
520 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
521 dbug_msg("PENDING SET -> "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
522 printHex( byte ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
523 print(" "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
524 printHex( *pending_bytes ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
525 print( NL ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
526 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
527 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
528 // Verify byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
529 else |
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 (*pending_bytes)--; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
532 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
533 // The argument bytes are always 0xD2 (11010010) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
534 if ( byte != 0xD2 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
535 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
536 warn_print("Cable Fault!"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
537 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
538 // Check which side of the chain |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
539 if ( uart_num == UART_Slave ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
540 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
541 Connect_cableFaultsSlave++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
542 Connect_cableOkSlave = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
543 print(" Slave "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
544 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
545 else |
307
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 Connect_cableFaultsMaster++; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
548 Connect_cableOkMaster = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
549 print(" Master "); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
550 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
551 printHex( byte ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
552 print( NL ); |
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 // Signal that the command should wait for a SYN again |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
555 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
556 } |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
557 else |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
558 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
559 // Check which side of the chain |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
560 if ( uart_num == UART_Slave ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
561 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
562 Connect_cableChecksSlave++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
563 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
564 else |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
565 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
566 Connect_cableChecksMaster++; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
567 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
568 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
569 } |
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 // If cable check was successful, set cable ok |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
572 if ( *pending_bytes == 0 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
573 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
574 if ( uart_num == UART_Slave ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
575 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
576 Connect_cableOkSlave = 1; |
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 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
579 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
580 Connect_cableOkMaster = 1; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
581 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
582 } |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
583 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
584 if ( Connect_debug ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
585 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
586 dbug_msg("CABLECHECK RECEIVE - "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
587 printHex( byte ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
588 print(" "); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
589 printHex( *pending_bytes ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
590 print( NL ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
591 } |
307
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 // Check whether the cable check has finished |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
594 return *pending_bytes == 0 ? 1 : 0; |
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 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
597 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
|
598 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
599 dbug_print("IdRequest"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
600 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
601 if ( uart_num == UART_Master ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
602 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
603 erro_print("Invalid IdRequest direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
604 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
605 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
606 // Check if master, begin IdEnumeration |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
607 if ( Connect_master ) |
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 // The first device is always id 1 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
610 // Id 0 is reserved for the master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
611 Connect_send_IdEnumeration( 1 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
612 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
613 // Propagate IdRequest |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
614 else |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
615 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
616 Connect_send_IdRequest(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
617 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
618 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
619 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
620 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
621 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
622 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
|
623 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
624 dbug_print("IdEnumeration"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
625 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
626 if ( uart_num == UART_Slave ) |
307
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 erro_print("Invalid IdEnumeration direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
629 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
630 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
631 // Set the device id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
632 Connect_id = id; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
633 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
634 // Send reponse back to master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
635 Connect_send_IdReport( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
636 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
637 // Propogate next Id if the connection is ok |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
638 if ( Connect_cableOkSlave ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
639 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
640 Connect_send_IdEnumeration( id + 1 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
641 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
642 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
643 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
644 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
645 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
646 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
|
647 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
648 dbug_print("IdReport"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
649 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
650 if ( uart_num == UART_Master ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
651 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
652 erro_print("Invalid IdRequest direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
653 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
654 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
655 // Track Id response if master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
656 if ( Connect_master ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
657 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
658 info_msg("Id Reported: "); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
659 printHex( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
660 print( NL ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
661 |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
662 // Check if this is the highest ID |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
663 if ( id > Connect_maxId ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
664 Connect_maxId = id; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
665 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
666 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
667 // Propagate id if yet another slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
668 else |
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 Connect_send_IdReport( id ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
671 } |
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 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
674 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
675 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
676 // - Scan Code Variables - |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
677 TriggerGuide Connect_receive_ScanCodeBuffer; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
678 uint8_t Connect_receive_ScanCodeBufferPos; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
679 uint8_t Connect_receive_ScanCodeDeviceId; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
680 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
681 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
|
682 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
683 // Check the directionality |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
684 if ( uart_num == 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 erro_print("Invalid ScanCode direction..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
687 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
688 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
689 // Master node, trigger scan codes |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
690 if ( Connect_master ) switch ( (*pending_bytes)-- ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
691 { |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
692 // Byte count always starts at 0xFFFF |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
693 case 0xFFFF: // Device Id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
694 Connect_receive_ScanCodeDeviceId = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
695 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
696 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
697 case 0xFFFE: // Number of TriggerGuides in bytes (byte * 3) |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
698 *pending_bytes = byte * sizeof( TriggerGuide ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
699 Connect_receive_ScanCodeBufferPos = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
700 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
701 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
702 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
703 // Set the specific TriggerGuide entry |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
704 ((uint8_t*)&Connect_receive_ScanCodeBuffer)[ Connect_receive_ScanCodeBufferPos++ ] = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
705 |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
706 // Reset the BufferPos if higher than sizeof TriggerGuide |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
707 // And send the TriggerGuide to the Macro Module |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
708 if ( Connect_receive_ScanCodeBufferPos >= sizeof( TriggerGuide ) ) |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
709 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
710 Connect_receive_ScanCodeBufferPos = 0; |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
711 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
712 // Adjust ScanCode offset |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
713 if ( Connect_receive_ScanCodeDeviceId > 0 ) |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
714 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
715 // Check if this node is too large |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
716 if ( Connect_receive_ScanCodeDeviceId >= InterconnectNodeMax ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
717 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
718 warn_msg("Not enough interconnect layout nodes configured: "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
719 printHex( Connect_receive_ScanCodeDeviceId ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
720 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
721 break; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
722 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
723 |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
724 // This variable is in generatedKeymaps.h |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
725 extern uint8_t InterconnectOffsetList[]; |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
726 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
|
727 } |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
728 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
729 // ScanCode receive debug |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
730 if ( Connect_debug ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
731 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
732 dbug_msg(""); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
733 printHex( Connect_receive_ScanCodeBuffer.type ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
734 print(" "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
735 printHex( Connect_receive_ScanCodeBuffer.state ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
736 print(" "); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
737 printHex( Connect_receive_ScanCodeBuffer.scanCode ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
738 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
739 } |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
740 |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
741 // Send ScanCode to macro module |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
742 Macro_interconnectAdd( &Connect_receive_ScanCodeBuffer ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
743 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
744 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
745 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
746 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
747 // Propagate ScanCode packet |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
748 else switch ( (*pending_bytes)-- ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
749 { |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
750 // Byte count always starts at 0xFFFF |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
751 case 0xFFFF: // Device Id |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
752 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
753 Connect_receive_ScanCodeDeviceId = byte; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
754 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
755 // Lock the master Tx buffer |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
756 uart_lockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
757 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
758 // Send header + Id byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
759 uint8_t header[] = { 0x16, 0x01, ScanCode, byte }; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
760 Connect_addBytes( header, sizeof( header ), UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
761 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
762 } |
360
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
763 case 0xFFFE: // Number of TriggerGuides in bytes |
dbefb68411e1
Initial UARTConnect scancode support
Jacob Alexander <haata@kiibohd.com>
parents:
357
diff
changeset
|
764 *pending_bytes = byte * sizeof( TriggerGuide ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
765 Connect_receive_ScanCodeBufferPos = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
766 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
767 // Pass through byte |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
768 Connect_addBytes( &byte, 1, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
769 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
770 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
771 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
772 // Pass through byte |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
773 Connect_addBytes( &byte, 1, UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
774 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
775 // Unlock Tx Buffer after sending last byte |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
776 if ( *pending_bytes == 0 ) |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
777 uart_unlockTx( UART_Master ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
778 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
779 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
780 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
781 // Check whether the scan codes have finished sending |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
782 return *pending_bytes == 0 ? 1 : 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
783 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
784 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
785 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
|
786 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
787 dbug_print("Animation"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
788 return 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
789 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
790 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
791 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
792 // Baud Rate |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
793 // 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
|
794 uint16_t Connect_baud = UARTConnectBaud_define; // Max setting of 8191 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
795 uint16_t Connect_baudFine = UARTConnectBaudFine_define; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
796 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
797 // Connect receive function lookup |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
798 void *Connect_receiveFunctions[] = { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
799 Connect_receive_CableCheck, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
800 Connect_receive_IdRequest, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
801 Connect_receive_IdEnumeration, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
802 Connect_receive_IdReport, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
803 Connect_receive_ScanCode, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
804 Connect_receive_Animation, |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
805 }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
806 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
807 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
808 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
809 // ----- Interrupt Functions ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
810 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
811 // Master / UART0 ISR |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
812 void uart0_status_isr() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
813 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
814 // Process Rx buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
815 uart_processRx( 0 ); |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
818 // Slave / UART1 ISR |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
819 void uart1_status_isr() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
820 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
821 // Process Rx buffer |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
822 uart_processRx( 1 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
823 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
824 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
825 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
826 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
827 // ----- Functions ----- |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
828 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
829 // Resets the state of the UART buffers and state variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
830 void Connect_reset() |
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 // Rx Status Variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
833 uart0_rx_status = UARTStatus_Wait; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
834 uart1_rx_status = UARTStatus_Wait; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
835 uart0_rx_bytes_waiting = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
836 uart1_rx_bytes_waiting = 0; |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
837 uart0_lock = 0; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
838 uart1_lock = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
839 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
840 // Tx Status Variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
841 uart0_tx_status = UARTStatus_Ready; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
842 uart1_tx_status = UARTStatus_Ready; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
843 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
844 // Ring Buffer Variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
845 uart0_buffer_head = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
846 uart0_buffer_tail = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
847 uart0_buffer_items = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
848 uart1_buffer_head = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
849 uart1_buffer_tail = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
850 uart1_buffer_items = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
851 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
852 |
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 // Setup connection to other side |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
855 // - Only supports a single slave and master |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
856 // - 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
|
857 // - If both sides assert master, flash error leds |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
858 void Connect_setup( uint8_t master ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
859 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
860 // Indication that UARTs are not ready |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
861 uarts_configured = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
862 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
863 // Register Connect CLI dictionary |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
864 CLI_registerDictionary( uartConnectCLIDict, uartConnectCLIDictName ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
865 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
866 // Check if master |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
867 Connect_master = master; |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
868 if ( Connect_master ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
869 Connect_id = 0; // 0x00 is always the master Id |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
870 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
871 // Master / UART0 setup |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
872 // Slave / UART1 setup |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
873 // Setup the the UART interface for keyboard data input |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
874 SIM_SCGC4 |= SIM_SCGC4_UART0; // Disable clock gating |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
875 SIM_SCGC4 |= SIM_SCGC4_UART1; // Disable clock gating |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
876 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
877 // Pin Setup for UART0 / UART1 |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
878 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
|
879 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
|
880 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
|
881 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
|
882 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
883 // Baud Rate setting |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
884 UART0_BDH = (uint8_t)(Connect_baud >> 8); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
885 UART0_BDL = (uint8_t)Connect_baud; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
886 UART0_C4 = Connect_baudFine; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
887 UART1_BDH = (uint8_t)(Connect_baud >> 8); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
888 UART1_BDL = (uint8_t)Connect_baud; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
889 UART1_C4 = Connect_baudFine; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
890 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
891 // 8 bit, Even Parity, Idle Character bit after stop |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
892 // 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
|
893 // 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
|
894 // 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
|
895 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
|
896 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
|
897 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
898 // Number of bytes in FIFO before TX Interrupt |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
899 UART0_TWFIFO = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
900 UART1_TWFIFO = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
901 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
902 // Number of bytes in FIFO before RX Interrupt |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
903 UART0_RWFIFO = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
904 UART1_RWFIFO = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
905 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
906 // Enable TX and RX FIFOs |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
907 UART0_PFIFO = UART_PFIFO_TXFE | UART_PFIFO_RXFE; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
908 UART1_PFIFO = UART_PFIFO_TXFE | UART_PFIFO_RXFE; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
909 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
910 // Reciever Inversion Disabled, LSBF |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
911 // UART_S2_RXINV UART_S2_MSBF |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
912 UART0_S2 |= 0x00; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
913 UART1_S2 |= 0x00; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
914 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
915 // Transmit Inversion Disabled |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
916 // UART_C3_TXINV |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
917 UART0_C3 |= 0x00; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
918 UART1_C3 |= 0x00; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
919 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
920 // TX Enabled, RX Enabled, RX Interrupt Enabled |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
921 // UART_C2_TE UART_C2_RE UART_C2_RIE |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
922 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
|
923 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
|
924 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
925 // Add interrupts to the vector table |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
926 NVIC_ENABLE_IRQ( IRQ_UART0_STATUS ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
927 NVIC_ENABLE_IRQ( IRQ_UART1_STATUS ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
928 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
929 // UARTs are now ready to go |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
930 uarts_configured = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
931 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
932 // Reset the state of the UART variables |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
933 Connect_reset(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
934 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
935 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
936 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
937 // Scan for updates in the master/slave |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
938 // - Interrupts will deal with most input functions |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
939 // - Used to send queries |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
940 // - SyncEvent is sent immediately once the current command is sent |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
941 // - SyncEvent is also blocking until sent |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
942 void Connect_scan() |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
943 { |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
944 // Check if initially configured as a slave and usb comes up |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
945 // Then reconfigure as a master |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
946 if ( !Connect_master && Output_Available && !Connect_override ) |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
947 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
948 Connect_setup( Output_Available ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
949 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
950 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
951 // Limit how often we do cable checks |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
952 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
|
953 uint32_t current_time = systick_millis_count; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
954 if ( Connect_lastCheck != current_time |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
955 && ( current_time & time_compare ) == time_compare |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
956 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
957 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
958 // 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
|
959 Connect_lastCheck = current_time; |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
960 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
961 // Send a cable check command of 2 bytes |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
962 Connect_send_CableCheck( UARTConnectCableCheckLength_define ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
963 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
964 // 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
|
965 // Don't bother sending if there are cable issues |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
966 if ( !Connect_master && Connect_id == 0xFF && Connect_cableOkMaster ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
967 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
968 Connect_send_IdRequest(); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
969 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
970 } |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
971 |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
972 // Only process commands if uarts have been configured |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
973 if ( uarts_configured ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
974 { |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
975 // 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
|
976 // This happens if there was previously nothing to send |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
977 if ( uart0_buffer_items > 0 && UART0_TCFIFO == 0 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
978 uart_fillTxFifo( 0 ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
979 if ( uart1_buffer_items > 0 && UART1_TCFIFO == 0 ) |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
980 uart_fillTxFifo( 1 ); |
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
981 } |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
982 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
983 |
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 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
986 // ----- CLI Command Functions ----- |
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 void cliFunc_connectCmd( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
989 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
990 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
991 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
992 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
993 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
994 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
995 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
996 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
997 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
998 switch ( numToInt( &arg1Ptr[0] ) ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
999 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1000 case CableCheck: |
347
136e47478441
UARTConnect enumeration working!
Jacob Alexander <haata@kiibohd.com>
parents:
307
diff
changeset
|
1001 Connect_send_CableCheck( UARTConnectCableCheckLength_define ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1002 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1003 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1004 case IdRequest: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1005 Connect_send_IdRequest(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1006 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1007 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1008 case IdEnumeration: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1009 Connect_send_IdEnumeration( 5 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1010 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1011 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1012 case IdReport: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1013 Connect_send_IdReport( 8 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1014 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1015 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1016 case ScanCode: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1017 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1018 TriggerGuide scanCodes[] = { { 0x00, 0x01, 0x05 }, { 0x00, 0x03, 0x16 } }; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1019 Connect_send_ScanCode( 10, scanCodes, 2 ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1020 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1021 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1022 case Animation: |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1023 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1024 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1025 case RemoteCapability: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1026 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1027 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1028 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1029 case RemoteOutput: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1030 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1031 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1032 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1033 case RemoteInput: |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1034 // TODO |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1035 break; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1036 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1037 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1038 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1039 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1040 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1041 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1042 void cliFunc_connectDbg( char* args ) |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1043 { |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1044 print( NL ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1045 info_msg("Connect Debug Mode Toggle"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1046 Connect_debug = !Connect_debug; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1047 } |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1048 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1049 void cliFunc_connectIdl( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1050 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1051 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1052 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1053 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1054 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1055 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1056 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1057 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1058 info_msg("Sending Sync Idles..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1059 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1060 uint8_t count = numToInt( &arg1Ptr[0] ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1061 // Default to 2 idles |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1062 if ( count == 0 ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1063 count = 2; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1064 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1065 Connect_send_Idle( count ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1066 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1067 |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1068 void cliFunc_connectLst( char* args ) |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1069 { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1070 const char *Command_strs[] = { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1071 "CableCheck", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1072 "IdRequest", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1073 "IdEnumeration", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1074 "IdReport", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1075 "ScanCode", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1076 "Animation", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1077 "RemoteCapability", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1078 "RemoteOutput", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1079 "RemoteInput", |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1080 }; |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1081 |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1082 print( NL ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1083 info_msg("List of UARTConnect commands"); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1084 for ( uint8_t cmd = 0; cmd < Command_TOP; cmd++ ) |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1085 { |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1086 print( NL ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1087 printInt8( cmd ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1088 print(" - "); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1089 dPrint( (char*)Command_strs[ cmd ] ); |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1090 } |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1091 } |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1092 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1093 void cliFunc_connectMst( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1094 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1095 // Parse number from argument |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1096 // NOTE: Only first argument is used |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1097 char* arg1Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1098 char* arg2Ptr; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1099 CLI_argumentIsolation( args, &arg1Ptr, &arg2Ptr ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1100 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1101 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1102 |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1103 // Set override |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1104 Connect_override = 1; |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1105 |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1106 switch ( arg1Ptr[0] ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1107 { |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1108 // Disable override |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1109 case 'd': |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1110 case 'D': |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1111 Connect_override = 0; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1112 case 's': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1113 case 'S': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1114 info_msg("Setting device as slave."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1115 Connect_master = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1116 Connect_id = 0xFF; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1117 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1118 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1119 case 'm': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1120 case 'M': |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1121 default: |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1122 info_msg("Setting device as master."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1123 Connect_master = 1; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1124 Connect_id = 0; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1125 break; |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1126 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1127 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1128 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1129 void cliFunc_connectRst( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1130 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1131 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1132 info_msg("Resetting UARTConnect state..."); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1133 Connect_reset(); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1134 |
348
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1135 // Reset node id |
06225a619152
Adding connection type list
Jacob Alexander <haata@kiibohd.com>
parents:
347
diff
changeset
|
1136 Connect_id = 0xFF; |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1137 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1138 |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1139 void cliFunc_connectSts( char* args ) |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1140 { |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1141 print( NL ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1142 info_msg("UARTConnect Status"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1143 print( NL "Device Type:\t" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1144 print( Connect_master ? "Master" : "Slave" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1145 print( NL "Device Id:\t" ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1146 printHex( Connect_id ); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1147 print( NL "Max Id:\t" ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1148 printHex( Connect_maxId ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1149 print( NL "Master <=" NL "\tStatus:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1150 printHex( Connect_cableOkMaster ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1151 print( NL "\tFaults:\t"); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1152 printHex32( Connect_cableFaultsMaster ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1153 print("/"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1154 printHex32( Connect_cableChecksMaster ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1155 print( NL "\tRx:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1156 printHex( uart1_rx_status ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1157 print( NL "\tTx:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1158 printHex( uart1_tx_status ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1159 print( NL "Slave <=" NL "\tStatus:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1160 printHex( Connect_cableOkSlave ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1161 print( NL "\tFaults:\t"); |
361
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1162 printHex32( Connect_cableFaultsSlave ); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1163 print("/"); |
7c6ac7b88cda
Working support for Interconnect
Jacob Alexander <haata@kiibohd.com>
parents:
360
diff
changeset
|
1164 printHex32( Connect_cableChecksSlave ); |
307
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1165 print( NL "\tRx:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1166 printHex( uart0_rx_status ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1167 print( NL "\tTx:\t"); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1168 printHex( uart0_tx_status ); |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1169 } |
ecd2ae35d25c
Initial commit for UARTConnect module
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
1170 |