SEFile
Userspace drivers to manage a secure filesystem
 All Data Structures Files Functions Variables Typedefs Enumerator Macros Groups
L0.h
1 #pragma once
2 
3 #include "se3_common.h"
4 #include "se3comm.h"
5 #include "crc16.h"
6 
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 typedef struct se3_device_info_ {
13  se3_char path[SE3_MAX_PATH];
14  uint8_t serialno[SE3_SN_SIZE];
15  uint8_t hello_msg[SE3_HELLO_SIZE];
16  uint16_t status;
18 
19 typedef struct se3_device_ {
20  se3_device_info info;
21  uint8_t* request;
22  uint8_t* response;
23  se3_file f;
24  bool opened;
25 } se3_device;
26 
27 typedef struct se3_disco_it_ {
28  se3_device_info device_info;
29  se3_drive_it _drive_it;
30 } se3_disco_it;
31 
32 #ifdef CUBESIM
33 uint16_t L0_open_sim(se3_device* s);
34 #endif
35 
36 
37 /* defines */
38 #define SE3_NBLOCKS (SE3_COMM_N-1) // Number of blocks
39 #ifdef CUBESIM
40 #define SE3_TIMEOUT (1024*1024)
41 #else
42 #define SE3_TIMEOUT (10000)
43 #endif
44 
45 /* Sizes (in Bytes) */
46 
47 #define SE3_RES_SIZE_HEADER (32)
48 
49 #define SE3_SIZE_PAYLOAD_MAX ((SE3_COMM_BLOCK * SE3_NBLOCKS) - SE3_REQ_SIZE_HEADER - (SE3_COMM_BLOCK * SE3_REQDATA_SIZE_HEADER))
50 /* */
51 
52 
53 uint16_t L0_TXRX(se3_device* device, uint16_t req_cmd, uint16_t req_cmdflags, uint16_t req_len, const uint8_t* req_data, uint16_t* resp_status, uint16_t* resp_len, uint8_t* resp_data);
54 
55 uint16_t L0_echo(se3_device* device, const uint8_t* data_in, uint16_t data_in_len, uint8_t* data_out);
56 uint16_t L0_factoryinit(se3_device* device, const uint8_t* serialno);
57 uint16_t L0_open(se3_device* dev, se3_device_info* dev_info, uint32_t timeout);
58 void L0_close(se3_device* dev);
59 
60 bool L0_discover_serialno(uint8_t* serialno, se3_device_info* device);
61 void L0_discover_init(se3_disco_it* it);
62 bool L0_discover_next(se3_disco_it* it);
63 
64 #ifdef __cplusplus
65 }
66 #endif
Definition: se3comm.h:68
Definition: se3comm.h:37
Definition: L0.h:12
Definition: L0.h:27
Definition: L0.h:19