agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
spi/spi.h File Reference
#include <zrtos/vfs_module.h>
#include <zrtos/malloc.h>
#include <zrtos/cbuffer.h>
#include <zrtos/clist.h>
#include <zrtos/gpio.h>
#include <zrtos/binary.h>
#include <zrtos/va.h>
Include dependency graph for spi/spi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _zrtos_vfs_module_spi_file_t
 
struct  _zrtos_vfs_module_spi_inode_t
 

Typedefs

typedef struct _zrtos_vfs_module_spi_file_t zrtos_vfs_module_spi_file_t
 
typedef struct _zrtos_vfs_module_spi_inode_t zrtos_vfs_module_spi_inode_t
 

Enumerations

enum  zrtos_vfs_module_spi_ioctl_t {
  ZRTOS_VFS_MOULE_SPI_IOCTL__CONTROL,
  ZRTOS_VFS_MOULE_SPI_IOCTL__PIN_CS
}
 
enum  zrtos_vfs_module_spi_control_t {
  ZRTOS_VFS_MODULE_SPI_CONTROL__MIN = ZRTOS_TYPES__UINT8_MIN,
  ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_4 = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_16 = ZRTOS_BINARY__00000001,
  ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_64 = ZRTOS_BINARY__00000010,
  ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_128 = ZRTOS_BINARY__00000011,
  ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_MASK = ZRTOS_BINARY__00000011,
  ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_MASTER = ZRTOS_BINARY__00010000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_SLAVE = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_MASK = ZRTOS_BINARY__00010000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_LSB = ZRTOS_BINARY__00100000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_MSB = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_MASK = ZRTOS_BINARY__00100000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__PP_0 = ZRTOS_BINARY__00000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__PP_1 = ZRTOS_BINARY__00000100,
  ZRTOS_VFS_MODULE_SPI_CONTROL__PP_2 = ZRTOS_BINARY__00001000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__PP_3 = ZRTOS_BINARY__00001100,
  ZRTOS_VFS_MODULE_SPI_CONTROL__PP_MASK = ZRTOS_BINARY__00001100,
  ZRTOS_VFS_MODULE_SPI_CONTROL__ENABLE = ZRTOS_BINARY__01000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__ENABLE_INTERRUPT = ZRTOS_BINARY__10000000,
  ZRTOS_VFS_MODULE_SPI_CONTROL__MAX = ZRTOS_TYPES__UINT8_MAX
}
 

Functions

bool zrtos_vfs_module_spi_inode__init (zrtos_vfs_module_spi_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_inode__deinit (zrtos_vfs_module_spi_file_t *thiz)
 
bool zrtos_vfs_module_spi_file__init (zrtos_vfs_module_spi_file_t *thiz, zrtos_vfs_module_spi_inode_t *ctx, zrtos_vfs_module_spi_control_t control, zrtos_gpio_pin_t pin_cs, void *data)
 
void zrtos_vfs_module_spi_file__deinit (zrtos_vfs_module_spi_file_t *thiz, zrtos_vfs_module_spi_inode_t *ctx)
 
zrtos_vfs_module_spi_file_tzrtos_vfs_module_spi_file__new (zrtos_vfs_module_spi_inode_t *ctx, zrtos_vfs_module_spi_control_t control, zrtos_gpio_pin_t pin_cs, void *data)
 
void zrtos_vfs_module_spi_file__free (zrtos_vfs_module_spi_file_t *thiz, zrtos_vfs_module_spi_inode_t *ctx)
 
void zrtos_vfs_module_spi__set_high (zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
 
void zrtos_vfs_module_spi__set_low (zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
 
void zrtos_vfs_module_spi__transfer_init (zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
 
void zrtos_vfs_module_spi__transfer_out (zrtos_vfs_module_spi_inode_t *thiz, void *data, size_t len)
 
void zrtos_vfs_module_spi__transfer_in (zrtos_vfs_module_spi_inode_t *thiz, void *data, size_t len)
 
zrtos_error_t zrtos_vfs_module_spi__transfer (zrtos_vfs_module_spi_inode_t *thiz, void *data_in, void *data_out, size_t len)
 
zrtos_error_t zrtos_vfs_module_spi__on_open (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi__on_close (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi__on_read (zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *outlen)
 
zrtos_error_t zrtos_vfs_module_spi__on_write (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__on_can_read (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi__on_can_write (zrtos_vfs_file_t *thiz)
 
zrtos_error_t zrtos_vfs_module_spi__on_ioctl (zrtos_vfs_file_t *thiz, char *path, int request, va_list args)
 

Typedef Documentation

◆ zrtos_vfs_module_spi_file_t

◆ zrtos_vfs_module_spi_inode_t

Enumeration Type Documentation

◆ zrtos_vfs_module_spi_control_t

Enumerator
ZRTOS_VFS_MODULE_SPI_CONTROL__MIN 
ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_4 

chip clock/4

ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_16 

chip clock/16

ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_64 

chip clock/64

ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_128 

chip clock/128

ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_MASK 

mask

ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_MASTER 
ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_SLAVE 
ZRTOS_VFS_MODULE_SPI_CONTROL__MODE_MASK 

mask

ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_LSB 

send least significant bit (bit 0) first

ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_MSB 

send most significant bit (bit 7) first

ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_MASK 

mask

ZRTOS_VFS_MODULE_SPI_CONTROL__PP_0 

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

ZRTOS_VFS_MODULE_SPI_CONTROL__PP_1 

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

ZRTOS_VFS_MODULE_SPI_CONTROL__PP_2 

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

ZRTOS_VFS_MODULE_SPI_CONTROL__PP_3 

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

ZRTOS_VFS_MODULE_SPI_CONTROL__PP_MASK 

mask

ZRTOS_VFS_MODULE_SPI_CONTROL__ENABLE 

enable spi

ZRTOS_VFS_MODULE_SPI_CONTROL__ENABLE_INTERRUPT 

enable interrupt

ZRTOS_VFS_MODULE_SPI_CONTROL__MAX 

Definition at line 25 of file spi/spi.h.

25  {
27 
32  /*
33  ,ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_2 = ZRTOS_BINARY__00000100 ///< chip clock/2
34  ,ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_8 = ZRTOS_BINARY__00000101 ///< chip clock/8
35  ,ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_32 = ZRTOS_BINARY__00000110 ///< chip clock/32
36  ,ZRTOS_VFS_MODULE_SPI_CONTROL__CLOCK_RATE_64x = ZRTOS_BINARY__00000111 ///< chip clock/32
37  */
39 
43 
44  ,ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_LSB = ZRTOS_BINARY__00100000 ///< send least significant bit (bit 0) first
45  ,ZRTOS_VFS_MODULE_SPI_CONTROL__BITORDER_MSB = ZRTOS_BINARY__00000000 ///< send most significant bit (bit 7) first
47 
48  ,ZRTOS_VFS_MODULE_SPI_CONTROL__PP_0 = ZRTOS_BINARY__00000000 ///< Sample (Rising) Setup (Falling) CPOL=0, CPHA=0
49  ,ZRTOS_VFS_MODULE_SPI_CONTROL__PP_1 = ZRTOS_BINARY__00000100 ///< Setup (Rising) Sample (Falling) CPOL=0, CPHA=1
50  ,ZRTOS_VFS_MODULE_SPI_CONTROL__PP_2 = ZRTOS_BINARY__00001000 ///< Sample (Falling) Setup (Rising) CPOL=1, CPHA=0
51  ,ZRTOS_VFS_MODULE_SPI_CONTROL__PP_3 = ZRTOS_BINARY__00001100 ///< Setup (Falling) Sample (Rising) CPOL=1, CPHA=1
53 
56 
#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
Setup (Falling) Sample (Rising) CPOL=1, CPHA=1.
Definition: spi/spi.h:51
Sample (Rising) Setup (Falling) CPOL=0, CPHA=0.
Definition: spi/spi.h:48
#define ZRTOS_BINARY__00000011
Definition: binary.h:50
#define ZRTOS_BINARY__00001000
Definition: binary.h:55
#define ZRTOS_BINARY__00000001
Definition: binary.h:48
zrtos_vfs_module_spi_control_t
Definition: spi/spi.h:25
#define ZRTOS_BINARY__00010000
Definition: binary.h:63
#define ZRTOS_BINARY__10000000
Definition: binary.h:175
#define ZRTOS_BINARY__00100000
Definition: binary.h:79
Setup (Rising) Sample (Falling) CPOL=0, CPHA=1.
Definition: spi/spi.h:49
send most significant bit (bit 7) first
Definition: spi/spi.h:45
send least significant bit (bit 0) first
Definition: spi/spi.h:44
#define ZRTOS_BINARY__00000010
Definition: binary.h:49
Sample (Falling) Setup (Rising) CPOL=1, CPHA=0.
Definition: spi/spi.h:50
#define ZRTOS_TYPES__UINT8_MAX
Definition: types.h:182
#define ZRTOS_BINARY__00000100
Definition: binary.h:51
#define ZRTOS_BINARY__00000000
Definition: binary.h:47

◆ zrtos_vfs_module_spi_ioctl_t

Enumerator
ZRTOS_VFS_MOULE_SPI_IOCTL__CONTROL 
ZRTOS_VFS_MOULE_SPI_IOCTL__PIN_CS 

Definition at line 20 of file spi/spi.h.

Function Documentation

◆ zrtos_vfs_module_spi__on_can_read()

zrtos_error_t zrtos_vfs_module_spi__on_can_read ( zrtos_vfs_file_t thiz)

Definition at line 386 of file spi/spi.h.

388  {
392  );
393  return zrtos_cbuffer__can_read(&file_data->cbuffer_in);
394 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_error_t zrtos_cbuffer__can_read(zrtos_cbuffer_t *thiz)
Definition: cbuffer.h:373
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
zrtos_cbuffer_t cbuffer_in
Definition: spi/spi.h:62
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_can_write()

zrtos_error_t zrtos_vfs_module_spi__on_can_write ( zrtos_vfs_file_t thiz)

Definition at line 396 of file spi/spi.h.

398  {
402  );
403  return zrtos_cbuffer__can_write(&file_data->cbuffer_out);
404 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
zrtos_cbuffer_t cbuffer_out
Definition: spi/spi.h:63
zrtos_error_t zrtos_cbuffer__can_write(zrtos_cbuffer_t *thiz)
Definition: cbuffer.h:415
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_close()

zrtos_error_t zrtos_vfs_module_spi__on_close ( zrtos_vfs_file_t thiz)

Definition at line 327 of file spi/spi.h.

329  {
330 /*
331  zrtos_vfs_module_spi_inode_t *inode_data = ZRTOS_CAST(
332  zrtos_vfs_module_spi_inode_t*
333  ,zrtos_vfs_file__get_inode_data(thiz)
334  );
335  zrtos_vfs_module_spi_file_t *file_data = ZRTOS_CAST(
336  zrtos_vfs_module_spi_file_t*
337  ,zrtos_vfs_file__get_data(thiz)
338  );
339  zrtos_vfs_module_spi_file__free(file_data,inode_data);
340 */
341  return ZRTOS_ERROR__SUCCESS;
342 }
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_ioctl()

zrtos_error_t zrtos_vfs_module_spi__on_ioctl ( zrtos_vfs_file_t thiz,
char *  path,
int  request,
va_list  args 
)

Definition at line 406 of file spi/spi.h.

411  {
415  );
416  switch(request){
419  break;
421  file_data->pin_cs = zrtos_va__arg(args,zrtos_gpio_pin_t);
422  break;
423  }
424  return ZRTOS_ERROR__SUCCESS;
425 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_vfs_module_spi_control_t control
Definition: spi/spi.h:65
zrtos_vfs_module_spi_control_t
Definition: spi/spi.h:25
zrtos_arch_gpio_pin_t zrtos_gpio_pin_t
Definition: gpio.h:22
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
Successful program execution status.
Definition: error.h:22
zrtos_gpio_pin_t pin_cs
Definition: spi/spi.h:66
#define zrtos_va__arg(ap, type)
Definition: va.h:21
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_open()

zrtos_error_t zrtos_vfs_module_spi__on_open ( zrtos_vfs_file_t thiz)

Definition at line 303 of file spi/spi.h.

305  {
306 /*
307  zrtos_error_t ret = ZRTOS_ERROR__NOMEM;
308  zrtos_vfs_module_spi_inode_t *inode_data = ZRTOS_CAST(
309  zrtos_vfs_module_spi_inode_t*
310  ,zrtos_vfs_file__get_inode_data(thiz)
311  );
312  zrtos_vfs_module_spi_file_t *file_data = zrtos_vfs_module_spi_file__new(
313  inode_data
314  ,(zrtos_vfs_module_spi_control_t)0
315  ,0
316  ,0
317  );
318  if(file_data){
319  zrtos_vfs_file__set_data(thiz,file_data);
320  ret = ZRTOS_ERROR__SUCCESS;
321  }
322  return ret;
323 */
324  return ZRTOS_ERROR__SUCCESS;
325 }
Successful program execution status.
Definition: error.h:22
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_read()

zrtos_error_t zrtos_vfs_module_spi__on_read ( zrtos_vfs_file_t thiz,
char *  path,
void *  buf,
size_t  len,
zrtos_vfs_offset_t  offset,
size_t outlen 
)

Definition at line 344 of file spi/spi.h.

351  {
355  );
356  return zrtos_cbuffer__get_ex(
357  &file_data->cbuffer_in
358  ,buf
359  ,len
360  ,outlen
361  );
362 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
zrtos_error_t zrtos_cbuffer__get_ex(zrtos_cbuffer_t *thiz, void *data, size_t len, size_t *outlen)
Definition: cbuffer.h:336
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
zrtos_cbuffer_t cbuffer_in
Definition: spi/spi.h:62
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__on_write()

zrtos_error_t zrtos_vfs_module_spi__on_write ( zrtos_vfs_file_t thiz,
char *  path,
void *  buf,
size_t  len,
zrtos_vfs_offset_t  offset,
size_t out 
)

Definition at line 364 of file spi/spi.h.

371  {
375  );
376  size_t outlen;
377  return zrtos_cbuffer__put_ex(
378  &file_data->cbuffer_out
379  ,1
380  ,&outlen
381  ,buf
382  ,len
383  );
384 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
void * zrtos_vfs_file__get_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:199
zrtos_cbuffer_t cbuffer_out
Definition: spi/spi.h:63
zrtos_error_t zrtos_cbuffer__put_ex(zrtos_cbuffer_t *thiz, size_t len, size_t *outlen,...)
Definition: cbuffer.h:278
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__set_high()

void zrtos_vfs_module_spi__set_high ( zrtos_vfs_module_spi_inode_t thiz,
zrtos_vfs_module_spi_file_t file 
)

Definition at line 158 of file spi/spi.h.

161  {
162  file->error = zrtos_gpio__set_high(
163  thiz->gpio
164  ,file->pin_cs
165  );
166 }
zrtos_gpio_pin_t pin_cs
Definition: spi/spi.h:66
zrtos_error_t zrtos_gpio__set_high(zrtos_gpio_t *thiz, zrtos_gpio_pin_t pin)
Definition: gpio.h:271
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__set_low()

void zrtos_vfs_module_spi__set_low ( zrtos_vfs_module_spi_inode_t thiz,
zrtos_vfs_module_spi_file_t file 
)

Definition at line 168 of file spi/spi.h.

171  {
172  file->error = zrtos_gpio__set_low(
173  thiz->gpio
174  ,file->pin_cs
175  );
176 }
zrtos_gpio_pin_t pin_cs
Definition: spi/spi.h:66
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__transfer()

zrtos_error_t zrtos_vfs_module_spi__transfer ( zrtos_vfs_module_spi_inode_t thiz,
void *  data_in,
void *  data_out,
size_t  len 
)

Definition at line 286 of file spi/spi.h.

291  {
293  zrtos_vfs_module_spi__transfer_in(thiz,data_in,len);
295  thiz
296  ,data_out
297  ,len
298  );
299  last = thiz->last;
300  return last ? last->error : ZRTOS_ERROR__NODATA;
301 }
No data available.
Definition: error.h:85
void zrtos_vfs_module_spi__transfer_out(zrtos_vfs_module_spi_inode_t *thiz, void *data, size_t len)
Definition: spi/spi.h:207
zrtos_vfs_module_spi_file_t * last
Definition: spi/spi.h:76
void zrtos_vfs_module_spi__transfer_in(zrtos_vfs_module_spi_inode_t *thiz, void *data, size_t len)
Definition: spi/spi.h:267
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__transfer_in()

void zrtos_vfs_module_spi__transfer_in ( zrtos_vfs_module_spi_inode_t thiz,
void *  data,
size_t  len 
)

Definition at line 267 of file spi/spi.h.

271  {
272  zrtos_vfs_module_spi_file_t *last = thiz->last;
273  if(last
274  && zrtos_error__is_success(last->error)){
275  size_t outlen;
277  &last->cbuffer_in
278  ,1
279  ,&outlen
280  ,data
281  ,len
282  );
283  }
284 }
zrtos_vfs_module_spi_file_t * last
Definition: spi/spi.h:76
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
zrtos_cbuffer_t cbuffer_in
Definition: spi/spi.h:62
zrtos_error_t zrtos_cbuffer__put_ex(zrtos_cbuffer_t *thiz, size_t len, size_t *outlen,...)
Definition: cbuffer.h:278
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__transfer_init()

void zrtos_vfs_module_spi__transfer_init ( zrtos_vfs_module_spi_inode_t thiz,
zrtos_vfs_module_spi_file_t file 
)

Definition at line 178 of file spi/spi.h.

181  {
182  zrtos_gpio_mode_t input;
183  zrtos_gpio_mode_t output;
184 
186  input = ZRTOS_GPIO_MODE__INPUT;
187  output = ZRTOS_GPIO_MODE__OUTPUT;
188  }else{
189  input = ZRTOS_GPIO_MODE__OUTPUT;
190  output = ZRTOS_GPIO_MODE__INPUT;
191  }
192 
194  thiz->gpio
195  ,4
196  ,thiz->pin_miso
197  ,input
198  ,file->pin_cs
199  ,output
200  ,thiz->pin_mosi
201  ,output
202  ,thiz->pin_sclk
203  ,output
204  );
205 }
zrtos_vfs_module_spi_control_t control
Definition: spi/spi.h:65
zrtos_gpio_mode_t
Definition: gpio.h:24
zrtos_gpio_pin_t pin_mosi
Definition: spi/spi.h:73
zrtos_gpio_pin_t pin_sclk
Definition: spi/spi.h:72
zrtos_error_t zrtos_gpio__set_mode_ex(zrtos_gpio_t *thiz,...)
Definition: gpio.h:160
zrtos_gpio_pin_t pin_cs
Definition: spi/spi.h:66
zrtos_gpio_pin_t pin_miso
Definition: spi/spi.h:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi__transfer_out()

void zrtos_vfs_module_spi__transfer_out ( zrtos_vfs_module_spi_inode_t thiz,
void *  data,
size_t  len 
)

Definition at line 207 of file spi/spi.h.

211  {
212  size_t outlen;
213  zrtos_vfs_module_spi_file_t *last = thiz->last;
214 
215  if(thiz->count == 0
216  || (last && zrtos_error__is_error(last->error))){
217  if(last){
220  &thiz->root
222  );
223  last = thiz->last = 0;
224  thiz->count = 0;
225  }
226 
228  &thiz->root
229  ,node
231  ,node
232  ){
233  if(zrtos_error__is_success(node->error)
235  &node->cbuffer_out
236  ,sizeof(thiz->count)
237  )
239  &node->cbuffer_out
240  ,&thiz->count
241  ,sizeof(thiz->count)
242  ,&outlen
243  ))){
244  if(thiz->last != node){
245  last = thiz->last = node;
247  }
248 
250  break;
251  }
253  }
254 
255  if(last
256  && zrtos_error__is_success(last->error)){
257  thiz->count--;
259  &last->cbuffer_out
260  ,data
261  ,len
262  ,&outlen
263  );
264  }
265 }
zrtos_error_t zrtos_cbuffer__get_ex(zrtos_cbuffer_t *thiz, void *data, size_t len, size_t *outlen)
Definition: cbuffer.h:336
void zrtos_vfs_module_spi__set_low(zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
Definition: spi/spi.h:168
#define ZRTOS_CLIST__EACH_END
Definition: clist.h:173
bool zrtos_error__is_error(zrtos_error_t thiz)
Definition: error.h:156
zrtos_vfs_module_spi_file_t * last
Definition: spi/spi.h:76
zrtos_clist_node_t node
Definition: spi/spi.h:61
bool zrtos_error__is_success(zrtos_error_t thiz)
Definition: error.h:152
void zrtos_vfs_module_spi__set_high(zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
Definition: spi/spi.h:158
bool zrtos_cbuffer__can_read_length(zrtos_cbuffer_t *thiz, size_t length)
Definition: cbuffer.h:382
#define ZRTOS_CLIST__EACH_BEGIN(thiz, node, container, member)
Definition: clist.h:159
zrtos_cbuffer_t cbuffer_out
Definition: spi/spi.h:63
zrtos_clist_node_t * zrtos_clist_node__get_next_node(zrtos_clist_node_t *node)
Definition: clist.h:38
void zrtos_vfs_module_spi__transfer_init(zrtos_vfs_module_spi_inode_t *thiz, zrtos_vfs_module_spi_file_t *file)
Definition: spi/spi.h:178
void zrtos_clist__set_root(zrtos_clist_t *thiz, zrtos_clist_node_t *node)
Definition: clist.h:29
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_file__deinit()

void zrtos_vfs_module_spi_file__deinit ( zrtos_vfs_module_spi_file_t thiz,
zrtos_vfs_module_spi_inode_t ctx 
)

Definition at line 122 of file spi/spi.h.

125  {
128  zrtos_clist__delete(&ctx->root,&thiz->node);
129 }
bool zrtos_clist__delete(zrtos_clist_t *thiz, zrtos_clist_node_t *node)
Definition: clist.h:95
void zrtos_cbuffer__deinit(zrtos_cbuffer_t *thiz)
Definition: cbuffer.h:140
zrtos_clist_node_t node
Definition: spi/spi.h:61
zrtos_cbuffer_t cbuffer_in
Definition: spi/spi.h:62
zrtos_cbuffer_t cbuffer_out
Definition: spi/spi.h:63
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_file__free()

void zrtos_vfs_module_spi_file__free ( zrtos_vfs_module_spi_file_t thiz,
zrtos_vfs_module_spi_inode_t ctx 
)

Definition at line 150 of file spi/spi.h.

153  {
155  kfree(thiz);
156 }
void zrtos_vfs_module_spi_file__deinit(zrtos_vfs_module_spi_file_t *thiz, zrtos_vfs_module_spi_inode_t *ctx)
Definition: spi/spi.h:122
Here is the call graph for this function:

◆ zrtos_vfs_module_spi_file__init()

bool zrtos_vfs_module_spi_file__init ( zrtos_vfs_module_spi_file_t thiz,
zrtos_vfs_module_spi_inode_t ctx,
zrtos_vfs_module_spi_control_t  control,
zrtos_gpio_pin_t  pin_cs,
void *  data 
)

Definition at line 100 of file spi/spi.h.

106  {
108  thiz->error = ZRTOS_ERROR__SUCCESS;
109  thiz->control = control;
110  thiz->pin_cs = pin_cs;
111  thiz->data = data;
112  if(zrtos_cbuffer__init(&thiz->cbuffer_in)){
113  if(zrtos_cbuffer__init(&thiz->cbuffer_out)){
114  zrtos_clist__push(&ctx->root,&thiz->node);
115  return true;
116  }
118  }
119  return false;
120 }
zrtos_vfs_module_spi_control_t control
Definition: spi/spi.h:65
void zrtos_cbuffer__deinit(zrtos_cbuffer_t *thiz)
Definition: cbuffer.h:140
zrtos_clist_node_t node
Definition: spi/spi.h:61
Successful program execution status.
Definition: error.h:22
zrtos_cbuffer_t cbuffer_in
Definition: spi/spi.h:62
zrtos_cbuffer_t cbuffer_out
Definition: spi/spi.h:63
bool zrtos_clist__push(zrtos_clist_t *thiz, zrtos_clist_node_t *node)
Definition: clist.h:85
bool zrtos_cbuffer__init(zrtos_cbuffer_t *thiz)
Definition: cbuffer.h:115
zrtos_gpio_pin_t pin_cs
Definition: spi/spi.h:66
bool zrtos_clist_node__init(zrtos_clist_node_t *thiz)
Definition: clist.h:33
Here is the call graph for this function:
Here is the caller graph for this function:

◆ zrtos_vfs_module_spi_file__new()

zrtos_vfs_module_spi_file_t* zrtos_vfs_module_spi_file__new ( zrtos_vfs_module_spi_inode_t ctx,
zrtos_vfs_module_spi_control_t  control,
zrtos_gpio_pin_t  pin_cs,
void *  data 
)

Definition at line 131 of file spi/spi.h.

136  {
139  ,kmalloc(sizeof(zrtos_vfs_module_spi_file_t))
140  );
141  if(thiz){
142  if(!zrtos_vfs_module_spi_file__init(thiz,ctx,control,pin_cs,data)){
143  kfree(thiz);
144  thiz = 0;
145  }
146  }
147  return thiz;
148 }
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
bool zrtos_vfs_module_spi_file__init(zrtos_vfs_module_spi_file_t *thiz, zrtos_vfs_module_spi_inode_t *ctx, zrtos_vfs_module_spi_control_t control, zrtos_gpio_pin_t pin_cs, void *data)
Definition: spi/spi.h:100
Here is the call graph for this function:

◆ zrtos_vfs_module_spi_inode__deinit()

void zrtos_vfs_module_spi_inode__deinit ( zrtos_vfs_module_spi_file_t thiz)

Definition at line 97 of file spi/spi.h.

97  {
98 }

◆ zrtos_vfs_module_spi_inode__init()

bool zrtos_vfs_module_spi_inode__init ( zrtos_vfs_module_spi_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 80 of file spi/spi.h.

86  {
87  thiz->gpio = gpio;
88  thiz->pin_sclk = pin_sclk;
89  thiz->pin_mosi = pin_mosi;
90  thiz->pin_miso = pin_miso;
91  zrtos_clist__init(&thiz->root);
92  thiz->last = 0;
93  thiz->count = 0;
94  return true;
95 }
bool zrtos_clist__init(zrtos_clist_t *thiz)
Definition: clist.h:61
zrtos_gpio_pin_t pin_mosi
Definition: spi/spi.h:73
zrtos_vfs_module_spi_file_t * last
Definition: spi/spi.h:76
zrtos_gpio_pin_t pin_sclk
Definition: spi/spi.h:72
zrtos_gpio_pin_t pin_miso
Definition: spi/spi.h:74
Here is the call graph for this function: