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