4
4
*/
5
5
6
6
#include <zephyr/sys/util.h>
7
-
8
7
#include "adi_tmc_spi.h"
9
8
10
9
#define BUFFER_SIZE 5U
11
10
12
11
#include <zephyr/logging/log.h>
13
-
14
12
LOG_MODULE_REGISTER (tmc_spi , CONFIG_SPI_LOG_LEVEL );
15
13
16
- static void parse_tmc_spi_status (const uint8_t status_byte )
17
- {
18
- if ((status_byte & BIT_MASK (0 )) != 0 ) {
19
- LOG_WRN ("spi dataframe: reset_flag detected" );
20
- }
21
- if ((status_byte & BIT_MASK (1 )) != 0 ) {
22
- LOG_WRN ("spi dataframe: driver_error(1) detected" );
23
- }
24
- if ((status_byte & BIT_MASK (2 )) != 0 ) {
25
- LOG_WRN ("spi dataframe: driver_error(2) detected" );
26
- }
27
- }
28
-
29
14
static void print_tx_rx_buffer (const uint8_t * const tx_buffer , const uint8_t * const rx_buffer )
30
15
{
31
16
LOG_HEXDUMP_DBG (tx_buffer , BUFFER_SIZE , "TX: " );
32
17
LOG_HEXDUMP_DBG (rx_buffer , BUFFER_SIZE , "RX: " );
33
18
}
34
19
35
20
int tmc_spi_read_register (const struct spi_dt_spec * bus , const uint8_t read_address_mask ,
36
- const uint8_t register_address , uint32_t * data )
21
+ const uint8_t register_address , uint32_t * data ,
22
+ parse_rx_buffer_cb_t parse_rx_buffer_cb )
37
23
{
38
24
uint8_t tx_buffer [BUFFER_SIZE ] = {read_address_mask & register_address , 0U , 0U , 0U , 0U };
39
25
uint8_t rx_buffer [BUFFER_SIZE ];
@@ -64,7 +50,9 @@ int tmc_spi_read_register(const struct spi_dt_spec *bus, const uint8_t read_addr
64
50
}
65
51
66
52
print_tx_rx_buffer (tx_buffer , rx_buffer );
67
- parse_tmc_spi_status (rx_buffer [0 ]);
53
+ if (parse_rx_buffer_cb ) {
54
+ parse_rx_buffer_cb (rx_buffer );
55
+ }
68
56
69
57
/** read the value from the address */
70
58
status = spi_transceive_dt (bus , & spi_buffer_array_tx , & spi_buffer_array_rx );
@@ -76,12 +64,15 @@ int tmc_spi_read_register(const struct spi_dt_spec *bus, const uint8_t read_addr
76
64
((uint32_t )rx_buffer [3 ] << 8 ) + (uint32_t )rx_buffer [4 ];
77
65
78
66
print_tx_rx_buffer (tx_buffer , rx_buffer );
79
- parse_tmc_spi_status (rx_buffer [0 ]);
67
+ if (parse_rx_buffer_cb ) {
68
+ parse_rx_buffer_cb (rx_buffer );
69
+ }
80
70
return status ;
81
71
}
82
72
83
73
int tmc_spi_write_register (const struct spi_dt_spec * bus , const uint8_t write_bit ,
84
- const uint8_t register_address , const uint32_t data )
74
+ const uint8_t register_address , const uint32_t data ,
75
+ parse_rx_buffer_cb_t parse_rx_buffer_cb )
85
76
{
86
77
uint8_t tx_buffer [BUFFER_SIZE ] = {write_bit | register_address , data >> 24 , data >> 16 ,
87
78
data >> 8 , data };
@@ -112,7 +103,9 @@ int tmc_spi_write_register(const struct spi_dt_spec *bus, const uint8_t write_bi
112
103
}
113
104
114
105
print_tx_rx_buffer (tx_buffer , rx_buffer );
115
- parse_tmc_spi_status (rx_buffer [0 ]);
106
+ if (parse_rx_buffer_cb ) {
107
+ parse_rx_buffer_cb (rx_buffer );
108
+ }
116
109
117
110
return status ;
118
111
}
0 commit comments