SEcube
SEcube Open Source Library - Host
L0.h
Go to the documentation of this file.
1 
7 #pragma once
8 
9 #include "se3_common.h"
10 #include "se3comm.h"
11 #include "crc16.h"
12 
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
19 typedef struct se3_device_info_ {
20  se3_char path[SE3_MAX_PATH];
21  uint8_t serialno[SE3_SN_SIZE];
22  uint8_t hello_msg[SE3_HELLO_SIZE];
23  uint16_t status;
25 
27 typedef struct se3_device_ {
28  se3_device_info info;
29  uint8_t* request;
30  uint8_t* response;
31  se3_file f;
32  bool opened;
33 } se3_device;
34 
36 typedef struct se3_disco_it_ {
37  se3_device_info device_info;
38  se3_drive_it _drive_it;
39 } se3_disco_it;
40 
41 #ifdef CUBESIM
42 uint16_t L0_open_sim(se3_device* s);
43 #endif
44 
45 
46 /* defines */
47 #define SE3_NBLOCKS (SE3_COMM_N-1) // Number of blocks
48 #ifdef CUBESIM
49 #define SE3_TIMEOUT (1024*1024)
50 #else
51 #define SE3_TIMEOUT (10000)
52 #endif
53 
54 /* Sizes (in Bytes) */
55 
56 #define SE3_RES_SIZE_HEADER (32)
57 
58 #define SE3_SIZE_PAYLOAD_MAX ((SE3_COMM_BLOCK * SE3_NBLOCKS) - SE3_REQ_SIZE_HEADER - (SE3_COMM_BLOCK * SE3_REQDATA_SIZE_HEADER))
59 /* */
60 
76 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);
77 
89 uint16_t L0_echo(se3_device* device, const uint8_t* data_in, uint16_t data_in_len, uint8_t* data_out);
90 
100 uint16_t L0_factoryinit(se3_device* device, const uint8_t* serialno);
101 
111 uint16_t L0_open(se3_device* dev, se3_device_info* dev_info, uint32_t timeout);
112 
120 void L0_close(se3_device* dev);
121 
130 bool L0_discover_serialno(uint8_t* serialno, se3_device_info* device);
131 
140 
150 
151 #ifdef __cplusplus
152 }
153 #endif
This file contains defines and functions common for L0 and L1.
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)
Main function for communicating with SEcube device.
Definition: L0.c:41
bool L0_discover_serialno(uint8_t *serialno, se3_device_info *device)
Discover Serial Number information.
Definition: L0.c:283
bool L0_discover_next(se3_disco_it *it)
Increment discovery iterator.
Definition: L0.c:263
void L0_close(se3_device *dev)
Close SEcube device.
Definition: L0.c:321
Definition: se3comm.h:67
This file contains defines and functions for computing CRC.
Definition: se3comm.h:36
struct se3_device_ se3_device
SEcube Device structure.
uint16_t L0_echo(se3_device *device, const uint8_t *data_in, uint16_t data_in_len, uint8_t *data_out)
Echo service.
Definition: L0.c:232
SEcube Device Information structure.
Definition: L0.h:19
uint16_t L0_open(se3_device *dev, se3_device_info *dev_info, uint32_t timeout)
Open SEcube device.
Definition: L0.c:297
Discovery iterator.
Definition: L0.h:36
uint16_t L0_factoryinit(se3_device *device, const uint8_t *serialno)
Initialise SEcube device.
Definition: L0.c:245
struct se3_disco_it_ se3_disco_it
Discovery iterator.
struct se3_device_info_ se3_device_info
SEcube Device Information structure.
SEcube Device structure.
Definition: L0.h:27
void L0_discover_init(se3_disco_it *it)
Initialise discovery iterator.
Definition: L0.c:257