aboutsummaryrefslogtreecommitdiff
path: root/keyboards/fortitude60/serial.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/fortitude60/serial.h')
-rw-r--r--keyboards/fortitude60/serial.h59
1 files changed, 34 insertions, 25 deletions
diff --git a/keyboards/fortitude60/serial.h b/keyboards/fortitude60/serial.h
index d00898055..2e53928df 100644
--- a/keyboards/fortitude60/serial.h
+++ b/keyboards/fortitude60/serial.h
@@ -4,40 +4,47 @@
4#include <stdbool.h> 4#include <stdbool.h>
5 5
6// ///////////////////////////////////////////////////////////////// 6// /////////////////////////////////////////////////////////////////
7// Need Soft Serial defines in serial_config.h 7// Need Soft Serial defines in config.h
8// ///////////////////////////////////////////////////////////////// 8// /////////////////////////////////////////////////////////////////
9// ex. 9// ex.
10// #define SERIAL_PIN_DDR DDRD 10// #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6
11// #define SERIAL_PIN_PORT PORTD 11// OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5
12// #define SERIAL_PIN_INPUT PIND 12// // 1: about 137kbps (default)
13// #define SERIAL_PIN_MASK _BV(PD?) ?=0,2 13// // 2: about 75kbps
14// #define SERIAL_PIN_INTERRUPT INT?_vect ?=0,2 14// // 3: about 39kbps
15// // 4: about 26kbps
16// // 5: about 20kbps
15// 17//
16// //// USE Simple API (OLD API, compatible with let's split serial.c) 18// //// USE OLD API (compatible with let's split serial.c)
17// ex. 19// ex.
18// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 20// #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
19// #define SERIAL_MASTER_BUFFER_LENGTH 1 21// #define SERIAL_MASTER_BUFFER_LENGTH 1
20// 22//
21// //// USE flexible API (using multi-type transaction function) 23// //// USE NEW API
22// #define SERIAL_USE_MULTI_TRANSACTION 24// //// USE simple API (using signle-type transaction function)
25// #define SERIAL_USE_SINGLE_TRANSACTION
26// //// USE flexible API (using multi-type transaction function)
27// #define SERIAL_USE_MULTI_TRANSACTION
23// 28//
24// ///////////////////////////////////////////////////////////////// 29// /////////////////////////////////////////////////////////////////
25 30
26 31
27#ifndef SERIAL_USE_MULTI_TRANSACTION 32//////////////// for backward compatibility ////////////////////////////////
28/* --- USE Simple API (OLD API, compatible with let's split serial.c) */ 33#if !defined(SERIAL_USE_SINGLE_TRANSACTION) && !defined(SERIAL_USE_MULTI_TRANSACTION)
29#if SERIAL_SLAVE_BUFFER_LENGTH > 0 34/* --- USE OLD API (compatible with let's split serial.c) */
30extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; 35 #if SERIAL_SLAVE_BUFFER_LENGTH > 0
31#endif 36 extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
32#if SERIAL_MASTER_BUFFER_LENGTH > 0 37 #endif
33extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; 38 #if SERIAL_MASTER_BUFFER_LENGTH > 0
34#endif 39 extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
40 #endif
35 41
36void serial_master_init(void); 42 void serial_master_init(void);
37void serial_slave_init(void); 43 void serial_slave_init(void);
38int serial_update_buffers(void); 44 int serial_update_buffers(void);
39 45
40#endif // USE Simple API 46#endif // end of USE OLD API
47////////////////////////////////////////////////////////////////////////////
41 48
42// Soft Serial Transaction Descriptor 49// Soft Serial Transaction Descriptor
43typedef struct _SSTD_t { 50typedef struct _SSTD_t {
@@ -47,16 +54,18 @@ typedef struct _SSTD_t {
47 uint8_t target2initiator_buffer_size; 54 uint8_t target2initiator_buffer_size;
48 uint8_t *target2initiator_buffer; 55 uint8_t *target2initiator_buffer;
49} SSTD_t; 56} SSTD_t;
57#define TID_LIMIT( table ) (sizeof(table) / sizeof(SSTD_t))
50 58
51// initiator is transaction start side 59// initiator is transaction start side
52void soft_serial_initiator_init(SSTD_t *sstd_table); 60void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size);
53// target is interrupt accept side 61// target is interrupt accept side
54void soft_serial_target_init(SSTD_t *sstd_table); 62void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size);
55 63
56// initiator resullt 64// initiator resullt
57#define TRANSACTION_END 0 65#define TRANSACTION_END 0
58#define TRANSACTION_NO_RESPONSE 0x1 66#define TRANSACTION_NO_RESPONSE 0x1
59#define TRANSACTION_DATA_ERROR 0x2 67#define TRANSACTION_DATA_ERROR 0x2
68#define TRANSACTION_TYPE_ERROR 0x4
60#ifndef SERIAL_USE_MULTI_TRANSACTION 69#ifndef SERIAL_USE_MULTI_TRANSACTION
61int soft_serial_transaction(void); 70int soft_serial_transaction(void);
62#else 71#else
@@ -72,9 +81,9 @@ int soft_serial_transaction(int sstd_index);
72// target: 81// target:
73// TRANSACTION_DATA_ERROR 82// TRANSACTION_DATA_ERROR
74// or TRANSACTION_ACCEPTED 83// or TRANSACTION_ACCEPTED
75#define TRANSACTION_ACCEPTED 0x4 84#define TRANSACTION_ACCEPTED 0x8
76#ifdef SERIAL_USE_MULTI_TRANSACTION 85#ifdef SERIAL_USE_MULTI_TRANSACTION
77int soft_serial_get_and_clean_status(int sstd_index); 86int soft_serial_get_and_clean_status(int sstd_index);
78#endif 87#endif
79 88
80#endif /* SOFT_SERIAL_H */ \ No newline at end of file 89#endif /* SOFT_SERIAL_H */