agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
timeout.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_TIMEOUT_H
8 #define ZRTOS_VFS_MODULE_TIMEOUT_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 #include <zrtos/types.h>
14 
15 typedef enum{
21 
22 typedef void (*zrtos_vfs_module_timeout_callback_t)(void *data);
23 
25 
26 typedef struct{
30 
32  uint16_t prescaler
33 ){
34  return ((ZRTOS_ARCH__CPU_CLOCK_HZ+(prescaler*1000)-1)/prescaler/1000);
35 }
36 
38  zrtos_vfs_module_timeout_microseconds_t us
39  ,uint16_t prescaler
40 ){
42  prescaler
43  );
44  return (us + tmp - 1) / tmp;
45 }
46 /*
47 zrtos_error_t zrtos_vfs_module_spi__on_ioctl(
48  zrtos_vfs_file_t *thiz
49  ,char *path
50  ,int request
51  ,va_list args
52 ){
53  zrtos_error_t ret = ZRTOS_ERROR__SUCCESS;
54 
55  switch(request){
56  case ZRTOS_VFS_MODULE_TIMEOUT_IOCTL__START:
57  // Timer 0 konfigurieren
58  TCCR0 = zrtos_va__arg(args,uint8_t);//(1<<CS01); // Prescaler 8
59  TCNT0 = zrtos_va__arg(args,uint8_t);
60  // Overflow Interrupt erlauben
61  TIMSK |= (1<<TOIE0);
62  break;
63  case ZRTOS_VFS_MODULE_TIMEOUT_IOCTL__STOP:
64  TIMSK &= ~(1<<TOIE0);
65  break;
66  case ZRTOS_VFS_MODULE_TIMEOUT_IOCTL__RESET:
67  TCNT0 = zrtos_va__arg(args,uint8_t);
68  break;
69  case ZRTOS_VFS_MODULE_TIMEOUT_IOCTL__SET_CALLBACK:
70  zrtos_vfs_module_timeout__callback = zrtos_va__arg(
71  args
72  ,zrtos_vfs_module_timeout_callback_t
73  );
74  zrtos_vfs_module_timeout__data = zrtos_va__arg(args,void*);
75  break;
76  default:
77  ret = ZRTOS_ERROR__INVAL;
78  break;
79  }
80 
81  return ret;
82 }
83 
84 ZRTOS_VFS_PLUGIN__INIT(avr_timeout5,
85  ZRTOS_VFS_PLUGIN__0_ON_OPEN_DEFAULT()
86  ZRTOS_VFS_PLUGIN__1_ON_CLOSE_DEFAULT()
87  ZRTOS_VFS_PLUGIN__2_ON_MOUNT(zrtos_vfs_module_avr_timeout5__on_mount)
88  ZRTOS_VFS_PLUGIN__3_ON_UMOUNT(zrtos_vfs_module_avr_timeout5__on_umount)
89  ZRTOS_VFS_PLUGIN__4_ON_READ_DEFAULT()
90  ZRTOS_VFS_PLUGIN__5_ON_WRITE_DEFAULT()
91  ZRTOS_VFS_PLUGIN__6_ON_CAN_READ_DEFAULT()
92  ZRTOS_VFS_PLUGIN__7_ON_CAN_WRITE_DEFAULT()
93  ZRTOS_VFS_PLUGIN__8_ON_SEEK_DEFAULT()
94  ZRTOS_VFS_PLUGIN__9_ON_IOCTL_DEFAULT()
95 );
96 */
97 
98 #ifdef __cplusplus
99 }
100 #endif
101 #endif
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_ARCH__CPU_CLOCK_HZ
Definition: atmega2560.h:26
zrtos_vfs_module_timeout_callback_t callback
Definition: timeout.h:27
void(* zrtos_vfs_module_timeout_callback_t)(void *data)
Definition: timeout.h:22
zrtos_vfs_module_timeout_ioctl_t
Definition: timeout.h:15
uint32_t zrtos_vfs_module_timeout__get_overflow_counter_value_divider(uint16_t prescaler)
Definition: timeout.h:31
uint16_t zrtos_vfs_module_timeout_microseconds_t
Definition: timeout.h:24