Paparazzi UAS
v5.15_devel-230-gc96ce27
Paparazzi is a free software Unmanned Aircraft System.
|
#include "high_speed_logger_direct_memory.h"
#include <string.h>
#include "subsystems/imu.h"
#include "mcu_periph/spi.h"
#include "mcu_periph/uart.h"
#include "subsystems/datalink/downlink.h"
#include "subsystems/datalink/telemetry.h"
Go to the source code of this file.
Macros | |
#define | READING_BLOCK_SIZE 200 |
size of the block that we read in the memory and send over UART. MAX = 250. More... | |
#define | ERASE_MEMORY_AT_START 0 |
if we completly erase the memory at the start of the log. More... | |
#define | SIZE_OF_LOGGED_VALUES 4 |
size (in bytes) of the values we log. More... | |
#define | SIZE_OF_VALUES_NAMES 10 |
size (in characters) of the nameof the logged values. More... | |
#define | SKIP_X_CALLS_BETWEEN_VALUES 0 |
Skip X values between write. More... | |
#define | NBR_VALUES_TO_LOG 9 |
nbr of messages you want to log More... | |
#define | MEMORY_READ_LATTENCY 5 |
nbr of Bytes 0x00 received before the real values when reading the memory More... | |
#define | TOTAL_MEMORY_SIZE 32 |
nbr of MB in the memory More... | |
#define | END_OF_MEMORY_THRESHOLD 10 |
the nbr of kilo Bytes left at the end of the memory before stoping the log automaticaly More... | |
Functions | |
static void | memory_transaction_done_cb (struct spi_transaction *trans) |
generic allback function for SPI transactions More... | |
static void | memory_read_status_cb (struct spi_transaction *trans) |
Callback function decrypting the status Byte of the memory. More... | |
static void | memory_read_values_cb (struct spi_transaction *trans) |
Callback function decrypting the read values from the memory. More... | |
void | memory_read_id (void) |
Function sending a request for the ID of the memory chip. More... | |
void | memory_send_wren (void) |
Function sending a request to set the writte enable flag in the memory. More... | |
void | memory_send_wrdi (void) |
Function sending a request to clear the writte enable flag in the memory. More... | |
void | memory_read_status_1 (void) |
Function sending a request to fetch the status Byte of the memory. More... | |
void | memory_erase_4k (uint32_t mem_addr) |
Function sending a request to erase 4KB of the memory. More... | |
void | memory_completly_erase (void) |
Function sending a request to erase the entire memory. More... | |
void | memory_write_values (uint32_t mem_addr, uint8_t *values, uint8_t size) |
Function sending a request to write a buffer of values to the memory. More... | |
void | memory_read_values (uint32_t mem_addr, uint8_t size) |
Function sending a request to read some values in memory. More... | |
uint8_t | ml_write_values_to_memory (uint32_t mem_addr, uint8_t *values, uint8_t size) |
Function writting a buffer of values to the memory. More... | |
uint8_t | ml_erase_4k_on_memory (uint32_t mem_addr) |
Function erasing 4KB of the memory. More... | |
uint8_t | ml_erase_completely_memory (void) |
Function erasing the entire memory. More... | |
void | ml_read_log_in_memory (void) |
Function continuing the reading of the current log in memory. More... | |
uint8_t | append_values_to_memory (uint8_t *values, uint8_t size) |
Function adding a buffer of values to the memory. More... | |
void | send_buffer_to_uart (void) |
Function sending the read values from the memory to te UART. More... | |
uint8_t | send_buffer_to_memory (uint8_t *buffer, uint8_t *size) |
Function sending a buffer ot the memory. More... | |
void | add_byte_to_buffer (uint8_t value) |
Function adding a Byte to the local buffer. More... | |
void | add_array_to_buffer (uint8_t *array, uint8_t size) |
Function adding an array to the local buffer. More... | |
uint8_t | run_memory_management (void) |
Function sending the buffer to the memory when possible. More... | |
uint8_t | are_buffers_empty (void) |
Function returning true if the two local buffers are empty. More... | |
uint8_t | start_new_log (void) |
Function starting a new log. More... | |
void | add_values_to_buffer (void) |
Function adding the configured messages to the buffers of the values to be written in memory. More... | |
void | run_logger (void) |
Funcion called to add the values to log to the buffer with a frequency divider in order to not overflow the buffers. More... | |
uint8_t | end_log (void) |
Function ending the current log. More... | |
void | high_speed_logger_direct_memory_init (void) |
Function initialisating the module. More... | |
void | high_speed_logger_direct_memory_periodic (void) |
Main function of the module. More... | |
uint8_t | is_sequence_in_array (uint8_t *array, uint8_t array_size, uint8_t *sequence, uint8_t sequence_size) |
Function testing if a sequence is in a buffer of values. More... | |
void | high_speed_logger_direct_memory_handler (uint8_t val) |
Function managing the interface with the user. More... | |
Variables | |
uint32_t | values_to_log [NBR_VALUES_TO_LOG] |
list of the messages you want to log More... | |
char ** | name_of_the_values |
list of the names of the messages you are logging More... | |
uint8_t | start_log_sequence [6] = {0xAA, 0x55, 0xFF, 0x00, 0x55, 0xAA} |
Start sequence written at the begining of a log. More... | |
uint8_t | start_values_sequence [3] = {0xF0, 0xF0, 0xA5} |
Start sequence written at the begining of the values of a log (after the header) More... | |
uint8_t | start_lost_values_sequence [6] = {0x42, 0x0F, 0X42, 0X00, 0XFF, 0xAA} |
Start sequence indicating we have lost some Bytes due to overflows. More... | |
uint8_t | stop_lost_values_sequence [6] = {0xAA, 0xFF, 0x00, 0x42, 0x0F, 0x42} |
Stop sequence indicating we have lost some Bytes due to overflows. More... | |
uint8_t | stop_log_sequence [6] = {0xFF, 0x00, 0x55, 0xAA, 0x00, 0xFF} |
Stop sequence written at the end of the log. More... | |
uint8_t | buff [25] |
Buffer used for general comunication over SPI (in buffer) More... | |
uint8_t | uart_read_buff [READING_BLOCK_SIZE+MEMORY_READ_LATTENCY] = {0} |
Buffer used to fetch the values from the memory. More... | |
uint8_t | msg [10] |
Buffer used for general comunication over SPI (out buffer) More... | |
uint8_t | values_send_buffer [256] |
Buffer used for sending value to the memory. More... | |
uint8_t | buffer_values_logged [256] |
First local buffer for the log. More... | |
uint8_t | nbr_values_in_buffer = 0 |
Number of Bytes in the first buffer (buffer_values_logged) More... | |
uint8_t | buffer_values_sending [256] |
Second local buffer for the log. More... | |
uint8_t | nbr_values_in_buffer_sending = 0 |
Number of Bytes in the second buffer (nbr_values_in_buffer_sending) More... | |
uint8_t | buffer_used = 0 |
Flag defining wich buffer is used. More... | |
uint8_t | wait_answear_from_reading_memory = 0 |
Flag defining if we are waiting for an answear from the memory when reading values from it. More... | |
uint8_t | memory_status_byte |
Last status Byte read from the memory. More... | |
uint8_t | sending_buffer_to_uart = 0 |
Flag defining if we are sending values through the UART. More... | |
uint8_t | relaunch_reading_memory = 0 |
Flag defining if we need to keep reading the memory (if the stop sequence is found we stop) More... | |
uint8_t | continue_reading_memory = 0 |
Flag defining if we need to keep reading the memory (if the PC asked for new values) More... | |
uint32_t | current_writting_addr = 0x00000000 |
The address at wich we will write next time. More... | |
uint32_t | current_unerased_addr = 0x00000000 |
The address of the next block to erase. More... | |
uint32_t | current_reading_addr = 0x00000000 |
The address at wich we will read next time. More... | |
static volatile bool | memory_ready = true |
Flag stating if the memory is being used. More... | |
struct spi_transaction | memory_transaction |
Structure used for general comunication with the memory. More... | |
struct spi_transaction | memory_send_value_transaction |
Structure used for sending values to the memory. More... | |
uint32_t | nbr_lost_values = 0 |
Number of Bytes we have lost due to overflows (reseted each time we can write agin in the buffer) More... | |
uint8_t | logging_status_gui |
Status of the module. More... | |
Definition in file high_speed_logger_direct_memory.c.
#define END_OF_MEMORY_THRESHOLD 10 |
the nbr of kilo Bytes left at the end of the memory before stoping the log automaticaly
Definition at line 111 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory().
#define ERASE_MEMORY_AT_START 0 |
if we completly erase the memory at the start of the log.
Definition at line 48 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory(), and start_new_log().
#define MEMORY_READ_LATTENCY 5 |
nbr of Bytes 0x00 received before the real values when reading the memory
Definition at line 107 of file high_speed_logger_direct_memory.c.
Referenced by is_sequence_in_array(), memory_read_values(), and send_buffer_to_uart().
#define NBR_VALUES_TO_LOG 9 |
nbr of messages you want to log
Definition at line 61 of file high_speed_logger_direct_memory.c.
Referenced by add_values_to_buffer(), and start_new_log().
#define READING_BLOCK_SIZE 200 |
size of the block that we read in the memory and send over UART. MAX = 250.
Definition at line 46 of file high_speed_logger_direct_memory.c.
Referenced by ml_read_log_in_memory().
#define SIZE_OF_LOGGED_VALUES 4 |
size (in bytes) of the values we log.
Definition at line 50 of file high_speed_logger_direct_memory.c.
Referenced by add_values_to_buffer(), and start_new_log().
#define SIZE_OF_VALUES_NAMES 10 |
size (in characters) of the nameof the logged values.
Definition at line 52 of file high_speed_logger_direct_memory.c.
Referenced by start_new_log().
#define SKIP_X_CALLS_BETWEEN_VALUES 0 |
Skip X values between write.
if = 2 we writte a values, then the next two calls to the modules will not add any values to the memory, then the third will add a new values.
Definition at line 58 of file high_speed_logger_direct_memory.c.
Referenced by run_logger().
#define TOTAL_MEMORY_SIZE 32 |
nbr of MB in the memory
Definition at line 109 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory().
Function adding an array to the local buffer.
This function will just add the values sended to the local buffer. The buffer will then be automaticaly written to the memory when possible.
array | the array to add to the buffer |
size | the size of the array to add to the buffer |
Definition at line 854 of file high_speed_logger_direct_memory.c.
References add_byte_to_buffer().
Referenced by end_log(), run_memory_management(), and start_new_log().
void add_byte_to_buffer | ( | uint8_t | value | ) |
Function adding a Byte to the local buffer.
This function will just add the value sended to the local buffer. The buffer will then be automaticaly written to the memory when possible.
value | the value to add to the buffer |
Definition at line 822 of file high_speed_logger_direct_memory.c.
References buffer_used, buffer_values_logged, buffer_values_sending, nbr_lost_values, nbr_values_in_buffer, and nbr_values_in_buffer_sending.
Referenced by add_array_to_buffer(), add_values_to_buffer(), run_memory_management(), and start_new_log().
void add_values_to_buffer | ( | void | ) |
Function adding the configured messages to the buffers of the values to be written in memory.
This function will fetch the values of the variables setted in the array values_to_log, and send them to the local buffer to be written in memory
Definition at line 1026 of file high_speed_logger_direct_memory.c.
References add_byte_to_buffer(), NBR_VALUES_TO_LOG, SIZE_OF_LOGGED_VALUES, and values_to_log.
Referenced by run_logger().
Function adding a buffer of values to the memory.
This function is going to take care of writting a buffer of values into the memory. It starts at the address 0x00000000 and will writte after that. It keeps the last written address in memory and will erase the blocks if needed and configured (ERASE_MEMORY_AT_START) before programming the values into the blocks. This function is non blocking, it must be called multiple times to complet it's work.
values | the buffer of values to writte to the memory |
size | the size of the buffer of values to writte |
Definition at line 643 of file high_speed_logger_direct_memory.c.
References current_unerased_addr, current_writting_addr, END_OF_MEMORY_THRESHOLD, ERASE_MEMORY_AT_START, logging_status_gui, ml_erase_4k_on_memory(), ml_write_values_to_memory(), and TOTAL_MEMORY_SIZE.
Referenced by send_buffer_to_memory().
uint8_t are_buffers_empty | ( | void | ) |
Function returning true if the two local buffers are empty.
Definition at line 928 of file high_speed_logger_direct_memory.c.
References nbr_values_in_buffer, and nbr_values_in_buffer_sending.
Referenced by end_log().
uint8_t end_log | ( | void | ) |
Function ending the current log.
This function will simply write the ending tag of the log.
This function is none blocking and need to be called multiple times to complete it's work. It will return 0 when the work is completed.
Definition at line 1070 of file high_speed_logger_direct_memory.c.
References add_array_to_buffer(), are_buffers_empty(), and stop_log_sequence.
Referenced by high_speed_logger_direct_memory_periodic().
void high_speed_logger_direct_memory_handler | ( | uint8_t | val | ) |
Function managing the interface with the user.
Definition at line 1242 of file high_speed_logger_direct_memory.c.
References logging_status_gui, and val.
void high_speed_logger_direct_memory_init | ( | void | ) |
Function initialisating the module.
Definition at line 1095 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::bitorder, spi_transaction::cdiv, spi_transaction::cpha, spi_transaction::cpol, spi_transaction::dss, spi_transaction::input_buf, spi_transaction::input_length, memory_send_value_transaction, memory_transaction, memory_transaction_done_cb(), spi_transaction::output_buf, spi_transaction::output_length, spi_transaction::select, spi_transaction::slave_idx, spi_submit(), SPICphaEdge2, SPICpolIdleHigh, SPIDiv64, SPIDss8bit, SPIMSBFirst, SPISelectUnselect, uart_periph_init(), and uart_periph_set_bits_stop_parity().
void high_speed_logger_direct_memory_periodic | ( | void | ) |
Main function of the module.
Will manage the log.
Definition at line 1141 of file high_speed_logger_direct_memory.c.
References continue_reading_memory, end_log(), logging_status_gui, memory_ready, ml_read_log_in_memory(), run_logger(), run_memory_management(), send_buffer_to_uart(), start_new_log(), uart_char_available(), and uart_getch().
uint8_t is_sequence_in_array | ( | uint8_t * | array, |
uint8_t | array_size, | ||
uint8_t * | sequence, | ||
uint8_t | sequence_size | ||
) |
Function testing if a sequence is in a buffer of values.
This function is usefull to detect the tag indicating the end of the log in order to stop reading. This function will remember the previus values and as such can detect tags even when cutted. We can detect the first half of the tag at the end of one buffer and detect the other half at the begining of the folowing buffer.
array | the buffer in wich we are searching for the sequence |
array_size | the size of the buffer in wich we are searching |
sequence | the tag we are searching for |
sequence_size | the size of the tag we are searching for |
Definition at line 1217 of file high_speed_logger_direct_memory.c.
References MEMORY_READ_LATTENCY.
Referenced by memory_read_values_cb().
void memory_completly_erase | ( | void | ) |
Function sending a request to erase the entire memory.
Definition at line 319 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_transaction, memory_transaction_done_cb(), msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
Referenced by ml_erase_completely_memory().
void memory_erase_4k | ( | uint32_t | mem_addr | ) |
Function sending a request to erase 4KB of the memory.
mem_addr | the address of the block of 4K that you want to erase |
Definition at line 293 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_transaction, memory_transaction_done_cb(), msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
Referenced by ml_erase_4k_on_memory().
void memory_read_id | ( | void | ) |
Function sending a request for the ID of the memory chip.
Definition at line 200 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, buff, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_transaction, memory_transaction_done_cb(), msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
void memory_read_status_1 | ( | void | ) |
Function sending a request to fetch the status Byte of the memory.
Definition at line 258 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, buff, spi_transaction::input_buf, spi_transaction::input_length, memory_read_status_cb(), memory_ready, memory_transaction, msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
Referenced by ml_erase_4k_on_memory(), ml_erase_completely_memory(), and ml_write_values_to_memory().
|
static |
Callback function decrypting the status Byte of the memory.
The resulting value will be setted in the global variable "memory_status_byte".
Definition at line 279 of file high_speed_logger_direct_memory.c.
References buff, memory_ready, memory_status_byte, and wait_answear_from_reading_memory.
Referenced by memory_read_status_1().
Function sending a request to read some values in memory.
mem_addr | the address at wich we want to read |
size | the number of Bytes to be read |
Definition at line 377 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, MEMORY_READ_LATTENCY, memory_read_values_cb(), memory_ready, memory_transaction, msg, spi_transaction::output_buf, spi_transaction::output_length, spi_submit(), and uart_read_buff.
Referenced by ml_read_log_in_memory().
|
static |
Callback function decrypting the read values from the memory.
The resulting values will be sended to the UART by calling the send_buffer_to_uart function
Definition at line 406 of file high_speed_logger_direct_memory.c.
References current_reading_addr, spi_transaction::input_length, is_sequence_in_array(), memory_ready, memory_transaction, relaunch_reading_memory, send_buffer_to_uart(), sending_buffer_to_uart, stop_log_sequence, and uart_read_buff.
Referenced by memory_read_values().
void memory_send_wrdi | ( | void | ) |
Function sending a request to clear the writte enable flag in the memory.
Definition at line 239 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_transaction, memory_transaction_done_cb(), msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
void memory_send_wren | ( | void | ) |
Function sending a request to set the writte enable flag in the memory.
Definition at line 220 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_transaction, memory_transaction_done_cb(), msg, spi_transaction::output_buf, spi_transaction::output_length, and spi_submit().
Referenced by ml_erase_4k_on_memory(), ml_erase_completely_memory(), and ml_write_values_to_memory().
|
static |
generic allback function for SPI transactions
This function will just set a flag telling that the SPI bus can be use now.
Definition at line 435 of file high_speed_logger_direct_memory.c.
References memory_ready.
Referenced by high_speed_logger_direct_memory_init(), memory_completly_erase(), memory_erase_4k(), memory_read_id(), memory_send_wrdi(), memory_send_wren(), and memory_write_values().
Function sending a request to write a buffer of values to the memory.
mem_addr | the address at wich the block must beggin to be written |
values | pointer to the buffer of value to be written to the memory. This buffer will be copied during this function. It can be reused right after having called this function. |
size | the size of the buffer of values |
Definition at line 343 of file high_speed_logger_direct_memory.c.
References spi_transaction::after_cb, spi_transaction::input_buf, spi_transaction::input_length, memory_ready, memory_send_value_transaction, memory_transaction_done_cb(), spi_transaction::output_buf, spi_transaction::output_length, spi_submit(), and values_send_buffer.
Referenced by ml_write_values_to_memory().
Function erasing 4KB of the memory.
This function is going to take care of setting the writte enable flag, then will erase the block, then will check the status of the erase process. Once the erasing is done it will return 0. This function must be called multiple times to complet it's work, it is a none blocking function
mem_addr | The address of the 4KB block we want to erase |
Definition at line 528 of file high_speed_logger_direct_memory.c.
References memory_erase_4k(), memory_read_status_1(), memory_send_wren(), memory_status_byte, and wait_answear_from_reading_memory.
Referenced by append_values_to_memory().
uint8_t ml_erase_completely_memory | ( | void | ) |
Function erasing the entire memory.
This function is going to take care of setting the writte enable flag, then will erase the memory, then will check the status of the erase process. Once the erasing is done it will return 0. This function must be called multiple times to complet it's work, it is a none blocking function
Definition at line 573 of file high_speed_logger_direct_memory.c.
References memory_completly_erase(), memory_read_status_1(), memory_send_wren(), memory_status_byte, and wait_answear_from_reading_memory.
Referenced by start_new_log().
void ml_read_log_in_memory | ( | void | ) |
Function continuing the reading of the current log in memory.
This function will start the reading of a new block of the memory, the size of this block is defined by READING_BLOCK_SIZE.
Definition at line 613 of file high_speed_logger_direct_memory.c.
References current_reading_addr, memory_read_values(), and READING_BLOCK_SIZE.
Referenced by high_speed_logger_direct_memory_periodic(), and send_buffer_to_uart().
Function writting a buffer of values to the memory.
This function is going to take care of setting the writte enable flag, then will write the values, then will check the status of the write process. Once the writting is done it will return 0. This function must be called multiple times to complet it's work, it is a none blocking function
mem_addr | The address at which we want to write the buffer of values |
values | A pointer to the buffer of values we want to write |
size | The size of the buffer |
Definition at line 462 of file high_speed_logger_direct_memory.c.
References memory_read_status_1(), memory_send_wren(), memory_status_byte, memory_write_values(), and wait_answear_from_reading_memory.
Referenced by append_values_to_memory().
void run_logger | ( | void | ) |
Funcion called to add the values to log to the buffer with a frequency divider in order to not overflow the buffers.
Definition at line 1046 of file high_speed_logger_direct_memory.c.
References add_values_to_buffer(), and SKIP_X_CALLS_BETWEEN_VALUES.
Referenced by high_speed_logger_direct_memory_periodic().
uint8_t run_memory_management | ( | void | ) |
Function sending the buffer to the memory when possible.
This function will send a local buffer to the memory when possible.
Definition at line 869 of file high_speed_logger_direct_memory.c.
References add_array_to_buffer(), add_byte_to_buffer(), buffer_used, buffer_values_logged, buffer_values_sending, nbr_lost_values, nbr_values_in_buffer, nbr_values_in_buffer_sending, send_buffer_to_memory(), start_lost_values_sequence, and stop_lost_values_sequence.
Referenced by high_speed_logger_direct_memory_periodic().
Function sending a buffer ot the memory.
This function is just a verification that the buffer is not empty and that we are not asking for writting an empty buffer. It is simply an abstraction of the append_values_to_memory function.
buffer | the buffer of values to writte to the memory |
size | the size of the buffer of values to writte |
Definition at line 786 of file high_speed_logger_direct_memory.c.
References append_values_to_memory().
Referenced by run_memory_management().
void send_buffer_to_uart | ( | void | ) |
Function sending the read values from the memory to te UART.
This function will send the buffer of values read back to the UART and will launch an other blokc to be read if needed.
Definition at line 738 of file high_speed_logger_direct_memory.c.
References continue_reading_memory, fd, spi_transaction::input_length, MEMORY_READ_LATTENCY, memory_transaction, ml_read_log_in_memory(), relaunch_reading_memory, sending_buffer_to_uart, uart_check_free_space(), uart_put_byte(), and uart_read_buff.
Referenced by high_speed_logger_direct_memory_periodic(), and memory_read_values_cb().
uint8_t start_new_log | ( | void | ) |
Function starting a new log.
This function will start a new log by erasing he memory if configured (ERASE_MEMORY_AT_START) and then will send the starting tags and the name of the messages.
This function is none blokcing, it need to be called multiples times to complete it's work. It will return 0 when the work have been done.
Add the size of the values sended (in Bytes : SIZE_OF_LOGGED_VALUES).
Add a space to writte the total size of that log (for the progress bar in the downloading application)
Definition at line 961 of file high_speed_logger_direct_memory.c.
References add_array_to_buffer(), add_byte_to_buffer(), current_unerased_addr, current_writting_addr, ERASE_MEMORY_AT_START, ml_erase_completely_memory(), name_of_the_values, NBR_VALUES_TO_LOG, SIZE_OF_LOGGED_VALUES, SIZE_OF_VALUES_NAMES, start_log_sequence, and start_values_sequence.
Referenced by high_speed_logger_direct_memory_periodic().
uint8_t buff[25] |
Buffer used for general comunication over SPI (in buffer)
Definition at line 130 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_id(), memory_read_status_1(), memory_read_status_cb(), rtcm3_process(), and ubx_process().
uint8_t buffer_used = 0 |
Flag defining wich buffer is used.
Definition at line 148 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), and run_memory_management().
uint8_t buffer_values_logged[256] |
First local buffer for the log.
Definition at line 140 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), and run_memory_management().
uint8_t buffer_values_sending[256] |
Second local buffer for the log.
Definition at line 144 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), and run_memory_management().
uint8_t continue_reading_memory = 0 |
Flag defining if we need to keep reading the memory (if the PC asked for new values)
Definition at line 160 of file high_speed_logger_direct_memory.c.
Referenced by high_speed_logger_direct_memory_periodic(), and send_buffer_to_uart().
uint32_t current_reading_addr = 0x00000000 |
The address at wich we will read next time.
Definition at line 169 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_values_cb(), and ml_read_log_in_memory().
uint32_t current_unerased_addr = 0x00000000 |
The address of the next block to erase.
Definition at line 167 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory(), and start_new_log().
uint32_t current_writting_addr = 0x00000000 |
The address at wich we will write next time.
Definition at line 165 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory(), and start_new_log().
uint8_t logging_status_gui |
Status of the module.
Definition at line 181 of file high_speed_logger_direct_memory.c.
Referenced by append_values_to_memory(), high_speed_logger_direct_memory_handler(), and high_speed_logger_direct_memory_periodic().
|
static |
Flag stating if the memory is being used.
Definition at line 171 of file high_speed_logger_direct_memory.c.
Referenced by high_speed_logger_direct_memory_periodic(), memory_completly_erase(), memory_erase_4k(), memory_read_id(), memory_read_status_1(), memory_read_status_cb(), memory_read_values(), memory_read_values_cb(), memory_send_wrdi(), memory_send_wren(), memory_transaction_done_cb(), and memory_write_values().
struct spi_transaction memory_send_value_transaction |
Structure used for sending values to the memory.
Definition at line 175 of file high_speed_logger_direct_memory.c.
Referenced by high_speed_logger_direct_memory_init(), and memory_write_values().
uint8_t memory_status_byte |
Last status Byte read from the memory.
Definition at line 154 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_status_cb(), ml_erase_4k_on_memory(), ml_erase_completely_memory(), and ml_write_values_to_memory().
struct spi_transaction memory_transaction |
Structure used for general comunication with the memory.
Definition at line 173 of file high_speed_logger_direct_memory.c.
Referenced by high_speed_logger_direct_memory_init(), memory_completly_erase(), memory_erase_4k(), memory_read_id(), memory_read_status_1(), memory_read_values(), memory_read_values_cb(), memory_send_wrdi(), memory_send_wren(), and send_buffer_to_uart().
uint8_t msg[10] |
Buffer used for general comunication over SPI (out buffer)
Definition at line 134 of file high_speed_logger_direct_memory.c.
Referenced by dmaTransfertTimeout(), intermcu_parse_msg(), jevois_mavlink_event(), mavlink_event(), memory_completly_erase(), memory_erase_4k(), memory_read_id(), memory_read_status_1(), memory_read_values(), memory_send_wrdi(), memory_send_wren(), object_tracking_run(), and wind_estimator_periodic().
char** name_of_the_values |
list of the names of the messages you are logging
Definition at line 86 of file high_speed_logger_direct_memory.c.
Referenced by start_new_log().
uint32_t nbr_lost_values = 0 |
Number of Bytes we have lost due to overflows (reseted each time we can write agin in the buffer)
Definition at line 177 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), and run_memory_management().
uint8_t nbr_values_in_buffer = 0 |
Number of Bytes in the first buffer (buffer_values_logged)
Definition at line 142 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), are_buffers_empty(), and run_memory_management().
uint8_t nbr_values_in_buffer_sending = 0 |
Number of Bytes in the second buffer (nbr_values_in_buffer_sending)
Definition at line 146 of file high_speed_logger_direct_memory.c.
Referenced by add_byte_to_buffer(), are_buffers_empty(), and run_memory_management().
uint8_t relaunch_reading_memory = 0 |
Flag defining if we need to keep reading the memory (if the stop sequence is found we stop)
Definition at line 158 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_values_cb(), and send_buffer_to_uart().
uint8_t sending_buffer_to_uart = 0 |
Flag defining if we are sending values through the UART.
Definition at line 156 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_values_cb(), and send_buffer_to_uart().
uint8_t start_log_sequence[6] = {0xAA, 0x55, 0xFF, 0x00, 0x55, 0xAA} |
Start sequence written at the begining of a log.
Definition at line 116 of file high_speed_logger_direct_memory.c.
Referenced by start_new_log().
uint8_t start_lost_values_sequence[6] = {0x42, 0x0F, 0X42, 0X00, 0XFF, 0xAA} |
Start sequence indicating we have lost some Bytes due to overflows.
Definition at line 120 of file high_speed_logger_direct_memory.c.
Referenced by run_memory_management().
uint8_t start_values_sequence[3] = {0xF0, 0xF0, 0xA5} |
Start sequence written at the begining of the values of a log (after the header)
Definition at line 118 of file high_speed_logger_direct_memory.c.
Referenced by start_new_log().
uint8_t stop_log_sequence[6] = {0xFF, 0x00, 0x55, 0xAA, 0x00, 0xFF} |
Stop sequence written at the end of the log.
Definition at line 126 of file high_speed_logger_direct_memory.c.
Referenced by end_log(), and memory_read_values_cb().
uint8_t stop_lost_values_sequence[6] = {0xAA, 0xFF, 0x00, 0x42, 0x0F, 0x42} |
Stop sequence indicating we have lost some Bytes due to overflows.
Definition at line 122 of file high_speed_logger_direct_memory.c.
Referenced by run_memory_management().
uint8_t uart_read_buff[READING_BLOCK_SIZE+MEMORY_READ_LATTENCY] = {0} |
Buffer used to fetch the values from the memory.
Definition at line 132 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_values(), memory_read_values_cb(), and send_buffer_to_uart().
uint8_t values_send_buffer[256] |
Buffer used for sending value to the memory.
Definition at line 136 of file high_speed_logger_direct_memory.c.
Referenced by memory_write_values().
uint32_t values_to_log[NBR_VALUES_TO_LOG] |
list of the messages you want to log
Definition at line 64 of file high_speed_logger_direct_memory.c.
Referenced by add_values_to_buffer().
uint8_t wait_answear_from_reading_memory = 0 |
Flag defining if we are waiting for an answear from the memory when reading values from it.
Definition at line 152 of file high_speed_logger_direct_memory.c.
Referenced by memory_read_status_cb(), ml_erase_4k_on_memory(), ml_erase_completely_memory(), and ml_write_values_to_memory().