1 /*
2  * Copyright (c) 2024 DNDG srl
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef __ARDUINO_OPTA_BOARD_H
8 #define __ARDUINO_OPTA_BOARD_H
9 
10 #include <stdint.h>
11 
12 #define OPTA_OTP_MAGIC 0xB5
13 
14 #define OPTA_SERIAL_NUMBER_SIZE 24
15 
16 struct __packed opta_board_info {
17 	uint8_t magic;
18 	uint8_t version;
19 	union {
20 		uint16_t board_functionalities;
21 		struct {
22 			uint8_t wifi: 1;
23 			uint8_t rs485: 1;
24 			uint8_t ethernet: 1;
25 		} _board_functionalities_bits;
26 	};
27 	uint16_t revision;
28 	uint8_t external_flash_size;
29 	uint16_t vid;
30 	uint16_t pid;
31 	uint8_t mac_address[6];
32 	uint8_t mac_address_wifi[6];
33 };
34 
35 const struct opta_board_info *const opta_get_board_info(void);
36 
37 const char *const opta_get_serial_number(void);
38 
39 #endif /* __ARDUINO_OPTA_BOARD_H */
40