agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
timeout1.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_TIMEOUT1_H
8 #define ZRTOS_VFS_MODULE_AVR_TIMEOUT1_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 #include <avr/io.h>
14 #include <avr/interrupt.h>
15 
17 
20 );
21 
23 
24 ISR(TIMER1_OVF_vect){
25  zrtos_vfs_module_avr_timeout1.callback(
26  zrtos_vfs_module_avr_timeout1.callback_data
27  );
28 }
29 
31  zrtos_vfs_file_t *thiz
32 ){
33  return zrtos_vfs_file__get_dentry_count(thiz) == 1
36  ;
37 }
38 
40  TIMSK1 = 0;
41  return ZRTOS_ERROR__SUCCESS;
42 }
43 
45  TIMSK1 = 0;
46  //TIMSK1 &= ~_BV(TOIE1);
47  return ZRTOS_ERROR__SUCCESS;
48 }
49 
51  zrtos_vfs_file_t *thiz
52  ,char *path
53  ,int request
54  ,va_list args
55 ){
57 
60  ,request
61  )){
63  TCCR1A = 0;
64  //TCCR1B = (inode_data->prescaler) & 0xff;
65  TCCR1B = _BV(CS12) | _BV(CS11) | _BV(CS10);//prescaler 1024
66  TIMSK1 = _BV(TOIE1);
67  //TIMSK1 |= _BV(TOIE1);
69  thiz
72  args
74  )
75  ,1024
76  )
77  );
79  TCNT1 = zrtos_vfs_file__get_offset(thiz);
80  break;
82  TIMSK1 = 0;
83  //TIMSK1 &= ~_BV(TOIE1);
84  break;
86  zrtos_vfs_module_avr_timeout0.callback = zrtos_va__arg(
87  args
89  );
90  zrtos_vfs_module_avr_timeout0.callback_data = zrtos_va__arg(
91  args
92  ,void*
93  );
94  break;
95  default:
96  ret = ZRTOS_ERROR__INVAL;
97  break;
98  }
99 
100  return ret;
101 }
102 
103 ZRTOS_VFS_PLUGIN__INIT(avr_timeout1,
114 );
115 
116 #ifdef __cplusplus
117 }
118 #endif
119 #endif
zrtos_vfs_module_timeout_inode_t zrtos_vfs_module_avr_timeout1
Definition: timeout1.h:22
uint16_t zrtos_vfs_module_timeout__get_overflow_counter_value(zrtos_vfs_module_timeout_microseconds_t us, uint16_t prescaler)
Definition: timeout.h:37
#define ZRTOS_VFS_PLUGIN__4_ON_READ_DEFAULT()
Definition: vfs_plugin.h:216
zrtos_error_t zrtos_vfs_module_avr_timeout1__on_ioctl(zrtos_vfs_file_t *thiz, char *path, int request, va_list args)
Definition: timeout1.h:50
#define ZRTOS_CAST__REINTERPRET(type, value)
Definition: cast.h:19
size_t zrtos_vfs_offset_t
Definition: vfs_plugin.h:49
zrtos_vfs_offset_t zrtos_vfs_file__get_offset(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:207
#define ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT()
Definition: vfs_plugin.h:238
#define ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE_DEFAULT()
Definition: vfs_plugin.h:277
#define ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT()
Definition: vfs_plugin.h:294
#define ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT()
Definition: vfs_plugin.h:165
zrtos_error_t zrtos_vfs_module_avr_timeout1__on_open(zrtos_vfs_file_t *thiz)
Definition: timeout1.h:30
ZRTOS_ASSERT__STATIC(sizeof(zrtos_vfs_offset_t) >=sizeof(zrtos_vfs_module_timeout_microseconds_t))
#define ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(callback)
Definition: vfs_plugin.h:198
#define ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT()
Definition: vfs_plugin.h:260
Too many open files.
Definition: error.h:48
#define ZRTOS_VFS_PLUGIN__2_ON_MOUNT(callback)
Definition: vfs_plugin.h:181
zrtos_vfs_module_timeout_callback_t callback
Definition: timeout.h:27
void(* zrtos_vfs_module_timeout_callback_t)(void *data)
Definition: timeout.h:22
ISR(TIMER1_OVF_vect)
Definition: timeout1.h:24
#define ZRTOS_VFS_PLUGIN__9_ON_IOCTL(callback)
Definition: vfs_plugin.h:318
Successful program execution status.
Definition: error.h:22
zrtos_vfs_module_timeout_ioctl_t
Definition: timeout.h:15
Invalid argument.
Definition: error.h:46
void zrtos_vfs_file__set_offset(zrtos_vfs_file_t *thiz, zrtos_vfs_offset_t offset)
Definition: vfs_file.h:203
zrtos_error_t zrtos_vfs_module_avr_timeout1__on_umount(zrtos_vfs_dentry_t *thiz)
Definition: timeout1.h:44
uint16_t zrtos_vfs_module_timeout_microseconds_t
Definition: timeout.h:24
size_t zrtos_vfs_file__get_dentry_count(zrtos_vfs_file_t *file)
Definition: vfs_file.h:67
ZRTOS_VFS_PLUGIN__INIT(avr_timeout1, ZRTOS_VFS_PLUGIN__0_ON_OPEN(zrtos_vfs_module_avr_timeout1__on_open) ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT() ZRTOS_VFS_PLUGIN__2_ON_MOUNT(zrtos_vfs_module_avr_timeout1__on_mount) ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(zrtos_vfs_module_avr_timeout1__on_umount) ZRTOS_VFS_PLUGIN__4_ON_READ_DEFAULT() ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT() ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT() ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE_DEFAULT() ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT() ZRTOS_VFS_PLUGIN__9_ON_IOCTL(zrtos_vfs_module_avr_timeout1__on_ioctl))
zrtos_error_t
Definition: error.h:20
#define ZRTOS_VFS_PLUGIN__0_ON_OPEN(callback)
Definition: vfs_plugin.h:147
#define zrtos_va__arg(ap, type)
Definition: va.h:21
zrtos_error_t zrtos_vfs_module_avr_timeout1__on_mount(zrtos_vfs_dentry_t *thiz)
Definition: timeout1.h:39