agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
avr/spi/spi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024 ykat UG (haftungsbeschraenkt) - All Rights Reserved
3  *
4  * Permission for non-commercial use is hereby granted,
5  * free of charge, without warranty of any kind.
6  */
7 #ifndef ZRTOS_VFS_MODULE_AVR_SPI_H
8 #define ZRTOS_VFS_MODULE_AVR_SPI_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 #include <avr/io.h>
14 #include <avr/interrupt.h>
15 
16 #include <zrtos/vfs_plugin.h>
18 
21 
23  uint8_t data_in = SPDR;
24  uint8_t data_out;
26  zrtos_vfs_module_avr_spi__ctx
27  ,(void*)&data_in
28  ,(void*)&data_out
29  ,sizeof(uint8_t)
30  );
31 
32  if((zrtos_vfs_module_avr_spi__isr_complete = zrtos_error__is_error(err))){
33  SPCR = 0;
34  }else{
35  SPCR = zrtos_vfs_module_avr_spi__ctx->last->control;
36  SPDR = data_out;
37  }
38 
39 }
40 
41 ISR(SPI_STC_vect,ISR_NOBLOCK){
43 }
44 
46  zrtos_vfs_module_avr_spi__ctx = ZRTOS_CAST(
49  );
50  return ZRTOS_ERROR__SUCCESS;
51 }
52 
54  zrtos_vfs_module_avr_spi__ctx = 0;
55  return ZRTOS_ERROR__SUCCESS;
56 }
57 
59  zrtos_vfs_file_t *thiz
60  ,char *path
61  ,void *buf
62  ,size_t len
63  ,zrtos_vfs_offset_t offset
64  ,size_t *out
65 ){
69  );
71  thiz
72  ,path
73  ,buf
74  ,len
75  ,offset
76  ,out
77  );
78 
82  && zrtos_vfs_module_avr_spi__isr_complete){
83  zrtos_vfs_module_avr_spi__isr_complete = false;
85 
87  }else{
89  }
90 
91  return ret;
92 }
93 
105 );
106 
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 #endif
#define ZRTOS_CAST(type, value)
Definition: cast.h:18
#define ZRTOS_ARCH__DISABLE_INTERRUPTS()
Definition: atmega2560.h:44
ZRTOS_VFS_PLUGIN__INIT(avr_spi, ZRTOS_VFS_PLUGIN__0_ON_OPEN(zrtos_vfs_module_spi__on_open) ZRTOS_VFS_PLUGIN__1_ON_CLOSE(zrtos_vfs_module_spi__on_close) ZRTOS_VFS_PLUGIN__2_ON_MOUNT(zrtos_vfs_module_avr_spi__on_mount) ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(zrtos_vfs_module_avr_spi__on_umount) ZRTOS_VFS_PLUGIN__4_ON_READ(zrtos_vfs_module_spi__on_read) ZRTOS_VFS_PLUGIN__5_ON_WRITE(zrtos_vfs_module_avr_spi__on_write) ZRTOS_VFS_PLUGIN__6_ON_CAN_READ(zrtos_vfs_module_spi__on_can_read) ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(zrtos_vfs_module_spi__on_can_write) ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT() ZRTOS_VFS_PLUGIN__9_ON_IOCTL(zrtos_vfs_module_spi__on_ioctl))
size_t zrtos_vfs_offset_t
Definition: vfs_plugin.h:49
zrtos_vfs_module_spi_control_t control
Definition: spi/spi.h:65
zrtos_error_t zrtos_vfs_module_spi__on_can_write(zrtos_vfs_file_t *thiz)
Definition: spi/spi.h:396
#define ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT()
Definition: vfs_plugin.h:294
zrtos_error_t zrtos_vfs_module_spi__on_can_read(zrtos_vfs_file_t *thiz)
Definition: spi/spi.h:386
#define ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(callback)
Definition: vfs_plugin.h:198
zrtos_error_t zrtos_vfs_module_avr_spi__on_umount(zrtos_vfs_dentry_t *thiz)
Definition: avr/spi/spi.h:53
zrtos_error_t zrtos_vfs_module_avr_spi__on_write(zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
Definition: avr/spi/spi.h:58
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_vfs_module_spi_inode_t * zrtos_vfs_module_avr_spi__ctx
Definition: avr/spi/spi.h:19
#define ZRTOS_VFS_PLUGIN__2_ON_MOUNT(callback)
Definition: vfs_plugin.h:181
#define ZRTOS_VFS_PLUGIN__4_ON_READ(callback)
Definition: vfs_plugin.h:215
zrtos_error_t zrtos_vfs_module_avr_spi__on_mount(zrtos_vfs_dentry_t *thiz)
Definition: avr/spi/spi.h:45
#define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ(callback)
Definition: vfs_plugin.h:259
zrtos_error_t zrtos_vfs_module_spi__on_close(zrtos_vfs_file_t *thiz)
Definition: spi/spi.h:327
#define ZRTOS_VFS_PLUGIN__5_ON_WRITE(callback)
Definition: vfs_plugin.h:237
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
#define ZRTOS_VFS_PLUGIN__9_ON_IOCTL(callback)
Definition: vfs_plugin.h:318
Successful program execution status.
Definition: error.h:22
#define ZRTOS_VFS_PLUGIN__1_ON_CLOSE(callback)
Definition: vfs_plugin.h:164
void * zrtos_vfs_dentry__get_inode_data(zrtos_vfs_dentry_t *thiz)
Definition: vfs_dentry.h:196
zrtos_error_t zrtos_vfs_module_spi__on_open(zrtos_vfs_file_t *thiz)
Definition: spi/spi.h:303
zrtos_error_t zrtos_vfs_module_spi__on_ioctl(zrtos_vfs_file_t *thiz, char *path, int request, va_list args)
Definition: spi/spi.h:406
#define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE(callback)
Definition: vfs_plugin.h:276
void zrtos_vfs_module_avr_spi__on_interrupt()
Definition: avr/spi/spi.h:22
#define ZRTOS_ARCH__ENABLE_INTERRUPTS()
Definition: atmega2560.h:47
bool zrtos_vfs_module_avr_spi__isr_complete
Definition: avr/spi/spi.h:20
static uint8_t
Definition: mcp2515.h:159
zrtos_error_t
Definition: error.h:20
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: spi/spi.h:344
ISR(SPI_STC_vect, ISR_NOBLOCK)
Definition: avr/spi/spi.h:41
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: spi/spi.h:286
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: spi/spi.h:364
#define ZRTOS_VFS_PLUGIN__0_ON_OPEN(callback)
Definition: vfs_plugin.h:147