agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
spi_sync.h File Reference
#include <zrtos/vfs_module.h>
#include <zrtos/gpio.h>
#include <zrtos/binary.h>
#include <zrtos/va.h>
#include <zrtos/task_mutex.h>
Include dependency graph for spi_sync.h:

Go to the source code of this file.

Data Structures

struct  _zrtos_vfs_module_spi_sync_file_t
 
struct  _zrtos_vfs_module_spi_sync_inode_t
 

Typedefs

typedef struct _zrtos_vfs_module_spi_sync_file_t zrtos_vfs_module_spi_sync_file_t
 
typedef struct _zrtos_vfs_module_spi_sync_inode_t zrtos_vfs_module_spi_sync_inode_t
 

Enumerations

enum  zrtos_vfs_module_spi_sync_control_t {
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MIN = ZRTOS_TYPES__UINT8_MIN,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_4 = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_16 = ZRTOS_BINARY__00000001,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_64 = ZRTOS_BINARY__00000010,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_128 = ZRTOS_BINARY__00000011,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_MASK = ZRTOS_BINARY__00000011,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_MASTER = ZRTOS_BINARY__00010000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_SLAVE = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_MASK = ZRTOS_BINARY__00010000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_LSB = ZRTOS_BINARY__00100000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_MSB = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_MASK = ZRTOS_BINARY__00100000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_0 = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_1 = ZRTOS_BINARY__00000100,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_2 = ZRTOS_BINARY__00001000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_3 = ZRTOS_BINARY__00001100,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_MASK = ZRTOS_BINARY__00001100,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__ENABLE = ZRTOS_BINARY__01000000,
  ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MAX = ZRTOS_TYPES__UINT8_MAX
}
 

Functions

bool zrtos_vfs_module_spi_sync_inode__init (zrtos_vfs_module_spi_sync_inode_t *thiz, zrtos_gpio_t *gpio, zrtos_gpio_pin_t pin_sclk, zrtos_gpio_pin_t pin_mosi, zrtos_gpio_pin_t pin_miso)
 
void zrtos_vfs_module_spi_sync_inode__deinit (zrtos_vfs_module_spi_sync_file_t *thiz)
 
bool zrtos_vfs_module_spi_sync_file__init (zrtos_vfs_module_spi_sync_file_t *thiz, zrtos_vfs_module_spi_sync_inode_t *ctx, zrtos_vfs_module_spi_sync_control_t control, zrtos_gpio_pin_t pin_cs, void *data)
 
zrtos_error_t zrtos_vfs_module_spi_sync__on_open (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi_sync__on_close (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi_sync__on_mount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi_sync__on_umount (zrtos_vfs_dentry_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi_sync__on_write_helper (zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out, zrtos_error_t(*callback)(zrtos_vfs_module_spi_sync_inode_t *inode_data, zrtos_vfs_module_spi_sync_file_t *file_data, void *buf, size_t len, size_t *l))
 

Typedef Documentation

◆ zrtos_vfs_module_spi_sync_file_t

◆ zrtos_vfs_module_spi_sync_inode_t

Enumeration Type Documentation

◆ zrtos_vfs_module_spi_sync_control_t

Enumerator
ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MIN 
ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_4 

chip clock/4

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_16 

chip clock/16

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_64 

chip clock/64

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_128 

chip clock/128

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_MASK 

mask

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_MASTER 
ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_SLAVE 
ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MODE_MASK 

mask

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_LSB 

send least significant bit (bit 0) first

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_MSB 

send most significant bit (bit 7) first

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_MASK 

mask

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_0 

Sample (Rising) Setup (Falling) CPOL=0, CPHA=0.

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_1 

Setup (Rising) Sample (Falling) CPOL=0, CPHA=1.

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_2 

Sample (Falling) Setup (Rising) CPOL=1, CPHA=0.

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_3 

Setup (Falling) Sample (Rising) CPOL=1, CPHA=1.

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_MASK 

mask

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__ENABLE 

enable spi

ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__MAX 

Definition at line 18 of file spi_sync.h.

18  {
20 
25  /*
26  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_2 = ZRTOS_BINARY__00000100 ///< chip clock/2
27  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_8 = ZRTOS_BINARY__00000101 ///< chip clock/8
28  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_32 = ZRTOS_BINARY__00000110 ///< chip clock/32
29  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__CLOCK_RATE_64x = ZRTOS_BINARY__00000111 ///< chip clock/32
30  */
32 
36 
37  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_LSB = ZRTOS_BINARY__00100000 ///< send least significant bit (bit 0) first
38  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__BITORDER_MSB = ZRTOS_BINARY__00000000 ///< send most significant bit (bit 7) first
40 
41  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_0 = ZRTOS_BINARY__00000000 ///< Sample (Rising) Setup (Falling) CPOL=0, CPHA=0
42  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_1 = ZRTOS_BINARY__00000100 ///< Setup (Rising) Sample (Falling) CPOL=0, CPHA=1
43  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_2 = ZRTOS_BINARY__00001000 ///< Sample (Falling) Setup (Rising) CPOL=1, CPHA=0
44  ,ZRTOS_VFS_MODULE_SPI_SYNC_CONTROL__PP_3 = ZRTOS_BINARY__00001100 ///< Setup (Falling) Sample (Rising) CPOL=1, CPHA=1
46 
48 
#define ZRTOS_TYPES__UINT8_MIN
Definition: types.h:181
#define ZRTOS_BINARY__00001100
Definition: binary.h:59
#define ZRTOS_BINARY__01000000
Definition: binary.h:111
zrtos_vfs_module_spi_sync_control_t
Definition: spi_sync.h:18
#define ZRTOS_BINARY__00000011
Definition: binary.h:50
#define ZRTOS_BINARY__00001000
Definition: binary.h:55
#define ZRTOS_BINARY__00000001
Definition: binary.h:48
send least significant bit (bit 0) first
Definition: spi_sync.h:37
#define ZRTOS_BINARY__00010000
Definition: binary.h:63
Setup (Falling) Sample (Rising) CPOL=1, CPHA=1.
Definition: spi_sync.h:44
Setup (Rising) Sample (Falling) CPOL=0, CPHA=1.
Definition: spi_sync.h:42
#define ZRTOS_BINARY__00100000
Definition: binary.h:79
Sample (Rising) Setup (Falling) CPOL=0, CPHA=0.
Definition: spi_sync.h:41
#define ZRTOS_BINARY__00000010
Definition: binary.h:49
#define ZRTOS_TYPES__UINT8_MAX
Definition: types.h:182
send most significant bit (bit 7) first
Definition: spi_sync.h:38
#define ZRTOS_BINARY__00000100
Definition: binary.h:51
#define ZRTOS_BINARY__00000000
Definition: binary.h:47
Sample (Falling) Setup (Rising) CPOL=1, CPHA=0.
Definition: spi_sync.h:43

Function Documentation

◆ zrtos_vfs_module_spi_sync__on_close()

zrtos_error_t zrtos_vfs_module_spi_sync__on_close ( zrtos_vfs_file_t thiz)

Definition at line 123 of file spi_sync.h.

125  {
127 }
zrtos_error_t zrtos_vfs_module_spi_sync__on_open(zrtos_vfs_file_t *thiz)
Definition: spi_sync.h:97
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_sync__on_mount()

zrtos_error_t zrtos_vfs_module_spi_sync__on_mount ( zrtos_vfs_dentry_t thiz)

Definition at line 130 of file spi_sync.h.

130  {
134  );
136  inode_data->gpio
137  ,3
138  ,inode_data->pin_miso
140  ,inode_data->pin_mosi
142  ,inode_data->pin_sclk
144  );
145 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
void * zrtos_vfs_file__get_inode_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:191
zrtos_error_t zrtos_gpio__set_mode_ex(zrtos_gpio_t *thiz,...)
Definition: gpio.h:160
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_sync__on_open()

zrtos_error_t zrtos_vfs_module_spi_sync__on_open ( zrtos_vfs_file_t thiz)

Definition at line 97 of file spi_sync.h.

99  {
103  );
107  );
109  inode_data->gpio
110  ,file_data->pin_cs
112  );
113 
114  return zrtos_error__is_success(ret)
116  inode_data->gpio
117  ,file_data->pin_cs
118  )
119  : ret
120  ;
121 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_error_t zrtos_gpio__set_mode(zrtos_gpio_t *thiz, zrtos_gpio_pin_t pin, zrtos_gpio_mode_t mode)
Definition: gpio.h:130
void * zrtos_vfs_file__get_inode_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:191
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
zrtos_error_t zrtos_gpio__set_high(zrtos_gpio_t *thiz, zrtos_gpio_pin_t pin)
Definition: gpio.h:271
zrtos_error_t
Definition: error.h:20
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_sync__on_umount()

zrtos_error_t zrtos_vfs_module_spi_sync__on_umount ( zrtos_vfs_dentry_t thiz)

Definition at line 147 of file spi_sync.h.

147  {
148  return ZRTOS_ERROR__SUCCESS;
149 }
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_sync__on_write_helper()

zrtos_error_t zrtos_vfs_module_spi_sync__on_write_helper ( zrtos_vfs_file_t thiz,
char *  path,
void *  buf,
size_t  len,
zrtos_vfs_offset_t  offset,
size_t out,
zrtos_error_t(*)(zrtos_vfs_module_spi_sync_inode_t *inode_data, zrtos_vfs_module_spi_sync_file_t *file_data, void *buf, size_t len, size_t *l)  callback 
)

Definition at line 151 of file spi_sync.h.

165  {
169  );
173  );
174  uint8_t *data = ZRTOS_CAST(uint8_t*,buf);
175  zrtos_error_t ret = zrtos_task_mutex__lock(inode_data->mutex);
176  if(zrtos_error__is_success(ret)){
177  *out = len;
178  while(len){
179  if(inode_data->count == 0){
180  ret = zrtos_gpio__set_low(
181  inode_data->gpio
182  ,file_data->pin_cs
183  );
184  inode_data->count = *data++;
185  len--;
186  }
187 
188  while(len && inode_data->count && zrtos_error__is_success(ret)){
189  //transfer
190  size_t l;
191  ret = callback(inode_data,file_data,buf,len,l);
192  buf += l;
193  len -= l;
194  inode_data->count -= l;
195  }
196 
197  if(inode_data->count == 0){
198  ret = zrtos_gpio__set_high(
199  inode_data->gpio
200  ,file_data->pin_cs
201  );
202  }
203  }
204  zrtos_task_mutex__unlock(inode_data->mutex);
205  }
206  return ret;
207 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_task_mutex_t mutex
Definition: spi_sync.h:62
int zrtos_task_mutex__unlock(zrtos_task_mutex_t *thiz)
Definition: task_mutex.h:62
void * zrtos_vfs_file__get_inode_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:191
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
int zrtos_task_mutex__lock(zrtos_task_mutex_t *thiz)
Definition: task_mutex.h:44
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
static uint8_t
Definition: mcp2515.h:159
zrtos_error_t zrtos_gpio__set_high(zrtos_gpio_t *thiz, zrtos_gpio_pin_t pin)
Definition: gpio.h:271
zrtos_error_t
Definition: error.h:20
zrtos_error_t zrtos_gpio__set_low(zrtos_gpio_t *thiz, zrtos_gpio_pin_t pin)
Definition: gpio.h:318
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_sync_file__init()

bool zrtos_vfs_module_spi_sync_file__init ( zrtos_vfs_module_spi_sync_file_t thiz,
zrtos_vfs_module_spi_sync_inode_t ctx,
zrtos_vfs_module_spi_sync_control_t  control,
zrtos_gpio_pin_t  pin_cs,
void *  data 
)

Definition at line 84 of file spi_sync.h.

90  {
91  thiz->control = control;
92  thiz->pin_cs = pin_cs;
93  thiz->data = data;
94  return true;
95 }
zrtos_vfs_module_spi_sync_control_t control
Definition: spi_sync.h:53

◆ zrtos_vfs_module_spi_sync_inode__deinit()

void zrtos_vfs_module_spi_sync_inode__deinit ( zrtos_vfs_module_spi_sync_file_t thiz)

Definition at line 81 of file spi_sync.h.

81  {
82 }

◆ zrtos_vfs_module_spi_sync_inode__init()

bool zrtos_vfs_module_spi_sync_inode__init ( zrtos_vfs_module_spi_sync_inode_t thiz,
zrtos_gpio_t gpio,
zrtos_gpio_pin_t  pin_sclk,
zrtos_gpio_pin_t  pin_mosi,
zrtos_gpio_pin_t  pin_miso 
)

Definition at line 66 of file spi_sync.h.

72  {
73  thiz->gpio = gpio;
74  thiz->pin_sclk = pin_sclk;
75  thiz->pin_mosi = pin_mosi;
76  thiz->pin_miso = pin_miso;
77  thiz->count = 0;
78  return zrtos_task_mutex__init(&thiz->mutex);
79 }
zrtos_task_mutex_t mutex
Definition: spi_sync.h:62
bool zrtos_task_mutex__init(zrtos_task_mutex_t *thiz)
Definition: task_mutex.h:24
Here is the call graph for this function: