FRDM-IMX93 for NXP CUP
FRDM-IMX93 support for NXP CUP
 
Loading...
Searching...
No Matches
pixy2_transport.h
Go to the documentation of this file.
1/*
2 * Copyright 2025 NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
15#ifndef _PIXY2_TRANSPORT_H_
16#define _PIXY2_TRANSPORT_H_
17
18#include <zephyr/device.h>
19
30 uint8_t sync0;
32 uint8_t sync1;
34 uint8_t type;
36 uint8_t len;
38 uint16_t checksum;
39} __packed;
40
51 uint8_t sync0;
53 uint8_t sync1;
55 uint8_t type;
57 uint8_t len;
58} __packed;
59
60/*
61 * @struct pixy2_message
62 * @brief Pixy2 message
63 *
64 * A Pixy2 message is either a request or a reply.
65 */
72 uint8_t *payload;
73};
74
84 /* peripheral controller device */
85 const struct device *ctlr;
86 /* transport API */
87 const struct pixy2_transport_api *api;
88};
89
100 const uint32_t address;
101};
102
113 const uint32_t sidx;
114};
115
123 int (*transceive)(struct pixy2_transport *t,
124 struct pixy2_message *req,
125 struct pixy2_message *reply);
126};
127
141static inline int pixy2_transport_transceive(struct pixy2_transport *t,
142 struct pixy2_message *req,
143 struct pixy2_message *reply)
144{
145 /* sanity checks */
146 if (!t || !t->ctlr || !t->api->transceive) {
147 return -EINVAL;
148 }
149
150 return t->api->transceive(t, req, reply);
151}
152
153#ifdef CONFIG_NXPCUP_PIXY2_SPI_TRANSPORT
154extern const struct pixy2_transport_api pixy2_transport_spi_api;
155#endif /* CONFIG_PIXY2_SPI_TRANSPORT */
156
157#ifdef CONFIG_NXPCUP_PIXY2_I2C_TRANSPORT
158extern const struct pixy2_transport_api pixy2_transport_i2c_api;
159#endif /* CONFIG_PIXY2_I2C_TRANSPORT */
160
161#endif /* _PIXY2_TRANSPORT_H_ */
static int pixy2_transport_transceive(struct pixy2_transport *t, struct pixy2_message *req, struct pixy2_message *reply)
Send a request and wait for its reply.
Definition pixy2_transport.h:141
Pixy2 message header with checksum included.
Definition pixy2_transport.h:28
uint8_t sync0
Definition pixy2_transport.h:30
uint8_t sync1
Definition pixy2_transport.h:32
uint8_t len
Definition pixy2_transport.h:36
uint8_t type
Definition pixy2_transport.h:34
uint16_t checksum
Definition pixy2_transport.h:38
Pixy2 message header with no checksum included.
Definition pixy2_transport.h:49
uint8_t sync0
Definition pixy2_transport.h:51
uint8_t sync1
Definition pixy2_transport.h:53
uint8_t len
Definition pixy2_transport.h:57
uint8_t type
Definition pixy2_transport.h:55
Pixy2 I2C transport structure.
Definition pixy2_transport.h:96
struct pixy2_transport t
Definition pixy2_transport.h:98
const uint32_t address
Definition pixy2_transport.h:100
Definition pixy2_transport.h:66
uint8_t * payload
Definition pixy2_transport.h:72
bool checksum
Definition pixy2_transport.h:70
struct pixy2_checksum_header hdr
Definition pixy2_transport.h:68
Pixy2 SPI transport structure.
Definition pixy2_transport.h:109
const uint32_t sidx
Definition pixy2_transport.h:113
struct pixy2_transport t
Definition pixy2_transport.h:111
Pixy2 transport API.
Definition pixy2_transport.h:122
Pixy2 transport layer structure.
Definition pixy2_transport.h:83