|
RocketLogger
1.1.5
|
#include <ctype.h>#include <errno.h>#include <fcntl.h>#include <math.h>#include <pruss_intc_mapping.h>#include <prussdrv.h>#include <pthread.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/ipc.h>#include <sys/mman.h>#include <sys/select.h>#include <sys/shm.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/types.h>#include <termios.h>#include <time.h>#include <unistd.h>#include "ambient.h"#include "calibration.h"#include "file_handling.h"#include "log.h"#include "meter.h"#include "sem.h"#include "types.h"#include "util.h"#include "web.h"
Include dependency graph for pru.h:
This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Data Structures | |
| struct | pru_data_struct |
Macros | |
| #define | WAKEUP 0x02000000 |
| #define | STANDBY 0x04000000 |
| #define | RESET 0x06000000 |
| #define | START 0x08000000 |
| #define | STOP 0x0A000000 |
| #define | OFFSETCAL 0x1A000000 |
| #define | RDATAC 0x10000000 |
| #define | SDATAC 0x11000000 |
| #define | RDATA 0x12000000 |
| #define | RREG 0x20000000 |
| #define | WREG 0x40000000 |
| #define | ID 0x00000000 |
| #define | CONFIG1 0x01000000 |
| #define | CONFIG2 0x02000000 |
| #define | CONFIG3 0x03000000 |
| #define | CH1SET 0x05000000 |
| #define | CH2SET 0x06000000 |
| #define | CH3SET 0x07000000 |
| #define | CH4SET 0x08000000 |
| #define | CH5SET 0x09000000 |
| #define | CH6SET 0x0A000000 |
| #define | CH7SET 0x0B000000 |
| #define | CH8SET 0x0C000000 |
| #define | GAIN1 0x1000 |
| #define | GAIN2 0x2000 |
| #define | GAIN12 0x6000 |
| #define | K1 0x0600 |
| #define | K2 0x0500 |
| #define | K4 0x0400 |
| #define | K8 0x0300 |
| #define | K16 0x0200 |
| #define | K32 0x0100 |
| #define | K64 0x0000 |
| #define | CONFIG1DEFAULT 0x9000 |
| #define | CONFIG2DEFAULT 0xE000 |
| #define | CONFIG3DEFAULT 0xE800 |
| #define | MMAP_FILE "/sys/class/uio/uio0/maps/map1/" |
| Memory map file. More... | |
| #define | PRU_CODE "/lib/firmware/rocketlogger_spi.bin" |
| PRU binary file location. More... | |
| #define | PRECISION_HIGH 24 |
| #define | PRECISION_LOW 16 |
| #define | SIZE_HIGH 4 |
| #define | SIZE_LOW 2 |
| #define | VALID_MASK 0x1 |
| Mask for valid bit read from PRU. More... | |
| #define | BINARY_MASK 0xE |
| Mask for binary inputs read from PRU. More... | |
| #define | PRU_TIMEOUT 3 |
| PRU time out in seconds. More... | |
| #define | NUMBER_ADC_COMMANDS 12 |
| Number of ADC commands. More... | |
Typedefs | |
| typedef enum pru_state | rl_pru_state |
Enumerations | |
| enum | pru_state { PRU_OFF = 0, PRU_LIMIT = 1, PRU_CONTINUOUS = 3 } |
Functions | |
| void * | pru_wait_event (void *voidEvent) |
| int | pru_wait_event_timeout (unsigned int event, unsigned int timeout) |
| void | pru_set_state (rl_pru_state state) |
| int | pru_init (void) |
| int | pru_data_setup (struct pru_data_struct *pru, struct rl_conf *conf, uint32_t avg_factor) |
| int | pru_sample (FILE *data, FILE *ambient_file, struct rl_conf *conf, char *file_comment) |
| void | pru_stop (void) |
| void | pru_close (void) |
| #define BINARY_MASK 0xE |
Mask for binary inputs read from PRU.
Definition at line 150 of file pru.h.
Referenced by file_handle_data(), and web_handle_data().
| #define CH1SET 0x05000000 |
Definition at line 91 of file pru.h.
Referenced by pru_data_setup().
| #define CH2SET 0x06000000 |
Definition at line 92 of file pru.h.
Referenced by pru_data_setup().
| #define CH3SET 0x07000000 |
Definition at line 93 of file pru.h.
Referenced by pru_data_setup().
| #define CH4SET 0x08000000 |
Definition at line 94 of file pru.h.
Referenced by pru_data_setup().
| #define CH5SET 0x09000000 |
Definition at line 95 of file pru.h.
Referenced by pru_data_setup().
| #define CH6SET 0x0A000000 |
Definition at line 96 of file pru.h.
Referenced by pru_data_setup().
| #define CH7SET 0x0B000000 |
Definition at line 97 of file pru.h.
Referenced by pru_data_setup().
| #define CONFIG1 0x01000000 |
Definition at line 88 of file pru.h.
Referenced by pru_data_setup().
| #define CONFIG1DEFAULT 0x9000 |
ADS131E08S configuration default value defines
Definition at line 121 of file pru.h.
Referenced by pru_data_setup().
| #define CONFIG3 0x03000000 |
Definition at line 90 of file pru.h.
Referenced by pru_data_setup().
| #define CONFIG3DEFAULT 0xE800 |
Definition at line 123 of file pru.h.
Referenced by pru_data_setup().
| #define GAIN1 0x1000 |
| #define GAIN2 0x2000 |
Definition at line 104 of file pru.h.
Referenced by pru_data_setup().
| #define K1 0x0600 |
| #define K16 0x0200 |
Definition at line 114 of file pru.h.
Referenced by pru_data_setup().
| #define K2 0x0500 |
Definition at line 111 of file pru.h.
Referenced by pru_data_setup().
| #define K32 0x0100 |
Definition at line 115 of file pru.h.
Referenced by pru_data_setup().
| #define K4 0x0400 |
Definition at line 112 of file pru.h.
Referenced by pru_data_setup().
| #define K64 0x0000 |
Definition at line 116 of file pru.h.
Referenced by pru_data_setup().
| #define K8 0x0300 |
Definition at line 113 of file pru.h.
Referenced by pru_data_setup().
| #define MMAP_FILE "/sys/class/uio/uio0/maps/map1/" |
Memory map file.
Definition at line 128 of file pru.h.
Referenced by pru_data_setup(), pru_map_memory(), pru_sample(), and pru_unmap_memory().
| #define NUMBER_ADC_COMMANDS 12 |
| #define PRECISION_HIGH 24 |
ADS131E08S precision defines(PRECISION_HIGH for low sampling rates, PRECISION_LOW for high ones)
Definition at line 138 of file pru.h.
Referenced by pru_data_setup().
| #define PRECISION_LOW 16 |
Definition at line 139 of file pru.h.
Referenced by pru_data_setup().
| #define PRU_CODE "/lib/firmware/rocketlogger_spi.bin" |
| #define PRU_TIMEOUT 3 |
PRU time out in seconds.
Definition at line 153 of file pru.h.
Referenced by pru_sample(), and pru_stop().
| #define RDATAC 0x10000000 |
Definition at line 78 of file pru.h.
Referenced by pru_data_setup().
| #define RESET 0x06000000 |
Definition at line 74 of file pru.h.
Referenced by pru_data_setup().
| #define SDATAC 0x11000000 |
Definition at line 79 of file pru.h.
Referenced by pru_data_setup().
| #define SIZE_HIGH 4 |
| #define VALID_MASK 0x1 |
Mask for valid bit read from PRU.
Definition at line 148 of file pru.h.
Referenced by file_handle_data(), and web_handle_data().
| #define WAKEUP 0x02000000 |
Copyright (c) 2016-2019, Swiss Federal Institute of Technology (ETH Zurich) All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ADS131E08S command (extended to 32 bits for PRU use) definitions
| #define WREG 0x40000000 |
Definition at line 82 of file pru.h.
Referenced by pru_data_setup().
| typedef enum pru_state rl_pru_state |
PRU state definition
| enum pru_state |
| void pru_close | ( | void | ) |
| int pru_data_setup | ( | struct pru_data_struct * | pru, |
| struct rl_conf * | conf, | ||
| uint32_t | avg_factor | ||
| ) |
PRU data struct setup
| pru | Pointer to pru_data_struct to setup |
| conf | Pointer to current rl_conf configuration |
| avg_factor | Average factor for sampling rates smaller than minimal ADC rate |
Definition at line 189 of file pru.c.
References pru_data_struct::buffer0_location, pru_data_struct::buffer1_location, pru_data_struct::buffer_size, CH1SET, CH2SET, CH3SET, CH4SET, CH5SET, CH6SET, CH7SET, pru_data_struct::commands, CONFIG1, CONFIG1DEFAULT, CONFIG3, CONFIG3DEFAULT, ERROR, FAILURE, GAIN1, GAIN2, K1, K16, K2, K32, K4, K64, K8, LIMIT, MMAP_FILE, rl_conf::mode, NUM_CHANNELS, NUMBER_ADC_COMMANDS, pru_data_struct::number_commands, pru_data_struct::precision, PRECISION_HIGH, PRECISION_LOW, PRU_BUFFER_STATUS_SIZE, PRU_CONTINUOUS, PRU_DIG_SIZE, PRU_LIMIT, RDATAC, read_file_value(), RESET, rl_log(), pru_data_struct::sample_limit, rl_conf::sample_limit, rl_conf::sample_rate, pru_data_struct::sample_size, SDATAC, SIZE_HIGH, pru_data_struct::state, SUCCESS, rl_conf::update_rate, and WREG.
Referenced by pru_sample().
Here is the call graph for this function:| int pru_init | ( | void | ) |
| int pru_sample | ( | FILE * | data_file, |
| FILE * | ambient_file, | ||
| struct rl_conf * | conf, | ||
| char * | file_comment | ||
| ) |
Main PRU sampling function
| data_file | File pointer to data file |
| ambient_file | File pointer to ambient file |
| conf | Pointer to current rl_conf configuration |
| file_comment | Comment to store in the file header |
Definition at line 296 of file pru.c.
References AMBIENT_DATA_BLOCK_SIZE, AMBIENT_ENABLED, ambient_setup_header(), ambient_setup_lead_in(), ambient_store_data(), BIN, web_shm::buffer, BUFFER100_SIZE, BUFFER10_SIZE, BUFFER1_SIZE, rl_status::buffer_number, pru_data_struct::buffer_size, buffer_sizes, ceil_div(), rl_file_header::channel, rl_file_lead_in::channel_bin_count, rl_file_lead_in::channel_count, CHANNEL_ENABLED, rl_conf::channels, count_channels(), create_sem(), create_time_stamp(), CSV, rl_file_lead_in::data_block_count, DATA_SEM, rl_conf::digital_inputs, DIGITAL_INPUTS_ENABLED, rl_conf::enable_web_server, ERROR, FAILURE, rl_conf::file_format, file_handle_data(), file_setup_header(), file_setup_lead_in(), file_store_header_bin(), file_store_header_csv(), file_update_header_bin(), file_update_header_csv(), I1H_INDEX, I1L_INDEX, I2H_INDEX, I2L_INDEX, INFO, rl_file_header::lead_in, LIMIT, MAX_PATH_LENGTH, METER, meter_init(), meter_print_buffer(), meter_stop(), MIN_ADC_RATE, MMAP_FILE, rl_conf::mode, NO_FILE, time_stamp::nsec, web_shm::num_channels, NUM_CHANNELS, NUM_DIGITAL_INPUTS, NUM_SEMS, NUM_WEB_POINTS, PRU_BUFFER_STATUS_SIZE, PRU_CODE, pru_data_setup(), PRU_DIG_SIZE, pru_map_memory(), PRU_OFF, PRU_TIMEOUT, pru_unmap_memory(), pru_wait_event_timeout(), read_file_value(), remove_sem(), RL_ERROR, rl_log(), RL_RUNNING, rl_file_lead_in::sample_count, pru_data_struct::sample_limit, rl_conf::sample_limit, rl_conf::sample_rate, pru_data_struct::sample_size, rl_status::samples_taken, rl_status::sampling, SAMPLING_ON, time_stamp::sec, sem_id, SEM_KEY, set_sem(), pru_data_struct::state, rl_status::state, status, SUCCESS, WAIT_SEM, WARNING, web_buffer_reset(), web_create_shm(), web_data, web_handle_data(), WEB_RING_BUFFER_COUNT, and write_status().
Referenced by hw_sample().
Here is the call graph for this function:| void pru_set_state | ( | rl_pru_state | state | ) |
Write state to PRU
| state | PRU state to write |
Definition at line 157 of file pru.c.
Referenced by pru_stop().
| void pru_stop | ( | void | ) |
Stop and shut down PRU operation.
Definition at line 708 of file pru.c.
References PRU_OFF, pru_set_state(), PRU_TIMEOUT, pru_wait_event_timeout(), RL_ERROR, rl_status::state, and status.
Referenced by hw_close().
Here is the call graph for this function:| void* pru_wait_event | ( | void * | voidEvent | ) |
Wait on PRU event
| voidEvent | PRU event to wait on |
Definition at line 56 of file pru.c.
References done.
Referenced by pru_wait_event_timeout().
| int pru_wait_event_timeout | ( | unsigned int | event, |
| unsigned int | timeout | ||
| ) |
Wrapper for PRU event waiting with time out
| event | PRU event to wait on |
| timeout | Time out in seconds |
Definition at line 79 of file pru.c.
References done, pru_wait_event(), and waiting.
Referenced by pru_sample(), and pru_stop().
Here is the call graph for this function: