Commit | Line | Data |
---|---|---|
28929ad0 | 1 | #pragma once |
0fab3bbd | 2 | |
0fab3bbd TC |
3 | #include <stdbool.h> |
4 | ||
155e9310 TI |
5 | // ///////////////////////////////////////////////////////////////// |
6 | // Need Soft Serial defines in config.h | |
7 | // ///////////////////////////////////////////////////////////////// | |
8 | // ex. | |
155e9310 | 9 | // #define SOFT_SERIAL_PIN ?? // ?? = D0,D1,D2,D3,E6 |
72d4e4bf TI |
10 | // OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5 |
11 | // // 1: about 137kbps (default) | |
12 | // // 2: about 75kbps | |
13 | // // 3: about 39kbps | |
14 | // // 4: about 26kbps | |
15 | // // 5: about 20kbps | |
155e9310 | 16 | // |
72d4e4bf TI |
17 | // //// USE simple API (using signle-type transaction function) |
18 | // /* nothing */ | |
19 | // //// USE flexible API (using multi-type transaction function) | |
20 | // #define SERIAL_USE_MULTI_TRANSACTION | |
21 | // | |
22 | // ///////////////////////////////////////////////////////////////// | |
a012113d | 23 | |
72d4e4bf | 24 | // Soft Serial Transaction Descriptor |
b624f32f | 25 | typedef struct _SSTD_t { |
72d4e4bf | 26 | uint8_t *status; |
b624f32f | 27 | uint8_t initiator2target_buffer_size; |
72d4e4bf | 28 | uint8_t *initiator2target_buffer; |
b624f32f | 29 | uint8_t target2initiator_buffer_size; |
72d4e4bf TI |
30 | uint8_t *target2initiator_buffer; |
31 | } SSTD_t; | |
b624f32f | 32 | #define TID_LIMIT(table) (sizeof(table) / sizeof(SSTD_t)) |
0fab3bbd | 33 | |
72d4e4bf TI |
34 | // initiator is transaction start side |
35 | void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size); | |
36 | // target is interrupt accept side | |
37 | void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size); | |
0fab3bbd | 38 | |
72d4e4bf TI |
39 | // initiator resullt |
40 | #define TRANSACTION_END 0 | |
41 | #define TRANSACTION_NO_RESPONSE 0x1 | |
b624f32f | 42 | #define TRANSACTION_DATA_ERROR 0x2 |
43 | #define TRANSACTION_TYPE_ERROR 0x4 | |
72d4e4bf | 44 | #ifndef SERIAL_USE_MULTI_TRANSACTION |
b624f32f | 45 | int soft_serial_transaction(void); |
72d4e4bf | 46 | #else |
b624f32f | 47 | int soft_serial_transaction(int sstd_index); |
0fab3bbd | 48 | #endif |
72d4e4bf TI |
49 | |
50 | // target status | |
51 | // *SSTD_t.status has | |
52 | // initiator: | |
53 | // TRANSACTION_END | |
54 | // or TRANSACTION_NO_RESPONSE | |
55 | // or TRANSACTION_DATA_ERROR | |
56 | // target: | |
57 | // TRANSACTION_DATA_ERROR | |
58 | // or TRANSACTION_ACCEPTED | |
59 | #define TRANSACTION_ACCEPTED 0x8 | |
60 | #ifdef SERIAL_USE_MULTI_TRANSACTION | |
b624f32f | 61 | int soft_serial_get_and_clean_status(int sstd_index); |
72d4e4bf | 62 | #endif |