agileRTOS (zrtos)  Version 0.8.0 (ghostbuster)
vfs/module/avr/progmem.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_PROGMEM_H
8 #define ZRTOS_VFS_MODULE_AVR_PROGMEM_H
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 
14 #include <avr/pgmspace.h >
15 
16 #include <zrtos/error.h>
17 #include <zrtos/types.h>
18 #include <zrtos/vfs_plugin.h>
19 
20 
22  uint32_t start_addr;
23  uint32_t end_addr;
25 
26 
28  zrtos_vfs_file_t *thiz
29  ,char *path
30  ,void *buf
31  ,size_t len
32  ,zrtos_vfs_offset_t offset
33  ,size_t *out
34 ){
37  thiz
38  );
39  uint32_t addr = offset;
40  uint8_t *data_ptr = data;
41 
42  if(offset > ZRTOS_TYPES__UINT32_MAX){
43  ret = ZRTOS_ERROR__INVAL;
44  goto L_OUT;
45  }
46 
48  mod->start_addr
49  ,mod->end_addr
50  ,addr
51  ,&len
52  )){
53  *ret = len;
54  for(;len--;addr++){
55  *data_ptr++ = pgm_read_byte_far(addr);
56  }
58  }
59 
60 L_OUT:
61  return ret;
62 }
63 
65  ZRTOS_VFS_PLUGIN__ON_READ(zrtos_vfs_module_avr_progmem__on_read)
66 );
67 
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 #endif
bool zrtos_types__uint32_is_valid_address_range(uint32_t first_address, uint32_t last_address, uint32_t offset, size_t *length)
Definition: types.h:83
size_t zrtos_vfs_offset_t
Definition: vfs_plugin.h:49
zrtos_error_t zrtos_vfs_module_avr_progmem__on_read(zrtos_vfs_file_t *thiz, char *path, void *buf, size_t len, zrtos_vfs_offset_t offset, size_t *out)
ZRTOS_VFS_PLUGIN__INIT(zero, ZRTOS_VFS_PLUGIN__ON_READ(zrtos_vfs_module_avr_progmem__on_read))
void * zrtos_vfs_file__get_inode_data(zrtos_vfs_file_t *thiz)
Definition: vfs_file.h:191
Successful program execution status.
Definition: error.h:22
Bad address.
Definition: error.h:38
Invalid argument.
Definition: error.h:46
struct _zrtos_vfs_module_avr_progmem_inode_t zrtos_vfs_module_avr_progmem_inode_t
static uint8_t
Definition: mcp2515.h:159
zrtos_error_t
Definition: error.h:20
#define ZRTOS_TYPES__UINT32_MAX
Definition: types.h:186