OpenCores
URL https://opencores.org/ocsvn/igor/igor/trunk

Subversion Repositories igor

[/] [igor/] [trunk/] [avr/] [src/] [skeletondev.c] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 atypic
#include <stdint.h>
2
#include <stdio.h>
3
#include <string.h>
4
#include "device.h"
5
 
6
igordev_read_fn_t skeleton_read;
7
igordev_write_fn_t skeleton_write;
8
igordev_init_fn_t skeleton_init;
9
igordev_status_fn_t skeleton_read_status;
10
igordev_status_fn_t skeleton_write_status;
11
igordev_deinit_fn_t skeleton_deinit;
12
 
13
/* Example device for adding device-specific hooks. */
14
 
15
const char *str= "(cons foo bar)";
16
 
17
struct igordev igordev_skeleton = {
18
        .init = skeleton_init,
19
        .deinit = skeleton_deinit,
20
        .read = skeleton_read,
21
        .write = skeleton_write,
22
        .read_status = skeleton_read_status,
23
        .write_status = skeleton_write_status,
24
        .maxaddr = 14,
25
        .curaddr = 0,
26
        .priv = NULL
27
};
28
 
29
int skeletondev_loaded = 0;
30
int status;
31
 
32
/* Example initialization routine. */
33
void
34
skeleton_init(void)
35
{
36
        /* Initialize buffers. Could probably be device-independent */
37
        status = 0;
38
        /* Initialize skelton device-specific stuff. */
39
        skeletondev_loaded = 1;
40
}
41
 
42
/* Example read routine. */
43
uint8_t
44
skeleton_read(uint8_t *data, uint8_t numbytes)
45
{
46
        uint64_t curaddr, maxaddr;
47
        uint8_t i;
48
 
49
        curaddr = igordev_skeleton.curaddr;
50
        maxaddr = igordev_skeleton.maxaddr;
51
        printf("Reading in curdev (curaddr, maxaddr) = (%llu, %llu)\n", curaddr,
52
            maxaddr);
53
        if (curaddr < 0 || curaddr >= maxaddr) {
54
                status = IDEV_STATUS_ERROR;
55
                return (0);
56
        }
57
        printf("numbytes: %d\n", numbytes);
58
        for (i = 0; i < numbytes && (i + curaddr) < maxaddr; i++) {
59
                printf("READING %c\n", str[i + curaddr]);
60
                *(data + i) = str[i + curaddr];
61
        }
62
        status = IDEV_STATUS_OK;
63
        return (i);
64
}
65
 
66
/* Example write routine. */
67
uint8_t
68
skeleton_write(uint8_t *data, uint8_t numbytes)
69
{
70
        int i;
71
 
72
        /* Write buffer data to device. We're just testing. */
73
        for (i = 0; i < numbytes; i++) {
74
#ifdef WITH_DEBUG
75
                printf("SKELTON OUT: %c\n", *(data + i));
76
#endif
77
        }
78
        status = IDEV_STATUS_OK;
79
        return (0);
80
}
81
 
82
/* Deinit. */
83
void
84
skeleton_deinit(void)
85
{
86
        skeletondev_loaded = 0;
87
}
88
 
89
/*
90
 * Example on checking read status.
91
 * XXX: IMPORTANT: Use correct status flags.
92
 */
93
int8_t
94
skeleton_read_status(void)
95
{
96
        return (status);
97
}
98
 
99
/*
100
 * Example on checking write status.
101
 * XXX: IMPORTANT: Use correct status flags.
102
 */
103
int8_t
104
skeleton_write_status(void)
105
{
106
        /*
107
         * We do not support write, but one would here check write status of the
108
         * device.
109
         */
110
        return (status);
111
}
112
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.