RocketLogger  1.1
pru.h
Go to the documentation of this file.
1 
31 #ifndef PRU_H_
32 #define PRU_H_
33 
34 #include <ctype.h>
35 #include <errno.h>
36 #include <fcntl.h>
37 #include <math.h>
38 #include <pruss_intc_mapping.h>
39 #include <prussdrv.h>
40 #include <pthread.h>
41 #include <stdint.h>
42 #include <stdio.h>
43 #include <stdlib.h>
44 #include <string.h>
45 #include <sys/ipc.h>
46 #include <sys/mman.h>
47 #include <sys/select.h>
48 #include <sys/shm.h>
49 #include <sys/stat.h>
50 #include <sys/time.h>
51 #include <sys/types.h>
52 #include <termios.h>
53 #include <time.h>
54 #include <unistd.h>
55 
56 #include "ambient.h"
57 #include "calibration.h"
58 #include "file_handling.h"
59 #include "log.h"
60 #include "meter.h"
61 #include "sem.h"
62 #include "types.h"
63 #include "util.h"
64 #include "web.h"
65 
66 // ------ ADC DEFINITIONS ------ //
67 
71 #define WAKEUP 0x02000000
72 #define STANDBY 0x04000000
73 #define RESET 0x06000000
74 #define START 0x08000000
75 #define STOP 0x0A000000
76 #define OFFSETCAL 0x1A000000
77 #define RDATAC 0x10000000
78 #define SDATAC 0x11000000
79 #define RDATA 0x12000000
80 #define RREG 0x20000000
81 #define WREG 0x40000000
82 
86 #define ID 0x00000000
87 #define CONFIG1 0x01000000
88 #define CONFIG2 0x02000000
89 #define CONFIG3 0x03000000
90 #define CH1SET 0x05000000
91 #define CH2SET 0x06000000
92 #define CH3SET 0x07000000
93 #define CH4SET 0x08000000
94 #define CH5SET 0x09000000
95 #define CH6SET 0x0A000000
96 #define CH7SET 0x0B000000
97 #define CH8SET 0x0C000000
98 
102 #define GAIN1 0x1000
103 #define GAIN2 0x2000
104 #define GAIN12 0x6000
105 
109 #define K1 0x0600
110 #define K2 0x0500
111 #define K4 0x0400
112 #define K8 0x0300
113 #define K16 0x0200
114 #define K32 0x0100
115 #define K64 0x0000
116 
120 #define CONFIG1DEFAULT 0x9000
121 #define CONFIG2DEFAULT 0xE000
122 #define CONFIG3DEFAULT 0xE800
123 
124 // ------ FILES ------ //
125 
127 #define MMAP_FILE "/sys/class/uio/uio0/maps/map1/"
128 #define PRU_CODE "/lib/firmware/rocketlogger_spi.bin"
130 
131 // ------ PRU DEFINES ------ //
132 
137 #define PRECISION_HIGH 24
138 #define PRECISION_LOW 16
139 
143 #define SIZE_HIGH 4
144 #define SIZE_LOW 2
145 
147 #define VALID_MASK 0x1
148 #define BINARY_MASK 0xE
150 
152 #define PRU_TIMEOUT 3
153 
157 typedef enum pru_state {
158  PRU_OFF = 0,
159  PRU_LIMIT = 1,
161 } rl_pru_state;
162 
164 #define NUMBER_ADC_COMMANDS 12
165 
173  uint32_t precision;
175  uint32_t sample_size;
181  uint32_t buffer_size;
183  uint32_t sample_limit;
185  uint32_t number_commands;
188 };
189 
190 // ------ FUNCTIONS ------ //
191 
192 void* pru_wait_event(void* voidEvent);
193 int pru_wait_event_timeout(unsigned int event, unsigned int timeout);
194 
196 int pru_init(void);
197 int pru_data_setup(struct pru_data_struct* pru, struct rl_conf* conf,
198  uint32_t avg_factor);
199 
200 int pru_sample(FILE* data, FILE* ambient_file, struct rl_conf* conf,
201  char* file_comment);
202 
203 void pru_stop(void);
204 void pru_close(void);
205 
206 #endif /* PRU_H_ */
int pru_wait_event_timeout(unsigned int event, unsigned int timeout)
Definition: pru.c:78
pru_state
Definition: pru.h:157
rl_pru_state state
Current PRU state.
Definition: pru.h:171
#define NUMBER_ADC_COMMANDS
Number of ADC commands.
Definition: pru.h:164
int pru_sample(FILE *data, FILE *ambient_file, struct rl_conf *conf, char *file_comment)
Definition: pru.c:295
enum pru_state rl_pru_state
Limited sampling mode.
Definition: pru.h:159
Continuous sampling mode.
Definition: pru.h:160
state
Definition: types.h:139
uint32_t buffer_size
Shared buffer size.
Definition: pru.h:181
Definition: types.h:246
uint32_t number_commands
Number of ADC commands to send.
Definition: pru.h:185
void pru_close(void)
Definition: pru.c:722
uint32_t sample_limit
Samples to take (0 for continuous)
Definition: pru.h:183
uint32_t sample_size
Sample size in shared memory.
Definition: pru.h:175
int pru_data_setup(struct pru_data_struct *pru, struct rl_conf *conf, uint32_t avg_factor)
Definition: pru.c:188
uint32_t precision
ADC precision (in bit)
Definition: pru.h:173
int pru_init(void)
Definition: pru.c:166
void pru_set_state(rl_pru_state state)
Definition: pru.c:156
uint32_t buffer0_location
Pointer to shared buffer 0.
Definition: pru.h:177
uint32_t buffer1_location
Pointer to shared buffer 1.
Definition: pru.h:179
uint32_t commands[NUMBER_ADC_COMMANDS]
ADC commands to send.
Definition: pru.h:187
PRU off.
Definition: pru.h:158
void pru_stop(void)
Definition: pru.c:707
void * pru_wait_event(void *voidEvent)
Definition: pru.c:55